plugins/autonomous-dev/skills/api-design/SKILL.md
REST API design best practices covering versioning, error handling, pagination, and OpenAPI documentation. Use when designing or implementing REST APIs or HTTP endpoints. TRIGGER when: API design, REST endpoint, HTTP route, OpenAPI, swagger, pagination. DO NOT TRIGGER when: internal library code, CLI tools, non-HTTP interfaces.
npx skillsauth add akaszubski/autonomous-dev api-designInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
REST API design best practices, HTTP conventions, versioning, error handling, and documentation standards.
RESTful resource design using nouns (not verbs), proper HTTP methods, and hierarchical URL structure.
Key Principles:
/users, /posts (not /getUsers, /createPost)/users/123/posts for related resourcesSee: docs/rest-principles.md for detailed examples and patterns
Proper status code usage for success (2xx), client errors (4xx), and server errors (5xx).
Common Codes:
See: docs/http-status-codes.md for complete reference and examples
RFC 7807 Problem Details format for consistent, structured error responses.
Standard Format:
{
"type": "https://example.com/errors/validation-error",
"title": "Validation Error",
"status": 422,
"detail": "Email address is invalid",
"instance": "/users",
"errors": {
"email": ["Must be a valid email address"]
}
}
See: docs/error-handling.md for implementation patterns and best practices
JSON structure conventions for request bodies and response payloads.
Best Practices:
snake_case for JSON keysSee: docs/request-response-format.md for detailed examples
Offset-based and cursor-based pagination strategies for large datasets.
Offset-Based (simple, good for small datasets):
GET /users?page=2&limit=20
Cursor-Based (scalable, handles real-time updates):
GET /users?cursor=abc123&limit=20
See: docs/pagination.md for implementation details and trade-offs
URL path versioning (recommended) and header-based versioning strategies.
URL Path Versioning:
/v1/users
/v2/users
When to Version:
See: docs/versioning.md for migration strategies and deprecation policies
API key and JWT authentication patterns for securing endpoints.
API Key (simple, good for service-to-service):
Authorization: Bearer sk_live_abc123...
JWT (stateless, good for user authentication):
Authorization: Bearer eyJhbGc...
See: docs/authentication.md for implementation patterns
Rate limit headers and strategies to prevent abuse.
Standard Headers:
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1640995200
See: docs/rate-limiting.md for implementation strategies
CORS configuration, filtering, sorting, and search patterns.
Topics:
See: docs/advanced-features.md for detailed patterns
OpenAPI/Swagger documentation for API discoverability.
Auto-Generated (FastAPI):
@app.get("/users/{user_id}", response_model=User)
def get_user(user_id: int):
"""Get user by ID"""
return db.get_user(user_id)
See: docs/documentation.md for OpenAPI specifications
Idempotency, content negotiation, HATEOAS, bulk operations, and webhooks.
Topics:
See: docs/idempotency-content-negotiation.md and docs/patterns-checklist.md
| Pattern | Use Case | Details |
|---------|----------|---------|
| REST Principles | Resource-based URLs | docs/rest-principles.md |
| Status Codes | HTTP response codes | docs/http-status-codes.md |
| Error Handling | RFC 7807 errors | docs/error-handling.md |
| Pagination | Large datasets | docs/pagination.md |
| Versioning | Breaking changes | docs/versioning.md |
| Authentication | API security | docs/authentication.md |
| Rate Limiting | Abuse prevention | docs/rate-limiting.md |
| Documentation | OpenAPI/Swagger | docs/documentation.md |
Before Launch:
See: docs/patterns-checklist.md for complete checklist
This skill uses progressive disclosure to prevent context bloat:
docs/*.md files with implementation details (loaded on-demand)Available Documentation:
docs/rest-principles.md - RESTful design patternsdocs/http-status-codes.md - Complete status code referencedocs/error-handling.md - Error response patternsdocs/request-response-format.md - JSON structure conventionsdocs/pagination.md - Pagination strategiesdocs/versioning.md - API versioning patternsdocs/authentication.md - Authentication methodsdocs/rate-limiting.md - Rate limiting implementationdocs/advanced-features.md - CORS, filtering, sortingdocs/documentation.md - OpenAPI/Swaggerdocs/idempotency-content-negotiation.md - Advanced patternsdocs/patterns-checklist.md - Design checklist and common patternsRelated Skills:
Related Libraries:
/users, not /getUsers/v1/users)FORBIDDEN:
/v1/)REQUIRED:
{error, message, code})development
One topic, one home. Routes content to its canonical store (CLAUDE.md, PROJECT.md, MEMORY.md, docs/, memory/) and audits for duplication. TRIGGER when: auditing CLAUDE.md/PROJECT.md/MEMORY.md sizes, deduplicating docs, applying the content-allocation pattern to a new repo, running /align --content. DO NOT TRIGGER when: implementing features, writing tests, routine code edits, debugging.
development
GenAI-first testing with structural assertions, congruence validation, and tier-based test structure. Use when writing tests, setting up test infrastructure, or validating coverage. TRIGGER when: test, pytest, coverage, TDD, test patterns, congruence, validation. DO NOT TRIGGER when: production code implementation, documentation, config-only changes.
testing
Prompt engineering patterns for writing agent prompts and skill files — constraint budgets, register shifting, HARD GATE patterns, anti-personas. Use when writing or reviewing agents/*.md or skills/*/SKILL.md. TRIGGER when: agent prompt, skill file, prompt engineering, model-tier compensation, HARD GATE, prompt quality. DO NOT TRIGGER when: user-facing docs, README, CHANGELOG, config files.
testing
7-step planning workflow for pre-implementation design. Enforced by plan_gate hook, critiqued by plan-critic agent. Use when creating plans, design documents, or architecture decisions before implementation. TRIGGER when: plan, planning, /plan, design document, architecture decision. DO NOT TRIGGER when: implementation, coding, testing.