Context
Project {{project_name}} uses stack {{stack}}. You will create an API endpoint for the resource "{{input.name}}".
Read AGENTS.md for conventions that apply to this project. Read existing route files to understand the patterns used.
Instructions
Analyze existing patterns
- Read existing route files in the project
- Identify patterns: router setup, middleware usage, error handling, response format
- Follow conventions defined in AGENTS.md
Create route file
- Path: according to project convention (usually
src/routes/{{input.name}}.ts) - Implement {{input.method}} endpoints
- If CRUD: GET (list), GET/:id (detail), POST (create), PUT/:id (update), DELETE/:id (delete)
- Path: according to project convention (usually
Create validation schema
- Path: according to convention (e.g.
src/validators/{{input.name}}.ts) - Use the validation library already used in the project (Zod, Joi, etc.)
- Validate all input fields
- Path: according to convention (e.g.
Create service/controller (if the project uses this pattern)
- Business logic separate from route handler
- Database operations via existing ORM/query builder
Register route
- Add to router registry / main app file
- Ensure path and middleware are correct
Create tests
- Path: according to convention (e.g.
tests/{{input.name}}.test.ts) - Test cases:
- Happy path for each endpoint
- Validation errors (invalid input)
- Not found (for endpoints with :id)
- Auth/permission errors (if auth middleware exists)
- Path: according to convention (e.g.
Script
#!/bin/bash
# Detect project structure
if [ -d "src/routes" ]; then
echo "Route directory: src/routes/"
elif [ -d "src/api" ]; then
echo "Route directory: src/api/"
elif [ -d "routes" ]; then
echo "Route directory: routes/"
fi
# Detect validation library
if grep -q "zod" package.json 2>/dev/null; then
echo "Validation: Zod"
elif grep -q "joi" package.json 2>/dev/null; then
echo "Validation: Joi"
elif grep -q "class-validator" package.json 2>/dev/null; then
echo "Validation: class-validator"
fi
Validation
- Route file created and follows existing pattern
- Validation schema complete for all input fields
- Route registered in main app/router
- Tests created and passing
- Typecheck passing
- Lint passing
- Response format consistent with existing endpoints