Resources
1Install
npx skillscat add busirocket/agents-skills/busirocket-nextjs Install via the SkillsCat registry.
About this skill
This skill provides patterns for creating thin, maintainable route handlers in Next.js App Router, enforcing separation of concerns by keeping handlers focused on input validation and response formatting while delegating business logic to service functions. It standardizes JSON response shapes and HTTP status codes, and clarifies server versus client component boundaries. Use it when building or refactoring API endpoints in Next.js App Router projects.
SKILL.md
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.mdEach rule file contains:
- Brief explanation of why it matters
- Code examples (correct and incorrect patterns)
- Additional context and best practices