Skill: Create API Handler
SkillDev toolsCreate a new API handler following the handler pattern. Use when the user asks to create an endpoint, handler, or route.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Skill: Create API Handler skill
What this skill tells your AI
The instructions your AI receives, as published by girijashankarj/cursor-handbook in .cursor/skills/backend/create-handler/SKILL.md and read by ahel’s review.
Step-by-step workflow for creating a new API handler following the {{CONFIG.patterns.handlerFlowSteps}}-step handler pattern.
Scripts (Cursor skills scripts/ support)
This skill includes a scripts/ folder. The agent can run these scripts as part of the workflow:
- scripts/scaffold-handler-dirs.sh — Creates the handler directory structure. Usage:
./scripts/scaffold-handler-dirs.sh <entity> <operation>(e.g.order create).
Trigger
When the user asks to create a new API endpoint, handler, or route.
Prerequisites
- Project configuration loaded (
{{CONFIG.paths.handlerBasePath}}exists) - Understanding of the entity and operation
Steps
Step 1: Gather Requirements
- Identify the entity (e.g., Order, Product, User)
- Identify the operation (e.g., create, read, update, list, delete)
- Determine HTTP method and URL path
- Identify request parameters and body schema
- Identify response format
Step 2: Create Directory Structure
mkdir -p {{CONFIG.paths.handlerBasePath}}/{entity}/{operation}/logic
mkdir -p {{CONFIG.paths.handlerBasePath}}/{entity}/{operation}/schemas
Expected structure:
{{CONFIG.paths.handlerBasePath}}/{entity}/{operation}/
├── {{CONFIG.fileNames.handlerEntry}}
├── logic/
│ ├── validate-request.ts
│ ├── validate-business.ts
│ ├── pre-processing.ts
│ ├── operation.ts
│ ├── post-operation.ts
│ └── response.ts
└── schemas/
├── {{CONFIG.fileNames.requestSchema}}
└── {{CONFIG.fileNames.responseSchema}}
Step 3: Create Request Schema
- Define JSON Schema in
schemas/{{CONFIG.fileNames.requestSchema}} - Include all required and optional fields
- Add type validation and constraints
- Add description for each field
Step 4: Create Response Schema
- Define JSON Schema in
schemas/{{CONFIG.fileNames.responseSchema}} - Follow response envelope pattern:
{ data, meta } - Include all response fields with types
Step 5: Implement Logic Steps
For each file in logic/:
-
validate-request.ts— Validate request against schema -
validate-business.ts— Check business rules and entity state -
pre-processing.ts— Transform and enrich data -
operation.ts— Execute core business logic -
post-operation.ts— Trigger side effects (events, notifications) -
response.ts— Format response with envelope
Step 6: Create Handler Entry Point
- Import all logic steps
- Wire up the {{CONFIG.patterns.handlerFlowSteps}}-step flow
- Add error handling with try/catch
- Add structured logging with correlationId
- Export handler function
Step 7: Register Route
- Add route in the appropriate router file
- Apply authentication middleware
- Apply rate limiting if needed
Step 8: Add Tests
- Create test file:
{entity}/{operation}/__tests__/handler.test.ts - Test each logic step independently
- Test handler integration (success path)
- Test error cases (validation, business, not found)
- Verify {{CONFIG.testing.coverageMinimum}}% coverage
Step 9: Validate
- Run type check:
{{CONFIG.testing.typeCheckCommand}} - Run tests for the new handler only
- Verify schemas match implementation
Completion
Handler is created, tested, and type-checked. Ready for code review.
If a step fails
- Step 2 (directory): Ensure
{{CONFIG.paths.handlerBasePath}}exists. Runmkdir -pfrom project root. - Step 3–4 (schemas): If schema validation fails, check JSON Schema syntax. Use a minimal schema first.
- Step 5 (logic): If imports fail, verify paths match
{{CONFIG.paths.commonPath}}and handler structure. - Step 8 (tests): If tests fail, run
{{CONFIG.testing.typeCheckCommand}}first. Fix type errors before test logic. - Step 9 (validate): If type-check fails, fix reported errors before proceeding. Do not skip validation.
Signals
- GitHub stars
- 30
- Forks
- 3
- Last commit
- Aug 2026
Advanced
- Catalog kind
- skill
- Gateway key
create-handler- Source
- github.com/girijashankarj/cursor-handbook