<< All versions
Skill v1.0.1
currentAutomated scan100/100onewave-ai/claude-skills/api-endpoint-scaffolder
1 files
──Details
PublishedAugust 18, 2026 at 05:54 PM
Content Hashsha256:8f6cee6caf52cf90...
Git SHA82859c0ebaff
Bump Typepatch
──Files
Files (1 file, 2.5 KB)
SKILL.md2.5 KBactive
SKILL.md · 106 lines · 2.5 KB
version: "1.0.1" name: api-endpoint-scaffolder description: Generate REST API endpoints with proper structure, validation, error handling, and types. Use when creating new API routes, endpoints, or backend services.
API Endpoint Scaffolder
Instructions
When creating a new API endpoint:
- Identify the framework (Express, Next.js, FastAPI, etc.)
- Determine HTTP method (GET, POST, PUT, PATCH, DELETE)
- Define request/response types
- Implement with best practices
Templates
Next.js App Router (TypeScript)
typescript
// app/api/[resource]/route.tsimport { 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);// Implementationreturn 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);// Implementationreturn 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)
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);// Implementationres.status(201).json({ success: true, data });} catch (error) {next(error);}});export default router;
Best Practices
- Always validate input using Zod, Yup, or similar
- Use proper HTTP status codes:
- 200: Success
- 201: Created
- 400: Bad Request
- 401: Unauthorized
- 403: Forbidden
- 404: Not Found
- 500: Server Error
- Log errors but don't expose internals to clients
- Use consistent response format
- Add rate limiting for public endpoints
- Document with OpenAPI/Swagger when possible