Next.js Route Handlers
busirocket-nextjs
Patterns for thin, maintainable route handlers in Next.js App Router.
SKILL.md
Full skill instructions
Next.js Route Handlers
Patterns for thin, maintainable route handlers in Next.js App Router.
When to Use
Use this skill when:
- Creating or refactoring
app/api/**/route.tsfiles - Implementing API endpoints
- Validating request inputs
- Returning standardized JSON responses
- Deciding server vs client component boundaries
Non-Negotiables (MUST)
- Route handlers must be thin: validate input, call a
services/function, return a response. - No business logic or IO directly in the handler.
- Never return unvalidated request input.
- Use standard JSON response shapes:
{ data }for success,{ error: { code, message } }for errors. - Use appropriate HTTP status codes (200, 201, 204, 400, 401, 403, 404, 409, 500).
Server vs Client Components
app/**/page.tsxandapp/**/layout.tsxare Server Components by default.- Use Client Components only when you need: state/event handlers, effects, browser-only APIs.
'use client'creates a boundary; keep client islands small.- Props from Server -> Client must be serializable.
Rules
Next.js App Router
nextjs-server-vs-client- Server vs Client Components (defaults, when to use client)nextjs-serializable-props- Props must be serializable from Server to Clientnextjs-protecting-server-code- Protecting server-only code from client importsnextjs-special-file-exports- Allowed extra exports for Next.js special files
Route Handlers
nextjs-route-placement- Route handler placement and conflicts with pagesnextjs-thin-handler-rule- Thin handler rule (STRICT)nextjs-http-methods- Supported HTTP methodsnextjs-caching-model- Caching model for route handlersnextjs-cache-components- Cache Components note for route handlers
API Response Shapes
nextjs-response-shapes- Standard JSON response shapes (success/error)nextjs-status-codes- HTTP status codes to usenextjs-response-rules- Rules for API responses (validation, error handling)
Validation
nextjs-validation-boundaries- Where validation lives (route handlers, services, utils)nextjs-validation-patterns- Validation patterns (unknown inputs, guards)nextjs-validation-helpers- Recommended validation helpersnextjs-validation-rules- Validation rules (no inline types/helpers)
Related Skills
busirocket-react- Component patterns and Server/Client boundariesbusirocket-validation- Validation strategies (Zod schemas, guard helpers)busirocket-core-conventions- File structure and boundaries
How to Use
Read individual rule files for detailed explanations and code examples:
rules/nextjs-thin-handler-rule.md
rules/nextjs-response-shapes.md
rules/nextjs-validation-boundaries.md
Each rule file contains:
- Brief explanation of why it matters
- Code examples (correct and incorrect patterns)
- Additional context and best practices
