api-design
/api-design
Projektuje czyste i spójne API oraz recenzuje ich projekt: endpointy REST, schemat GraphQL, kontrakt API i działanie endpointów.
- Autor
- qa-aman ↗
- Repozytorium
- claude-skills ↗
- Licencja
- MIT
- Ostatnia zmiana repozytorium
- 19.10.2026
Ocena i bezpieczeństwo
- Pliki w paczce
- 1
- Skrypty
- 0
- Komentarze HTML
- 0
- Adresy URL w SKILL.md
- 0
Brak sygnałów. Repozytorium zmienione 19.10.2026, bez odwołań do wycofanych modeli i API.
MIT, otwarta: można używać i zmieniać, z zachowaniem informacji o autorze.
Co robi i kiedy
Projektuje czyste i spójne API oraz recenzuje ich projekt: endpointy REST, schemat GraphQL, kontrakt API i działanie endpointów.
Wyzwalacze z opisu
Oryginalny opis (EN)
Design clean and consistent APIs. Use when the user says "design an API", "API design review", "design these endpoints", "REST API for X", "GraphQL schema", "API contract", "how should this endpoint work", "review my API design", or wants to create or improve an API interface - even if they don't explicitly say "API design".
Jak działa
- Overview
- Workflow
- Anti-Patterns
- Quality Checklist
Podgląd SKILL.md
---
name: api-design
description: >
Design clean and consistent APIs. Use when the user says "design an API",
"API design review", "design these endpoints", "REST API for X", "GraphQL schema",
"API contract", "how should this endpoint work", "review my API design",
or wants to create or improve an API interface
- even if they don't explicitly say "API design".
---
## Overview
Based on **"A Philosophy of Software Design"** by John Ousterhout. Ousterhout's key principle: modules should be deep - simple interface, powerful implementation. Applied to APIs: the surface area exposed to callers should be as small as possible, while the behavior provided should be as rich as possible. A leaky abstraction (where callers need to understand implementation details) is a design failure.
## Workflow
### Step 1: Define the API's job
Before designing any endpoint, state what the API enables:
- What is the caller trying to accomplish?
- What information does the caller have?
- What should the API hide from the caller?
Ousterhout: if callers need to know how the API works internally to use it correctly, the API is leaky.
### Step 2: Design resources (REST) or schema (GraphQL)
**REST:**
- Resources are nouns, not verbs: `/users`, `/orders` not `/getUsers`, `/createOrder`
- Use HTTP verbs for actions: GET (read), POST (create), PUT (replace), PATCH (update), DELETE (remove)
- Nest for ownership: `/users/{id}/orders` (orders owned by a user)
- Don't nest beyond 2 levels deep
**GraphQL:**
- Types model your domain, not your database schema
- Queries fetch data, mutations change it, subscriptions stream it
- Design the schema from the client's perspective: what does the UI need?
### Step 3: Design request and response contracts
For each endpoint:
```
Endpoint: [METHOD] /path/{param}
Purpose: [one sentence]
Auth: [required scope or token type]
Request:
Path params: [required identifiers]
Query params: [optional filters, pagination]
Body: [JSON schema with required/optional fields]
Response (200):
[JSON schema]
Errors:
400 - [validation failure - which fields, why]
401 - [unauthenticated]
403 - [unauthorized - caller lacks permission]
404 - [resource not found]
409 - [conflict - e.g. duplicate]
422 - [unprocessable entity - valid syntax, invalid semantics]
500 - [internal error]
```
### Step 4: Apply consistency rules
Pick conventions and apply them everywhere:
- Naming: snake_case or camelCase for fields (pick one)
- Dates: ISO 8601 (`2026-03-03T14:30:00Z`)
- IDs: UUID or integer (pick one, apply everywhere)
- Pagination: cursor-based or page/limit (pick one)
- Errors: consistent error response shape `{ error: { code, message, details } }`
Inconsistency is the top complaint from API consumers.
### Step 5: Design for the caller's mental model
Ousterhout's information hiding principle: don't expose implementation artifacts.
- Don't expose database table names or internal IDs in API paths
- Don't return internal error codes that callers can't act on
- Don't require callers to make multiple requests for data they logically need together
### Step 6: Version the API
Every public API needs a versioning strategy before it ships:
- URL versioning: `/v1/users` (most common, most visible)
- Header versioning: `API-Version: 2026-01-01`
- Pick a strategy before v1 ships - changing it later breaks all callers
## Anti-Patterns
**1. Verbs in resource paths**
Bad: `POST /createUser`, `GET /getUserById`
Good: `POST /users`, `GET /users/{id}`
**2. Inconsistent error shapes**
Bad: Some endpoints return `{ error: "message" }`, others return `{ message: "error" }`.
Good: One error schema, applied everywhere.
**3. Leaking implementation details**
Bad: `/api/db/users_table/row/42`
Good: `/api/users/42`
**4. No versioning plan on day 1**
Bad: Ship v1 with no versioning, then break callers when you need to change the contract.
Good: Version from the first public release. Breaking changes require a new version.
## Quality Checklist
- [ ] Resources are nouns, HTTP verbs are the actions
- [ ] Request and response contracts documented for every endpoint
- [ ] All error codes documented with when each occurs
- [ ] Naming convention consistent across all endpoints (snake_case or camelCase)
- [ ] Dates in ISO 8601, IDs consistent type throughout
- [ ] No implementation details exposed to callers
- [ ] Versioning strategy defined before first public release
- [ ] Pagination strategy defined and consistent
Wersje
| Repozytorium | Wynik | Licencja |
|---|---|---|
| Ta strona · qa-aman/claude-skills | 100 | MIT |
| proyecto26/system-design-skills | 100 | MIT |
| ericrisco/rsc-harness | 100 | MIT |
| Sanit-mann/The-Insectoids | 100 | MIT |
| yonatangross/orchestkit | 100 | MIT |
| travisjneuman/.claude | 100 | MIT |
| wrongstack/wrongstack | 100 | MIT |
| jelvodev/yaap | 100 | MIT |
| komluk/scaffolding | 100 | MIT |
Migawka bazy z 13.11.2026 · wersja paczki 213af976653d (skrót SHA-256 całej paczki)
Pobrania w ostatnich 30 dniach: 0 · ranking
Zgłoś problem z tym skillem: szkodliwa treść, błędny opis albo prośba autora o usunięcie.
Podobne skille
- 100create-api-design
Projektuje API REST lub GraphQL na podstawie specyfikacji funkcji: endpointy, kontrakt API i zasoby. - 100design-api
Projektuje API REST i GraphQL: nazewnictwo, wersjonowanie, kształt błędów i uwierzytelnianie. - 100api-and-interface-design
Wskazuje, jak projektować stabilne API, granice modułów i publiczne interfejsy: endpointy REST i GraphQL, kontrakty typów oraz podział frontend i backend. - 100designing-apis
Projektuje API REST i GraphQL, w tym endpointy, obsługę błędów, wersjonowanie i dokumentację, oraz ocenia kontrakty API. - 95api-and-interface-design
Projektuje stabilne API i interfejsy: granice modułów, kontrakty typów oraz endpointy REST lub GraphQL między frontendem a backendem. - 100api-and-interface-design
Prowadzi projektowanie stabilnego API i interfejsów: granice modułów, kontrakty typów, endpointy REST lub GraphQL.