/api-design
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:
$ npx -y skills add akaszubski/autonomous-dev --skill api-design --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/api-design
Context preview
The summary Claude sees to decide when to auto-load this skill.
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:
SKILL.md
api-design.SKILL.mdname: api-design
description: "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."
allowed-tools: [Read]
API Design Skill
REST API design best practices, HTTP conventions, versioning, error handling, and documentation standards.
When This Skill Activates
- Designing REST APIs
- Creating HTTP endpoints
- Writing API documentation
- Handling API errors
- Implementing pagination
- API versioning strategies
- Keywords: "api", "rest", "endpoint", "http", "json", "openapi"
---
Core Concepts
1. REST Principles
RESTful resource design using nouns (not verbs), proper HTTP methods, and hierarchical URL structure.
**Key Principles**:
- Resources are nouns: `/users`, `/posts` (not `/getUsers`, `/createPost`)
- Use HTTP methods correctly: GET (read), POST (create), PUT (replace), PATCH (update), DELETE (remove)
- Hierarchical relationships: `/users/123/posts` for related resources
- Keep URLs shallow (max 3 levels)
**See**: `docs/rest-principles.md` for detailed examples and patterns
---
2. HTTP Status Codes
Proper status code usage for success (2xx), client errors (4xx), and server errors (5xx).
**Common Codes**:
- **200 OK**: Successful GET/PUT/PATCH
- **201 Created**: Successful POST (includes Location header)
- **204 No Content**: Successful DELETE
- **400 Bad Request**: Invalid input
- **401 Unauthorized**: Authentication required
- **403 Forbidden**: Authenticated but not allowed
- **404 Not Found**: Resource doesn't exist
- **422 Unprocessable**: Validation error
- **429 Too Many Requests**: Rate limit exceeded
- **500 Internal Server Error**: Server failure
**See**: `docs/http-status-codes.md` for complete reference and examples
---
3. Error Handling
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
---
4. Request/Response Format
JSON structure conventions for request bodies and response payloads.
**Best Practices**:
- Use `snake_case` for JSON keys
- Include metadata in responses (timestamps, IDs)
- Consistent field naming across endpoints
- Clear data types and structures
**See**: `docs/request-response-format.md` for detailed examples
---
5. Pagination
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
---
6. API Versioning
URL path versioning (recommended) and header-based versioning strategies.
**URL Path Versioning**:
/v1/users
/v2/users
**When to Version**:
- Breaking changes (removing fields, changing behavior)
- New required fields
- Changed data types
**See**: `docs/versioning.md` for migration strategies and deprecation policies
---
7. Authentication & Authorization
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
---
8. Rate Limiting
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
---
9. Advanced Features
CORS configuration, filtering, sorting, and search patterns.
**Topics**:
- CORS headers for browser-based clients
- Query parameter filtering
- Multi-field sorting
- Full-text search
**See**: `docs/advanced-features.md` for detailed patterns
---
10. Documentation
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
---
11. Design Patterns
Idempotency, content negotiation, HATEOAS, bulk operations, and webhooks.
**Topics**:
- Idempotency keys for safe retries
- Content negotiation (JSON, XML, etc.)
- HATEOAS for discoverable APIs
- Bulk operations for batch processing
- Webhooks for event notifications
**See**: `docs/idempotency-content-negotiation.md` and `docs/patterns-checklist.md`
---
Quick Reference
| 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` |
---
API Design Checklist
**Before Launch**:
- [ ] Use RESTful resource naming (nouns, not verbs)
- [ ] Implement proper HTTP status codes
- [ ] Add RFC 7807 error responses
- [ ] Include pagination for collections
- [ ] Add API versioning strategy
- [ ] Implement authent
Read more
name: api-design description: "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." allowed-tools: [Read]
API Design Skill
REST API design best practices, HTTP conventions, versioning, error handling, and documentation standards.
When This Skill Activates
- Designing REST APIs
- Creating HTTP endpoints
- Writing API documentation
- Handling API errors
- Implementing pagination
- API versioning strategies
- Keywords: "api", "rest", "endpoint", "http", "json", "openapi"
---
Core Concepts
1. REST Principles
RESTful resource design using nouns (not verbs), proper HTTP methods, and hierarchical URL structure.
**Key Principles**:
- Resources are nouns: `/users`, `/posts` (not `/getUsers`, `/createPost`)
- Use HTTP methods correctly: GET (read), POST (create), PUT (replace), PATCH (update), DELETE (remove)
- Hierarchical relationships: `/users/123/posts` for related resources
- Keep URLs shallow (max 3 levels)
**See**: `docs/rest-principles.md` for detailed examples and patterns
---
2. HTTP Status Codes
Proper status code usage for success (2xx), client errors (4xx), and server errors (5xx).
**Common Codes**:
- **200 OK**: Successful GET/PUT/PATCH
- **201 Created**: Successful POST (includes Location header)
- **204 No Content**: Successful DELETE
- **400 Bad Request**: Invalid input
- **401 Unauthorized**: Authentication required
- **403 Forbidden**: Authenticated but not allowed
- **404 Not Found**: Resource doesn't exist
- **422 Unprocessable**: Validation error
- **429 Too Many Requests**: Rate limit exceeded
- **500 Internal Server Error**: Server failure
**See**: `docs/http-status-codes.md` for complete reference and examples
---
3. Error Handling
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
---
4. Request/Response Format
JSON structure conventions for request bodies and response payloads.
**Best Practices**:
- Use `snake_case` for JSON keys
- Include metadata in responses (timestamps, IDs)
- Consistent field naming across endpoints
- Clear data types and structures
**See**: `docs/request-response-format.md` for detailed examples
---
5. Pagination
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
---
6. API Versioning
URL path versioning (recommended) and header-based versioning strategies.
**URL Path Versioning**:
/v1/users /v2/users
**When to Version**:
- Breaking changes (removing fields, changing behavior)
- New required fields
- Changed data types
**See**: `docs/versioning.md` for migration strategies and deprecation policies
---
7. Authentication & Authorization
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
---
8. Rate Limiting
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
---
9. Advanced Features
CORS configuration, filtering, sorting, and search patterns.
**Topics**:
- CORS headers for browser-based clients
- Query parameter filtering
- Multi-field sorting
- Full-text search
**See**: `docs/advanced-features.md` for detailed patterns
---
10. Documentation
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
---
11. Design Patterns
Idempotency, content negotiation, HATEOAS, bulk operations, and webhooks.
**Topics**:
- Idempotency keys for safe retries
- Content negotiation (JSON, XML, etc.)
- HATEOAS for discoverable APIs
- Bulk operations for batch processing
- Webhooks for event notifications
**See**: `docs/idempotency-content-negotiation.md` and `docs/patterns-checklist.md`
---
Quick Reference
| 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` |
---
API Design Checklist
**Before Launch**:
- [ ] Use RESTful resource naming (nouns, not verbs)
- [ ] Implement proper HTTP status codes
- [ ] Add RFC 7807 error responses
- [ ] Include pagination for collections
- [ ] Add API versioning strategy
- [ ] Implement authent
Showing the first part of this file.
A harness that wraps Claude Code with enforcement, specialist agents, and alignment gates to deliver consistent, production-grade software engineering outcomes.
Repo: akaszubski/autonomous-dev
Other skills on autonomous-dev.
- /api-integration-patterns
Subprocess safety, GitHub CLI integration, retry logic, authentication, rate limiting, and timeout handling. Use when integrating external APIs or CLI tools. TRIGGER when: subprocess, gh cli, API call, retry logic, rate limiting, authentication. DO NOT TRIGGER when: internal
Open skill - /architecture-patterns
File-by-file architecture planning with ADR format, dependency ordering, and testability gates. Use when designing system architecture or creating ADRs. TRIGGER when: architecture plan, system design, ADR, file breakdown, component design. DO NOT TRIGGER when: simple config
Open skill - /code-review
10-point code review checklist covering correctness, tests, error handling, type hints, naming, security, and performance. Use when reviewing PRs or evaluating code quality. TRIGGER when: code review, PR review, review checklist, code quality check. DO NOT TRIGGER when: writing
Open skill - /content-allocation
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,
Open skill - /debugging-workflow
Systematic debugging methodology — reproduce, isolate, bisect, fix, verify. Use when diagnosing failures, tracing errors, or investigating unexpected behavior. TRIGGER when: debug, error, traceback, stack trace, bisect, breakpoint, failing test, unexpected behavior. DO NOT
Open skill - /documentation-guide
Documentation standards enforcing Keep a Changelog format, README structure, ADR templates, and Google-style docstrings. Use when writing CHANGELOG entries, updating READMEs, or documenting APIs. TRIGGER when: changelog, readme, documentation, docstring, ADR, API docs. DO NOT
Open skill

