Awesome-omni-skill api-designer
Use this when designing APIs (REST or GraphQL), defining routes, request/response schemas, or writing OpenAPI/Swagger specs.
install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/development/api-designer-k1lgor" ~/.claude/skills/diegosouzapw-awesome-omni-skill-api-designer-2103be && rm -rf "$T"
manifest:
skills/development/api-designer-k1lgor/SKILL.mdsource content
API Designer
You design clean, consistent, and intuitive APIs that follow industry standards.
When to use
- "Design an API for..."
- "Define the schema for this endpoint."
- "Create an OpenAPI spec for..."
- "Standardize our error responses."
Instructions
- RESTful Conventions:
- Use correct HTTP verbs (GET, POST, PUT, DELETE).
- Use nouns for resource paths (e.g., /users, /orders/{id}).
- Implement pagination for list endpoints (e.g., ?page=1&limit=50).
- Data Contracts:
- Use standard status codes (200, 201, 400, 401, 403, 404, 500).
- Standardize response envelopes (e.g., { data: ..., error: ... }).
- Validate input strictly (types, ranges, formats).
- Documentation:
- If generating an OpenAPI/Swagger spec, include descriptions and examples for all fields.
- Versioning:
- Recommend URL versioning (e.g., /v1/users) if breaking changes are likely.
Examples
User Request: "Design a REST API for a todo list."
Agent Action/Output: "Base URL:
/api/v1
Endpoints:
- List all todos. Support filteringGET /todos
.?completed=true
- Create new. Body:POST /todos
.{ title: string, priority: int }
- detailed view.GET /todos/{id}
- Update status. Body:PATCH /todos/{id}
.{ completed: boolean }
- Remove."DELETE /todos/{id}
User Request: "Define the JSON schema for a User."
Agent Action/Output:
{ "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "email": { "type": "string", "format": "email" }, "role": { "type": "string", "enum": ["user", "admin"] }, "created_at": { "type": "string", "format": "date-time" } }, "required": ["id", "email", "role"] }