Enforce API design standards when creating, modifying, or reviewing REST APIs. Use this skill whenever the user works on endpoints, controllers, routes, DTOs, request/response types, API versioning, error responses, pagination, middleware, guards, interceptors, or any HTTP API surface. Covers NestJS, ASP.NET Core, and FastAPI patterns. Also applies when discussing API contracts, OpenAPI specs, versioning strategy, deprecation, or REST conventions — even if the user doesn't explicitly mention 'API standards'.
When this skill activates, you MUST detect the project's tech stack and read the appropriate API design standard document before writing or reviewing any API code. Do not summarize the standards from memory — always read the actual file.
Examine the project to determine which stack is in use:
Look for ANY of these signals:
turbo.json or pnpm-workspace.yaml at the repo rootpackages/ directory with shared @forge/* or similar scoped packagesapps/ directories each with their own package.json@nestjs/core in dependencies) combined with Next.js frontendLook for these signals WITHOUT monorepo indicators:
package.json at the root (no workspace config)@nestjs/core or next in dependenciesturbo.json, no pnpm-workspace.yaml, no packages/ directory*.csproj or *.sln files presentProgram.cs, Startup.cs, or appsettings.jsonASP.NET Core or Microsoft.AspNetCore referencespyproject.toml, setup.py, or requirements.txtFastAPI, Django, or Flask in dependenciesmain.py or app.py with router/endpoint definitionsBased on the detected stack, FETCH the corresponding standard document using the WebFetch tool. Do not skip this step. Do not paraphrase from memory.
| Stack | Standard Document (URL) |
|---|---|
| TypeScript Monorepo | https://raw.githubusercontent.com/dannypenrose/engineering-standards/main/typescript/api-design-monorepo.md |
| TypeScript Standalone | https://raw.githubusercontent.com/dannypenrose/engineering-standards/main/typescript/api-design-nextjs-nestjs.md |
| .NET | https://raw.githubusercontent.com/dannypenrose/engineering-standards/main/dotnet/api-design.md |
| Python | https://raw.githubusercontent.com/dannypenrose/engineering-standards/main/python/api-design.md |
If the stack cannot be determined, ask the user which standard applies.
If the task involves API versioning (version prefixes, deprecation, migration, breaking changes, or the user mentions versioning), also READ:
https://raw.githubusercontent.com/dannypenrose/engineering-standards/main/development/api-versioning.mdIf the task involves caching (Cache-Control headers, ETag, conditional requests, CDN caching, API response caching, or stale-while-revalidate), also READ:
https://raw.githubusercontent.com/dannypenrose/engineering-standards/main/development/caching-strategy.mdWith the standard document loaded, apply it naturally during API development. Do NOT lecture the user about standards or list rules unprompted. Instead: