Skip to main content

api-design

Contract-first API design for stable, evolvable interfaces. Use whenever defining a new API endpoint, inter-service boundary, or modifying an existing contract. Includes backward compatibility checklist and error contract specification.

Informations de source

Dépôt
bdfinst/agentic-dev-team
Dernière activité de la source
2 juin 2026 à 12:58
Langue détectée de SKILL.md
anglais
Étoiles
299
Forks
36

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
api-design
description
Contract-first API design for stable, evolvable interfaces. Use whenever defining a new API endpoint, inter-service boundary, or modifying an existing contract. Includes backward compatibility checklist and error contract specification.
role
worker
user-invocable
true
# API Design ## Overview Contract-first API design patterns for defining stable, evolvable interfaces between system components. Protocol-agnostic — applies to REST, gRPC, GraphQL, message-based, or any other interface style. ## Constraints - Define the contract before implementing it; implementation conforms to the contract - Every endpoint must have an error contract; unspecified failure modes are not acceptable - Never remove a field or endpoint without a deprecation period and migration path - Do not expose internal domain models directly through API boundaries ## Core Concepts ### Contract-First Design Define the interface before implementing it. The contract is the source of truth; implementation conforms to the contract, not the other way around. Contracts are versioned artifacts. ### Resource Modeling - **Entities** — individual resources with identity (e.g., `/orders/{id}`) - **Collections** — groups of entities with filtering, pagination, sorting - **Relationships** — links between resources expressed through references or embedding - **Operations** — actions on resources (CRUD and domain-specific operations) ### Versioning Strategies | Strategy | Mechanism | Trade-offs | | --- | --- | --- | | URL path | `/v1/resources`, `/v2/resources` | Simple routing, but proliferates endpoints | | Header | `Accept: application/vnd.api.v2+json` | Clean URLs, but harder to test and discover | | Content negotiation | Media type with version parameter | Standards-compliant, but adds client complexity | Choose one strategy per API boundary and apply it consistently. URL path versioning is the simplest default. ### Error Contracts Every API defines structured error responses: | Field | Purpose | | --- | --- | | Error code | Machine-readable identifier (stable across versions) | | Message | Human-readable description | | Correlation ID | Trace identifier linking request to logs | | Details | Optional structured context (field-level validation errors, etc.) | Error contracts are part of the API contract — not an afterthought. ## Patterns ### API Design Procedure 1. **Identify consumers** — who calls this API, what do they need, what are their constraints 2. **Define resources** — model the domain entities and relationships exposed through the interface 3. **Specify operations** — define actions on each resource with request/response shapes 4. **Define error cases** — enumerate failure modes with error codes and response structures 5. **Document constraints** — rate limits, pagination defaults, size limits, authentication requirements 6. **Choose version strategy** — select and document the versioning approach ### Backward Compatibility Checklist | Change Type | Impact | Action | | --- | --- | --- | | Add optional field | Safe (additive) | No version bump needed | | Add new endpoint | Safe (additive) | No version bump needed | | Remove field | **Breaking** | Deprecate first, remove in next major version | | Change field type | **Breaking** | New version required | | Change endpoint URL | **Breaking** | Redirect old URL, new version | | Tighten validation | **Breaking** | New version required | | Loosen validation | Safe (relaxing) | No version bump, document change | ### Contract Validation Before implementation begins, verify the API contract against: - [ ] BDD scenarios cover all operations and error cases - [ ] Acceptance criteria include non-functional requirements (latency, throughput) - [ ] Consumer needs are met without exposing internal implementation details - [ ] Error codes are unique and documented - [ ] Versioning strategy is declared and consistent ## When to Apply | Scenario | Apply? | Depth | | --- | --- | --- | | New external or public API | Yes | Full procedure | | New inter-service boundary | Yes | Full procedure | | Internal module boundary | Partially | Resource modeling and error contracts | | Private helper functions | No | — | | Modifying existing API contract | Yes | Backward compatibility checklist | ## Guidelines 1. **Design for consumers, not implementations.** The API shape reflects what callers need, not how the backend is structured. 2. **Every endpoint has an error contract.** Callers must know what failures look like before they write integration code. 3. **Deprecation before removal.** Never remove a field or endpoint without a deprecation period and migration path. 4. **Contracts are versioned artifacts.** Treat API contracts with the same rigor as source code — reviewed, versioned, and tested. 5. **Avoid leaking internal models.** Domain entities exposed through an API may need a separate representation (DTO/view model) to prevent tight coupling. 6. **Pagination is not optional for collections.** Unbounded collection responses are a reliability risk. ## Output API contract document covering resources, operations, error cases, versioning strategy, and the backward compatibility checklist results. Be concise — use tables; skip narrative prose. ## Integration - **Agent-Assisted Specification** — API contracts emerge during the Architecture Specification stage; validate them as part of the consistency gate - **Hexagonal Architecture** — API contracts define the ports; adapters implement the protocol-specific translation - **Domain-Driven Design** — API boundaries often align with bounded context interfaces; use context maps to identify integration points
Voir sur GitHub