solidstart-api-routes
SolidStart API routes: export GET/POST/PATCH/DELETE functions, handle APIEvent with request/params/fetch, GraphQL and tRPC integration, session management.
Best use case
solidstart-api-routes is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
SolidStart API routes: export GET/POST/PATCH/DELETE functions, handle APIEvent with request/params/fetch, GraphQL and tRPC integration, session management.
Teams using solidstart-api-routes should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/solidstart-api-routes-vallafederico/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How solidstart-api-routes Compares
| Feature / Agent | solidstart-api-routes | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
SolidStart API routes: export GET/POST/PATCH/DELETE functions, handle APIEvent with request/params/fetch, GraphQL and tRPC integration, session management.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# SolidStart API Routes
API routes export HTTP method functions instead of components. API routes take priority over UI routes.
## Basic API Routes
```tsx
// routes/api/users.ts
import type { APIEvent } from "@solidjs/start/server";
export async function GET({ request, params, fetch }: APIEvent) {
const users = await db.getUsers();
return { users };
}
export async function POST({ request }: APIEvent) {
const body = await request.json();
const user = await db.createUser(body);
return new Response(JSON.stringify(user), {
status: 201,
headers: { "Content-Type": "application/json" }
});
}
export async function PATCH({ request }: APIEvent) {
// Handle PATCH
}
export async function DELETE({ request }: APIEvent) {
// Handle DELETE
}
```
## APIEvent Object
`APIEvent` contains:
- `request`: Request object
- `params`: Dynamic route parameters
- `fetch`: Internal fetch for same-origin requests
```tsx
// routes/api/users/[id].ts
export async function GET({ params }: APIEvent) {
const user = await db.getUser(params.id);
if (!user) {
return new Response("Not Found", { status: 404 });
}
return { user };
}
export async function DELETE({ params }: APIEvent) {
await db.deleteUser(params.id);
return new Response(null, { status: 204 });
}
```
## Session Management
```tsx
import { getCookie } from "vinxi/http";
export async function GET(event: APIEvent) {
const userId = getCookie("userId");
if (!userId) {
return new Response("Unauthorized", { status: 401 });
}
const user = await db.getUser(userId);
return { user };
}
```
## Multiple Methods Handler
```tsx
// routes/api/handler.ts
async function handler(event: APIEvent) {
const method = event.request.method;
if (method === "GET") {
return { data: "get" };
} else if (method === "POST") {
const body = await event.request.json();
return { data: "post", body };
}
}
export const GET = handler;
export const POST = handler;
```
## GraphQL API
```tsx
// routes/graphql.ts
import { buildSchema, graphql } from "graphql";
import type { APIEvent } from "@solidjs/start/server";
const schema = buildSchema(`
type Query {
hello: String
}
`);
const rootValue = {
hello: () => "Hello World"
};
const handler = async (event: APIEvent) => {
const body = await event.request.json();
const result = await graphql({
schema,
source: body.query,
rootValue
});
return result;
};
export const GET = handler;
export const POST = handler;
```
## tRPC API
```tsx
// routes/api/trpc/[trpc].ts
import type { APIEvent } from "@solidjs/start/server";
import { fetchRequestHandler } from "@trpc/server/adapters/fetch";
import { appRouter } from "~/lib/router";
const handler = (event: APIEvent) =>
fetchRequestHandler({
endpoint: "/api/trpc",
req: event.request,
router: appRouter,
createContext: () => ({})
});
export const GET = handler;
export const POST = handler;
```
## Best Practices
1. API routes for external APIs (GraphQL, tRPC, webhooks, public REST APIs)
2. Return proper status codes (200, 201, 404, 401, etc.)
3. Use `fetch` from APIEvent for internal requests (same-origin)
4. Handle errors with proper error responses
5. Use sessions for authentication in API routesRelated Skills
solidstart-websocket
SolidStart WebSocket: experimental WebSocket endpoints, connection handling, message events, real-time communication, bidirectional data flow.
solidstart-optimistic-ui
SolidStart optimistic UI: use useSubmissions to show pending data immediately, combine server data with pending submissions, filter by pending state, handle rollback on errors.
solidstart-middleware-auth
SolidStart middleware, sessions, authentication: createMiddleware with onRequest/onBeforeResponse, useSession for cookies, protected routes, WebSocket endpoints.
solidstart-data-mutation
SolidStart data mutation: form submissions with actions, validation, error handling, pending states, optimistic UI, redirects, database operations, programmatic triggers.
solidstart-advanced-server
SolidStart advanced server: getRequestEvent for request context, static assets handling, returning responses, request events and nativeEvent access.
api-routes
Generate secure TanStack Start API routes with authentication, rate limiting, validation, and proper error handling. Use when creating API endpoints, REST resources, or backend logic.
bgo
Automates the complete Blender build-go workflow, from building and packaging your extension/add-on to removing old versions, installing, enabling, and launching Blender for quick testing and iteration.
ssh-server-admin
Securely connect to and manage remote Linux/Unix servers via SSH. Execute commands, transfer files (SCP/SFTP), set up port forwarding and tunnels. Use when the user asks to SSH into a server, connect to a remote machine, run remote commands, upload/download files to servers, set up tunnels, or perform server administration tasks. Works on Windows, macOS, and Linux.
sqlmodel-task-models
This skill should be used when defining a robust, type-safe, and async-compatible database schema for the Todo application using SQLModel, ensuring compatibility with Better Auth and optimized for PostgreSQL.
sql-server-dba-dev-expert
Use when designing, implementing, optimizing, or troubleshooting AF.ECT.Database schemas, queries, stored procedures, performance tuning, data integrity, or operational database tasks while following Microsoft best practices
sql-pro
Master modern SQL with cloud-native databases, OLTP/OLAP optimization, and advanced query techniques. Expert in performance tuning, data modeling, and hybrid analytical systems. Use PROACTIVELY for database optimization or complex analysis.
sql
Guide for working with SQL queries, in particular for SQLite. Use this skill when writing SQL queries, analyzing database schemas, designing migrations, or working with SQLite-related code.