Przejdź do treści
Biblioteka skilli
Programowanie · Planowanie

api-design

/api-design

Pomaga przy zmianie kontraktu API: nowego endpointu, sposobu zwracania błędów i stron, pól do dodania lub usunięcia oraz wersji.

Licencja
MIT
Ostatnia zmiana repozytorium
13.11.2026

Ocena i bezpieczeństwo

100/ 100Klasa: dobry
Format25 / 25
Frontmatter z nazwą i opisem, poprawna nazwa, opis do 1024 znaków, nazwa zgodna z folderem.
Odkrywalność25 / 25
Opis mówi, kiedy użyć skilla, ma sensowną długość i jest w 3. osobie.
Treść35 / 35
Co najmniej 150 słów i do 500 linii, nagłówki, listy kroków, przykłady albo kod.
Higiena15 / 15
Bez zaślepek typu TODO, bez ścieżek Windows, z licencją.
Ryzykobrak sygnałów w skanie
Pliki w paczce
2
Skrypty
0
Komentarze HTML
1
Adresy URL w SKILL.md
0
Przestarzałość

Brak sygnałów. Repozytorium zmienione 13.11.2026, bez odwołań do wycofanych modeli i API.

Licencja

MIT, otwarta: można używać i zmieniać, z zachowaniem informacji o autorze.

Co sprawdzić przed instalacją
  • SKILL.md zawiera komentarze HTML (1). Nie widać ich w podglądzie Markdown, a model je czyta.

Co robi i kiedy

Pomaga przy zmianie kontraktu API: nowego endpointu, sposobu zwracania błędów i stron, pól do dodania lub usunięcia oraz wersji.

Oryginalny opis (EN)

Use when an API contract is designed or changed: a new endpoint or resource, how its errors and pages are returned, a field to add or remove, or a version to cut without breaking a consumer.

Jak działa

  1. Checklist
  2. How
  3. Breaking vs additive
  4. Invariant rules
Sekcje z nagłówków SKILL.md, w oryginale · 50 linii, 522 słów
Podgląd SKILL.md
---
name: api-design
description: |
  Use when an API contract is designed or changed: a new endpoint or resource, how its errors and pages
  are returned, a field to add or remove, or a version to cut without breaking a consumer.
---

# API Design

<!-- routing-eval reads the next line; why it sits in the body: AGENT_TEMPLATE.md -->
Trigger phrases: "api design", "api contract", "api versioning", "openapi", "swagger", "rest contract", "breaking api change", "response shape", "response format", "endpoint returns", "error format"

Goal: a contract the consumer can **predict** and that can **evolve** without breaking. Once published, a
public API is a commitment; a breaking change is expensive. Stack-agnostic (REST as the baseline; GraphQL/gRPC follow similar principles).

## Checklist
- [ ] Resource names are **consistent** (plural nouns, a single `kebab`/`camel` style), resources not verbs
- [ ] Correct HTTP semantics: GET (side-effect free) · POST · PUT/PATCH · DELETE; correct **status code**
- [ ] A uniform **error model**: machine-readable code + human message + (if any) field details
- [ ] A clear **versioning** strategy (URL `/v1` or header); a breaking change means a new version
- [ ] **Pagination/filtering/sorting** defined and consistent on large collections
- [ ] **Backward compatibility**: adding a field is additive; removing a field or changing its meaning is breaking → version
- [ ] **Idempotency** (for POST/payment-like cases) supported via a key when needed: the key, its atomic claim and
  the answers to a replay are in **`references/idempotency.md`**
- [ ] The contract is documented in **OpenAPI**; example request/response present (coordinate with `docs-writer`)

## How
1. **Model the resource** — a noun not a verb: `POST /orders` (✓), `POST /createOrder` (✗).
2. **Status codes**: 200/201/204 · 400 validation · 401/403 authorization · 404 · 409 conflict · 422 · 429 · 5xx. Use them meaningfully.
3. **Error contract** — every error has the same shape:
   ```json
   { "code": "ORDER_NOT_FOUND", "message": "Order not found", "details": [] }
   ```
   No stack trace / internal detail leakage (overlaps with `security-scan`).
4. **Versioning**: additive changes in the same version; breaking (remove/rename a field / add a required field) → `/v2`.
5. **Collection**: pagination (cursor or offset), filter/sort parameters; a consistent envelope.
6. **Write the contract** — OpenAPI/schema; with examples. Wire the change to `docs-writer`, and if breaking to `release`/CHANGELOG.

## Breaking vs additive
| Additive (safe) | Breaking (needs a version) |
|---|---|
| Add an optional field/endpoint | Remove / rename a field |
| A new optional parameter | Add a required parameter |
| A new enum value (if the consumer is tolerant) | Change a type/meaning, change a status code |

**Observable behaviour is the contract,** not only the documented fields: someone depends on the error text, the
order of a list, the default page size and how long a call takes. Changing one of those is breaking for them; say
it in the changelog like a field change.

## Invariant rules
1. **A public API is a commitment** — a breaking change is not made silently; version + announcement.
2. **Consistency > local cleverness** — a single naming/error/pagination pattern across the whole API.
3. **The error model is uniform and machine-readable.**
4. **No internal detail leakage** — a stack trace / DB error does not go to the consumer.
5. **The contract is documented** — OpenAPI + example; at design time, not after the code.
Pliki w paczce (2)
  • SKILL.md 4 KB
  • references/idempotency.md 2 KB

Wersje

RepozytoriumWynikLicencja
Ta strona · byerlikaya/claude-starter-kit100MIT
proyecto26/system-design-skills100MIT
ericrisco/rsc-harness100MIT
Sanit-mann/The-Insectoids100MIT
yonatangross/orchestkit100MIT
travisjneuman/.claude100MIT
wrongstack/wrongstack100MIT
jelvodev/yaap100MIT
komluk/scaffolding100MIT

Migawka bazy z 13.11.2026 · wersja paczki 15f0f41d5915 (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

  • 100api-contract-versioning
    Pomaga przy zmianach endpointu, schematu lub kontraktu API używanego gdzie indziej: zmiany pól, paginacji, wersjonowanie, zmiany łamiące i deprecjacja pól lub tras w REST, GraphQL i gRPC.
  • 96add-endpoint
    Dodaje endpoint HTTP lub nowy zasób do API w Quarkus, z magazynem danych, obsługą błędów i testami.
  • 96add-endpoint
    Dodaje endpoint HTTP lub nowy zasób do API w Spring Boot, z magazynem danych, obsługą błędów i testami.
  • 100quick-api
    Tworzy szkielet nowego endpointu API: typy, test, handler, walidację, trasę i dokumentację.
  • 100api-design-standards
    Wprowadza dyscyplinę projektowania API opartą na wytycznych REST Microsoft i Google: konwencje zasobów i URL, strategia wersjonowania, zmiany zgodne wstecz i łamiące oraz testy kontraktów sterowane konsumentem.
  • 100nacl-tl-sync
    Weryfikuje synchronizację backendu i frontendu dla zadania UC w NaCl względem kontraktu API, wspólnych typów, użycia endpointów, błędów i usunięcia mocków.

Uwagi i zgłoszenia

Wiadomość trafi do Bartosza Sokolińskiego. Adres e-mail jest potrzebny tylko do odpowiedzi. Szczegóły w polityce prywatności.