
Api Endpoint Scaffolder
- 226 installs
- 237 repo stars
- Updated July 15, 2026
- onewave-ai/claude-skills
Generate REST or HTTP endpoint stubs with routes, handlers, validation, and response shapes aligned to your API conventions.
About
Scaffolds API endpoints with routes, handlers, validation, and response contracts following project conventions so backend features ship faster with consistent structure across services.
- Route and handler stubs
- Request validation
- Response schemas
- Auth middleware hooks
- Convention-aware layout
Api Endpoint Scaffolder by the numbers
- 226 all-time installs (skills.sh)
- +4 installs in the week ending Aug 4, 2026 (Skillselion tracking)
- Ranked #1,757 of 4,347 Backend & APIs skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/onewave-ai/claude-skills --skill api-endpoint-scaffolderAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 226 |
|---|---|
| repo stars | ★ 237 |
| Last updated | July 15, 2026 |
| Repository | onewave-ai/claude-skills ↗ |
What it does
Generate REST or HTTP endpoint stubs with routes, handlers, validation, and response shapes aligned to your API conventions.
Files
API Endpoint Scaffolder
Instructions
When creating a new API endpoint:
1. Identify the framework (Express, Next.js, FastAPI, etc.) 2. Determine HTTP method (GET, POST, PUT, PATCH, DELETE) 3. Define request/response types 4. Implement with best practices
Templates
Next.js App Router (TypeScript)
// app/api/[resource]/route.ts
import { NextRequest, NextResponse } from 'next/server';
import { z } from 'zod';
const RequestSchema = z.object({
// Define your schema
});
export async function GET(request: NextRequest) {
try {
const { searchParams } = new URL(request.url);
// Implementation
return NextResponse.json({ data }, { status: 200 });
} catch (error) {
console.error('[API] Error:', error);
return NextResponse.json(
{ error: 'Internal server error' },
{ status: 500 }
);
}
}
export async function POST(request: NextRequest) {
try {
const body = await request.json();
const validated = RequestSchema.parse(body);
// Implementation
return NextResponse.json({ data }, { status: 201 });
} catch (error) {
if (error instanceof z.ZodError) {
return NextResponse.json(
{ error: 'Validation failed', details: error.errors },
{ status: 400 }
);
}
return NextResponse.json(
{ error: 'Internal server error' },
{ status: 500 }
);
}
}Express (TypeScript)
import { Router, Request, Response, NextFunction } from 'express';
import { z } from 'zod';
const router = Router();
const CreateSchema = z.object({
// Define schema
});
router.post('/', async (req: Request, res: Response, next: NextFunction) => {
try {
const data = CreateSchema.parse(req.body);
// Implementation
res.status(201).json({ success: true, data });
} catch (error) {
next(error);
}
});
export default router;Best Practices
1. Always validate input using Zod, Yup, or similar 2. Use proper HTTP status codes:
- 200: Success
- 201: Created
- 400: Bad Request
- 401: Unauthorized
- 403: Forbidden
- 404: Not Found
- 500: Server Error
3. Log errors but don't expose internals to clients 4. Use consistent response format 5. Add rate limiting for public endpoints 6. Document with OpenAPI/Swagger when possible