api-designer
REST and GraphQL API architect for designing robust, scalable APIs. Use when designing new APIs or improving existing ones.
Best use case
api-designer is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
REST and GraphQL API architect for designing robust, scalable APIs. Use when designing new APIs or improving existing ones.
Teams using api-designer should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/api-designer-zhaono1/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How api-designer Compares
| Feature / Agent | api-designer | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
REST and GraphQL API architect for designing robust, scalable APIs. Use when designing new APIs or improving existing ones.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# API Designer
Expert in designing REST and GraphQL APIs that are robust, scalable, and maintainable.
## When This Skill Activates
Activates when you:
- Design a new API
- Review API design
- Improve existing API
- Create API specifications
## REST API Design Principles
### 1. Resource-Oriented Design
**Good:**
```
GET /users # List users
POST /users # Create user
GET /users/{id} # Get specific user
PATCH /users/{id} # Update user
DELETE /users/{id} # Delete user
```
**Avoid:**
```
POST /getUsers # Should be GET
POST /users/create # Redundant
GET /users/get/{id} # Redundant
```
### 2. HTTP Methods
| Method | Safe | Idempotent | Purpose |
|--------|------|------------|---------|
| GET | ✓ | ✓ | Read resource |
| POST | ✗ | ✗ | Create resource |
| PUT | ✗ | ✓ | Replace resource |
| PATCH | ✗ | ✗ | Update resource |
| DELETE | ✗ | ✓ | Delete resource |
### 3. Status Codes
| Code | Meaning | Usage |
|------|---------|-------|
| 200 | OK | Successful GET, PATCH, DELETE |
| 201 | Created | Successful POST |
| 204 | No Content | Successful DELETE with no body |
| 400 | Bad Request | Invalid input |
| 401 | Unauthorized | Missing or invalid auth |
| 403 | Forbidden | Authenticated but not authorized |
| 404 | Not Found | Resource doesn't exist |
| 409 | Conflict | Resource already exists |
| 422 | Unprocessable | Valid syntax but semantic errors |
| 429 | Too Many Requests | Rate limit exceeded |
| 500 | Internal Server Error | Server error |
### 4. Naming Conventions
- **URLs**: kebab-case (`/user-preferences`)
- **JSON**: camelCase (`{"userId": "123"}`)
- **Query params**: snake_case or camelCase (`?page_size=10`)
### 5. Pagination
```http
GET /users?page=1&page_size=20
Response:
{
"data": [...],
"pagination": {
"page": 1,
"page_size": 20,
"total": 100,
"total_pages": 5
}
}
```
### 6. Filtering and Sorting
```http
GET /users?status=active&sort=-created_at,name
# -created_at = descending
# name = ascending
```
## GraphQL API Design
### Schema Design
```graphql
type Query {
user(id: ID!): User
users(limit: Int, offset: Int): UserConnection!
}
type Mutation {
createUser(input: CreateUserInput!): CreateUserPayload!
updateUser(id: ID!, input: UpdateUserInput!): UpdateUserPayload!
}
type User {
id: ID!
email: String!
profile: Profile
posts(first: Int, after: String): PostConnection!
}
type UserConnection {
edges: [UserEdge!]!
pageInfo: PageInfo!
}
type UserEdge {
node: User!
cursor: String!
}
type PageInfo {
hasNextPage: Boolean!
hasPreviousPage: Boolean!
startCursor: String
endCursor: String
}
```
### Best Practices
- **Nullability**: Default to non-null, nullable only when appropriate
- **Connections**: Use cursor-based pagination for lists
- **Payloads**: Use mutation payloads for consistent error handling
- **Descriptions**: Document all types and fields
## API Versioning
### Approaches
**URL Versioning** (Recommended):
```
/api/v1/users
/api/v2/users
```
**Header Versioning**:
```
GET /users
Accept: application/vnd.myapi.v2+json
```
### Versioning Guidelines
- Start with v1
- Maintain backwards compatibility when possible
- Deprecate old versions with notice
- Document breaking changes
## Authentication & Authorization
### Authentication Methods
1. **JWT Bearer Token**
```http
Authorization: Bearer <token>
```
2. **API Key**
```http
X-API-Key: <key>
```
3. **OAuth 2.0**
```http
Authorization: Bearer <access_token>
```
### Authorization
- Use roles/permissions
- Document required permissions per endpoint
- Return 403 for authorization failures
## Rate Limiting
```http
HTTP/1.1 200 OK
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1631234567
```
**Recommended limits:**
- Public APIs: 100-1000 requests/hour
- Authenticated APIs: 1000-10000 requests/hour
- Webhooks: 10-100 requests/minute
## Documentation Requirements
- All endpoints documented
- Request/response examples
- Authentication requirements
- Error response formats
- Rate limits
- SDK examples (if available)
## Scripts
Generate API scaffold:
```bash
python scripts/generate_api.py <resource-name>
```
Validate API design:
```bash
python scripts/validate_api.py openapi.yaml
```
## References
- `references/rest-patterns.md` - REST design patterns
- `references/graphql-patterns.md` - GraphQL design patterns
- [REST API Tutorial](https://restfulapi.net/)
- [GraphQL Best Practices](https://graphql.org/learn/best-practices/)Related Skills
action-mapping-designer
This skill should be used when ensuring training focuses on performance outcomes and business impact. Use this skill to identify essential content, design performance-focused activities, create job aids, and eliminate unnecessary training.
ui-ux-designer
Create interface designs, wireframes, and design systems. Masters user research, accessibility standards, and modern design tools.
ui-designer
Generate and serve live HTML/CSS/JS UI designs from natural language prompts. Use when the user asks to design, create, build, or prototype a website, landing page, UI, dashboard, web page, or frontend mockup. Also triggers on requests to update, tweak, or iterate on a previously generated design. Replaces traditional UI design + frontend dev workflow.
resonance-designer
The Creative Director. Uses the "Visual Engine" and "Topological Betrayal" to generate elite, non-generic design systems.
faion-ui-designer
UI design: wireframes, prototypes, design systems, visual design.
curriculum-designer
Helps teachers and instructional designers create a structured curriculum or teaching plan from a list of topics or a specification document. Use when the user wants to design course materials, lesson plans, or a syllabus.
ascii-ui-designer
Create high-quality ASCII art UI/UX previews for web development with a two-phase approach. Phase 1: Design & Preview - visualize interfaces, explore layouts, refine ideas in ASCII format without code. Phase 2: Implementation - when ready, get HTML/CSS/React code and design tokens. Use for exploring ideas, getting stakeholder feedback, and iterating on design before development.
archetype-designer
Design and manage TraitorSim agent archetypes with OCEAN personality traits, stat biases, and gameplay profiles. Use when creating new archetypes, modifying personality traits, defining character types, or when asked about archetype design, OCEAN traits, Big Five personality, or character templates.
apple-hig-designer
Design iOS apps following Apple's Human Interface Guidelines. Generate native components, validate designs, and ensure accessibility compliance for iPhone, iPad, and Apple Watch.
animation-designer
Expert in web animations, transitions, and motion design using Framer Motion and CSS
algorithm-designer
Design and document statistical algorithms with pseudocode and complexity analysis
ai-npc-dialogue-designer
Design AI-powered immersive NPC systems for escape room games using proven actor techniques from Korean immersive escape rooms (Danpyeonsun, Ledasquare). Implements adaptive dialogue, emotional simulation, player profiling, and trust dynamics using Gemini/GPT-4. Creates character profiles with lying probabilities, improvisational responses, and cost-optimized streaming. Use for murder mystery NPCs, suspect interrogation, or dynamic character interactions.