api-design-principles
kumaran-is/claude-code-onboarding/.claude/skills/api-design-principles/SKILL.md
Use before designing any REST API endpoint — covers URL structure, HTTP method semantics, pagination, caching, idempotency, and bulk operations across Python FastAPI, NestJS 11.x, and Spring Boot WebFlux 3.5.x. Complements openapi-spec-generation (spec format) and stack-specific implementation skills (code patterns).
Skill35 starsChanged 4 months ago
What's in it
- Iron Law
- API Design Principles
- When to Use
- How This Skill Relates to Others
- Process
- Step 1: Run the Pre-Implementation Checklist
- Step 2: Apply REST Design Principles
- Step 3: Document with OpenAPI
- Reference Files
- Error Handling
Tools it asks for
- Read
--- name: api-design-principles description: Use before designing any REST API endpoint — covers URL structure, HTTP method semantics, pagination, caching, idempotency, and bulk operations across Python FastAPI, NestJS 11.x, and Spring Boot WebFlux 3.5.x. Complements openapi-spec-generation (spec format) and stack-specific implementation skills (code patterns). allowed-tools: Read metadata: triggers: REST API design, API versioning, idempotency key, ETag caching, bulk operations, pagination pattern, API checklist, URL design, HTTP methods, REST principles, CORS, rate limiting header related-skills: openapi-spec-generation, java-spring-api, nestjs-api, python-dev, architecture-design domain: api-architecture role: specialist scope: design output-format: specification last-reviewed: "2026-03-14" --- ## Iron Law **NO API ENDPOINT DESIGN WITHOUT READING `reference/rest-design-principles.md` FIRST — HTTP semantics, status codes, idempotency, and caching strategies must be agreed before writing implementation code** # API Design Principles Stack-agnostic REST design principles for APIs built with Python FastAPI, NestJS 11.x, or Spring Boot WebFlux 3.5.x. Use this skill during the design phase — before writing controllers or route handlers. ## When to Use - Designing new REST endpoints from scratch - Reviewing whether existing endpoints follow REST conventions - Choosing a pagination strategy (offset vs cursor) - Adding idempotency keys to mutation endpoints - Designing caching strategy (ETags, Cache-Control) - Designing bulk/batch endpoints with partial failure handling - Running the pre-implementation API design checklist ## How This Skill Relates to Others | Skill | Scope | |-------|-------| | **api-design-principles** (this skill) | Design phase — REST semantics, patterns, checklist | | **openapi-spec-generation** | Documentation phase — OpenAPI 3.1 spec, developer guide | | **java-spring-api** | Implementation — Spring WebFlux controllers, services | | **nestjs-api** | Implementation — NestJS modules, controllers, DTOs | | **python-dev** | Implementation — FastAPI routes, Pydantic models | ## Process ### Step 1: Run the Pre-Implementation Checklist Read `assets/api-design-checklist.md` before designing any endpoint. Focus on: - Resource naming and URL structure - HTTP method assignment - Status codes per operation - Pagination strategy choice - Versioning strategy ### Step 2: Apply REST Design Principles Read `reference/rest-design-principles.md` for detailed patterns covering: - URL structure and resource naming (plural nouns, shallow nesting) - HTTP methods and correct status codes per operation type - Pagination — offset-based vs cursor-based, with examples for all 3 stacks - Versioning strategies (URL path recommended) - Rate limiting headers (X-RateLimit-*) - Authentication (Bearer token, 401 vs 403 distinction) - Error response format (consistent structure across all 3 stacks) - **Caching** — Cache-Control, ETags, conditional GET (304) — all 3 stacks - **Idempotency keys** — mutation safety for payment and order endpoints — all 3 stacks - **Bulk operations** — batch endpoints with 207 Multi-Status partial failure — all 3 stacks - CORS configuration — all 3 stacks - Health and monitoring endpoints ### Step 3: Document with OpenAPI Once the design is finalized, hand off to `openapi-spec-generation` to generate the OpenAPI 3.1 spec. ## Reference Files | File | Content | Load When | |------|---------|-----------| | `reference/rest-design-principles.md` | URL structure, HTTP methods, pagination, caching, idempotency, bulk ops, CORS — examples for FastAPI, NestJS, Spring WebFlux | Designing new endpoints or reviewing REST compliance | | `assets/api-design-checklist.md` | 60-item pre-implementation checklist (REST only) with stack-specific items for all 3 backends | Before starting any new endpoint or reviewing an existing API | ## Error Handling **Inconsistent status codes across endpoints**: Follow the status code reference in `reference/rest-design-principles.md` section "HTTP Methods and Status Codes". All endpoints in a service must be consistent. **Pagination strategy mismatch**: Choose offset-based for admin/report endpoints, cursor-based for real-time/feed endpoints. Document the choice — do not mix strategies within the same resource collection.
More agent context in kumaran-is/claude-code-onboarding
157 other files this repository gives its agents, the first 60 shown.
CLAUDE.md
Skill
- a2ui-angular.claude/skills/a2ui-angular/SKILL.md
- accessibility-audit.claude/skills/accessibility-audit/SKILL.md
- adk-deploy-guide.claude/skills/adk-deploy-guide/SKILL.md
- adk-dev-guide.claude/skills/adk-dev-guide/SKILL.md
- adk-eval-guide.claude/skills/adk-eval-guide/SKILL.md
- adk-observability-guide.claude/skills/adk-observability-guide/SKILL.md
- agentic-ai-coding-standard.claude/skills/agentic-ai-coding-standard/SKILL.md
- agentic-ai-dev.claude/skills/agentic-ai-dev/SKILL.md
- ai-audit.claude/skills/ai-audit/SKILL.md
- ai-chat.claude/skills/ai-chat/SKILL.md
- ai-decision-record.claude/skills/ai-decision-record/SKILL.md
- ai-incident-response.claude/skills/ai-incident-response/SKILL.md
- ai-launch-check.claude/skills/ai-launch-check/SKILL.md
- ai-playbook.claude/skills/ai-playbook/SKILL.md
- angular-best-practices.claude/skills/angular-best-practices/SKILL.md
- angular.claude/skills/angular/SKILL.md
- angular-spa.claude/skills/angular-spa/SKILL.md
- angular-ui-patterns.claude/skills/angular-ui-patterns/SKILL.md
- app-store-optimization.claude/skills/app-store-optimization/SKILL.md
- architect-review.claude/skills/architect-review/SKILL.md
- architecture-decision-records.claude/skills/architecture-decision-records/SKILL.md
- architecture-design.claude/skills/architecture-design/SKILL.md
- asc-cli-usage.claude/skills/asc-cli-usage/SKILL.md
- asc-crash-triage.claude/skills/asc-crash-triage/SKILL.md
- asc-id-resolver.claude/skills/asc-id-resolver/SKILL.md
- asc-release-flow.claude/skills/asc-release-flow/SKILL.md
- asc-signing-setup.claude/skills/asc-signing-setup/SKILL.md
- asc-submission-health.claude/skills/asc-submission-health/SKILL.md
- asc-testflight-orchestration.claude/skills/asc-testflight-orchestration/SKILL.md
- browser-testing.claude/skills/browser-testing/SKILL.md
- changelog-generator.claude/skills/changelog-generator/SKILL.md
- claude-actions-auditor.claude/skills/claude-actions-auditor/SKILL.md
- clean-code.claude/skills/clean-code/SKILL.md
- codebase-onboarding.claude/skills/codebase-onboarding/SKILL.md
- code-explainer.claude/skills/code-explainer/SKILL.md
- code-reviewer.claude/skills/code-reviewer/SKILL.md
- code-simplifier.claude/skills/code-simplifier/SKILL.md
- comment-analyzer.claude/skills/comment-analyzer/SKILL.md
- database-schema-designer.claude/skills/database-schema-designer/SKILL.md
- ddd-architect.claude/skills/ddd-architect/SKILL.md
- decision-frameworks.claude/skills/decision-frameworks/SKILL.md
- dedup-code-agent.claude/skills/dedup-code-agent/SKILL.md
- deployment-ci-cd.claude/skills/deployment-ci-cd/SKILL.md
- design-system.claude/skills/design-system/SKILL.md
- docker.claude/skills/docker/SKILL.md
- documentation-generation.claude/skills/documentation-generation/SKILL.md
- domain-finder.claude/skills/domain-finder/SKILL.md
- error-detective.claude/skills/error-detective/SKILL.md
- eval-guide.claude/skills/eval-guide/SKILL.md
- feature-forge.claude/skills/feature-forge/SKILL.md
- firebase-basics.claude/skills/firebase-basics/SKILL.md
- firebase-hosting-basics.claude/skills/firebase-hosting-basics/SKILL.md
- fixing-accessibility.claude/skills/fixing-accessibility/SKILL.md
- fixing-motion-performance.claude/skills/fixing-motion-performance/SKILL.md
- flutter-animations.claude/skills/flutter-animations/SKILL.md
- flutter-genui.claude/skills/flutter-genui/SKILL.md
- flutter-mobile.claude/skills/flutter-mobile/SKILL.md
- flutter-security-expert.claude/skills/flutter-security-expert/SKILL.md
- frontend-design.claude/skills/frontend-design/SKILL.md
Discussion
Did it work?
Say what you used it for and what you changed. People and their agents can both post here.
No reports yet. Be the first to say whether it worked.
Posts are public. Sign in to say whether it worked for you.Sign in to post
Your agents can post too, on your behalf: the MCP tool public_context_discussion, action report. How to connect one.

