Start server routes
Skill fusengine/agents/plugins/tanstack-start-expert/skills/start-server-routes
Use when building raw HTTP API endpoints in TanStack Start — the server property on createFileRoute, method handlers (GET/POST/PUT/DELETE), the handler context (request, params, context), createHandlers for per-handler middleware, file-route conventions, dynamic/splat params, request body parsing, and Response helpers. Do NOT use for: internal type-safe RPC from your own app (use start-server-functions), reusable middleware chains (use start-middleware), or UI route rendering.From its SKILL.md
npx -y skills add fusengine/agents --skill start-server-routesAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 22 stars22 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
4.4 KB, 944 tokens by cl100k_base, as published. Nobody here has run it
TanStack Start Server Routes
Server routes are raw HTTP endpoints defined alongside app routes in
src/routes/. They use the server property on createFileRoute (imported
from @tanstack/react-router) and return standard Response objects. This skill
targets @tanstack/react-start v1.166.2.
Agent Workflow (MANDATORY)
Before implementing, verify current APIs against Context7
(/websites/tanstack_start_framework_react) + Exa, then explore the target
codebase. After changes, run fuse-ai-pilot:sniper.
Critical Rules (read first)
- Server route vs server function: an endpoint callable from outside your app (webhooks, public REST, cross-origin) → server route. Internal type-safe RPC → server function. See vs-server-functions.md.
- One handler file per route path.
routes/users.ts,routes/users/index.ts, androutes/users.index.tsall resolve to/usersand error if duplicated. - Always
awaitbody methods.request.json(),.text(),.formData()return Promises — un-awaited, you get a Promise, not the data. - Handlers must return
Response(orPromise<Response>). UseResponse.json(...)for JSON, ornew Response(body, { status, headers }). - The same file can be both a UI route and an API route — add
componentalongsideserver.
Overview
| Feature | Description |
|---|---|
| Definition | server: { handlers: { GET, POST, ... } } on createFileRoute |
| Handler context | { request, params, context, pathname, next } |
| Middleware | server.middleware (all handlers) or createHandlers (per handler) |
| Params | Dynamic ($id) and splat ($) from the file name |
Architecture
src/routes/
├── api/
│ ├── hello.ts # /api/hello
│ ├── users/$id.ts # /api/users/$id (dynamic param)
│ └── file/$.ts # /api/file/$ (splat param)
└── webhooks/stripe.ts # /webhooks/stripe (external POST)
→ See rest-endpoint.md
Reference Guide
Concepts
| Topic | Reference | Load when |
|---|---|---|
| Defining routes | defining.md | Handlers, params, body, responses, middleware |
| Routes vs functions | vs-server-functions.md | Deciding between the two mechanisms |
Templates
| Template | When to Use |
|---|---|
| rest-endpoint.md | Full REST resource with params + middleware |
Quick Reference
Basic GET
// src/routes/api/hello.ts
import { createFileRoute } from '@tanstack/react-router'
export const Route = createFileRoute('/api/hello')({
server: {
handlers: {
GET: async ({ request }) => new Response('Hello, World!'),
},
},
})
JSON with dynamic param and status
// src/routes/api/users/$id.ts
export const Route = createFileRoute('/api/users/$id')({
server: {
handlers: {
GET: async ({ params }) => {
const user = await findUser(params.id)
if (!user) return new Response('Not found', { status: 404 })
return Response.json(user)
},
},
},
})
→ See defining.md for middleware and body parsing
Best Practices
DO
- Use server routes for webhooks, public REST, and cross-origin endpoints
- Return
Response.json()for JSON (setsContent-Typeautomatically) awaitevery request body method- Add
authMiddlewareon routes handling private data
DON'T
- Duplicate a route path across multiple files
- Reach for a server route when you want internal type-safe RPC
- Forget to return a
Response
What ships with it: 4 files
9.2 KB alongside SKILL.md
references/
- defining.md3.3 KB
- templates/rest-endpoint.md3.5 KB
- vs-server-functions.md2.5 KB
- .gitkeep0 B