MCPInstall

dev-api-design

Designs durable API contracts across REST, GraphQL, gRPC, tRPC, and AsyncAPI. Use when specifying interfaces, auth, versioning, errors, rate limits, or agent APIs.

Installs
176
Last 24h
—
Trending rank
—
Security
Not audited

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/vasilyu1983/ai-agents-public --skill dev-api-design
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads dev-api-design automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

SKILL.md

The instructions your agent reads when the skill is triggered.

API Design

Use this skill for contract-first API design across REST, GraphQL, gRPC, tRPC, AsyncAPI, and agent-facing interfaces. It owns contract choice, auth boundaries, versioning, errors, pagination, rate limits, idempotency, and validation; it does not replace backend implementation or security review.

Style Decision Table

API styleChoose whenAvoid whenCanonical artifact
REST + OpenAPIPublic APIs, broad tooling compatibility, cacheable resourcesStreaming-first service contractsOpenAPI 3.x
GraphQLComplex client-driven query shapes, multi-team schema ownershipSimple CRUD, caching is critical, single-teamGraphQL SDL
gRPCInternal services, bidirectional streaming, type-critical boundariesPublic internet consumers, browser-native clientsprotobuf
tRPCTypeScript monorepos with shared server+clientNon-TS stacks, public third-party consumersTypeScript types
AsyncAPI + webhooksEvent-driven contracts, pub/sub, push notificationsSynchronous request-replyAsyncAPI 3.x
MCP tool layerAgent or LLM is the primary consumerHuman-only clientsMCP tool schema

Quick Reference

API styleLoad
REST + OpenAPIreferences/restful-design-patterns.md, references/openapi-guide.md
GraphQLreferences/graphql-patterns.md
gRPCreferences/grpc-patterns.md
tRPCreferences/trpc-patterns.md
AsyncAPI and webhooksreferences/asyncapi-patterns.md, references/webhook-patterns.md
Core cross-cuttingreferences/error-handling-patterns.md, references/authentication-patterns.md, references/pagination-filtering.md, references/rate-limiting-patterns.md, references/api-testing-patterns.md

Contract Review Checklist

Run on every API contract before handoff:

  • Canonical spec artifact exists (OpenAPI, AsyncAPI, protobuf, GraphQL SDL, or MCP schema)
  • Compatibility and versioning model named: evolutionary changes, URL path (/v1/), header, or content-type negotiation
  • Deprecation timeline written into the spec or linked doc; Deprecation header uses the RFC 9745 @<unix-seconds> form, Sunset uses RFC 8594
  • Error model: for REST/HTTP, use RFC 9457 Problem Details with stable type URI and an application code extension when clients need one; for GraphQL, gRPC, and events, define errors in their native contract
  • Auth boundary: which endpoints require which scopes; token type (JWT, opaque); revocation path
  • Pagination: cursor-based for high-cardinality; offset only for small, stable sets
  • Rate limits: either the IETF httpapi RateLimit / RateLimit-Policy fields or a documented legacy X-RateLimit-* triad; 429 includes Retry-After. The IETF fields have changed shape between drafts: look up the current revision and RFC status on the IETF datatracker and copy the syntax from that revision, and name the revision in the spec
  • Idempotency: POST/PATCH operations document idempotency key or mark non-idempotent explicitly; whatever the IETF Idempotency-Key header's status (check datatracker), the spec must define key scope, retention, and the reused-key response
  • Long-running jobs: 202 + Location poll URL; state enum with terminal states named
  • Webhooks: HMAC signature; replay protection; trace_id on payload
  • Breaking-change detection: oasdiff or equivalent configured in CI
  • Contract tests: Schemathesis (property-based) or Pact (consumer-driven) wired up

Workflow

  1. Choose the API style using the decision table above.
  2. Define the canonical contract artifact.
  3. Run the contract review checklist.
  4. Add contract validation, breaking-change detection, and documentation.
  5. Hand off spec, examples, and rollout notes.

Compatibility evidence by change class

Classify each change before calling the contract compatible:

Change classRequired evidence
shape changeschema diff plus generated-client compile or consumer contract test
semantic change with stable shapebefore/after examples and a named behavioral assertion
default, ordering, quota, or timeout changeproduction-like consumer test and rollout note
removal or narrowingusage evidence, deprecation window, and rollback or compatibility shim

For provider/consumer deployments, derive the safe order from message direction, changed payload side, and actual consumer tolerance. For a new optional request capability, ship provider support before consumers send it. For response enum/event expansion, or whenever a consumer may reject unknown fields or variants, ship and verify tolerant consumers before the provider emits the new value. For removals, ship consumers first, confirm old-field traffic is gone, then remove the provider behavior. Prove the relevant consumer behavior rather than inferring safety from schema additivity; a green schema diff alone is insufficient evidence for semantic compatibility or deploy order.

Route Elsewhere

  • Backend implementation: software-backend
  • AppSec review and auth hardening: software-security-appsec
  • System-wide architecture: software-architecture-design
  • Rollout and migration sequencing: dev-workflow-planning

Defaults

  • Define the contract before implementation or code generation.
  • Use RFC 9457 Problem Details for REST/HTTP errors that need a response body; define native error shapes for other API styles.
  • Make versioning, deprecation, idempotency, pagination, and rate limits explicit in the spec.
  • Prefer OpenAPI 3.x or AsyncAPI as the canonical source for HTTP or event-driven interfaces; pin the newest minor that every validator, linter, and generator in your pipeline supports.
  • Treat agent APIs as domain contracts with clear side effects, not thin wrappers around random endpoints.
  • Use MCP as the tool-exposure layer when an agent is the primary consumer. Its authorization model builds on OAuth resource-server standards (RFC 9728 Protected Resource Metadata, RFC 8707 Resource Indicators), but session, handshake, and auth requirements change between spec revisions: look up the current revision at modelcontextprotocol.io before designing around sessions or the initialize handshake. See references/llm-agent-api-contracts.md.

Versioning Strategy Table

ApproachWhen to useBreaking-change gate
URL path versioning (/v2/)Public APIs, broad client install baseoasdiff --fail-on ERR in CI
Header versioning (API-Version: 2)Internal APIs, frequent iterationoasdiff on each PR
Content-type negotiationHypermedia or media-type-driven APIsManual review + tests
Evolutionary (GraphQL, gRPC)Teams own schema, introspection tools runGraphQL Inspector / protobuf compatibility

Expert Judgment

Versioning strategy — pick based on who controls the client, not team preference.

  • If you do not control every client (public API, third-party integrators, mobile apps you cannot force-update), publish a version policy and a support window based on observed consumer use and migration lead time; you cannot silently migrate callers.
  • If you control every client (internal service mesh, monorepo with generated clients), prefer evolutionary compatibility (additive fields, deprecate-then-remove) over versioning — a new version number is a coordination tax you don't need to pay.
  • Dated versions can be useful when each account or request pins behavior independently. If requests omit a version, resolve to a documented pinned default rather than silently upgrading callers, and echo the resolved version in a response header.
  • Never let "evolutionary" become an excuse to skip a compatibility gate — GraphQL and gRPC still need CI-enforced schema diffing (GraphQL Inspector, buf breaking); "no versioning" is not "no discipline."

Rule: rules/api/contracts.md loads this invariant when Claude edits a matching file.

Breaking-change detection instincts — what schema-diff tools structurally cannot catch:

The instances below are all applications of Hyrum's Law: with enough consumers of an API, every observable behavior — not just the documented schema — becomes a de facto contract, whether or not you ever promised it. (Same law, applied to schema deploy-sequencing rather than API surface, in software-database-design/references/migration-strategies.md.) That is why a clean schema diff is not proof of compatibility:

  • Semantic changes with no shape change: tightening an existing enum's allowed values, narrowing a previously-permissive validation rule, or changing what a field means while keeping its type — oasdiff/buf breaking will report zero diff.
  • Behavioral defaults: changing a default sort order, default page size, or default timeout is a breaking change for callers who rely on the default, even though the schema is untouched.
  • Cross-field coupling: a field that used to be optional-but-ignored becoming optional-but-enforced (e.g., a previously-cosmetic region field now affecting routing).
  • Rate-limit and quota tightening: not a contract break in the schema sense, but it breaks production traffic identically to a removed field — treat quota changes with the same deprecation-notice discipline as field removal.
  • Error-code reclassification: moving a case from 404 to 410, or from a generic code to a more specific one, breaks clients that pattern-match on the old code even though the Problem Details shape is unchanged.
  • Treat automated diffing (oasdiff, GraphQL Inspector, buf breaking, Pact) as a floor, not a ceiling — pair it with a changelog review by someone who understands what callers actually depend on.

Hyrum's Law framing adapted from addyosmani/agent-skills (MIT), commit 7676817, 2026-08-09.

When GraphQL, gRPC, or event-driven contracts are the wrong choice:

  • GraphQL is wrong for simple CRUD with one client shape, for teams that need HTTP-cache semantics (the GraphQL-over-HTTP spec requires POST support and makes GET optional, so many servers accept only POST; HTTP caching then needs GET plus persisted queries), and for single-team ownership where the query-flexibility payoff is never realized — you inherit N+1 risk, query-complexity DoS surface, and federation tooling cost for no client benefit.
  • Native gRPC is a poor default for browser clients, which need gRPC-Web or a compatible transport layer. For public third-party integrators, account for protobuf tooling and transport support; choose REST+OpenAPI when broad HTTP interoperability and discoverability matter more.
  • AsyncAPI/event contracts are wrong when the caller needs an immediate, correlated answer to a specific request — forcing request/response workflows through pub/sub adds correlation-ID bookkeeping and timeout ambiguity that plain synchronous HTTP avoids.
  • The tell that a style choice was fashion, not fit: nobody on the team can name the specific latency budget, client platform constraint, or multi-team ownership problem the chosen style solves.

Known Traps

  • Picking GraphQL, gRPC, or AsyncAPI for architectural fashion instead of actual client, latency, or interoperability constraints.
  • Designing happy-path resources without an explicit idempotency and retry story for duplicated or partial-failure requests.
  • Letting auth stay implicit until implementation, producing inconsistent enforcement across endpoints.
  • Reusing pagination models that leak internal storage semantics into the public contract.
  • Treating webhook or event delivery as reliable push without signature validation, replay protection, or consumer backpressure.
  • Generating a spec from code after implementation and calling it contract-first.
  • Wrapping arbitrary internal endpoints as agent APIs without stable side-effect, auth, and validation rules.

Navigation

Core patterns:

  • references/restful-design-patterns.md — HTTP method semantics, URL structure, idempotency
  • references/pagination-filtering.md — cursor vs offset, filtering contracts
  • references/error-handling-patterns.md — RFC 9457, error taxonomy
  • references/authentication-patterns.md — OAuth 2.1, JWT, API keys, mTLS
  • references/rate-limiting-patterns.md — headers, 429 handling, burst strategies

Style-specific:

  • references/api-design-best-practices.md — cross-style DX and governance
  • references/versioning-strategies.md — breaking change detection, deprecation
  • references/api-security-checklist.md — OWASP API Top 10 checklist
  • references/graphql-patterns.md — schema design, federation, when to adopt a supergraph
  • references/grpc-patterns.md — protobuf design, streaming, deadlines
  • references/trpc-patterns.md — TypeScript end-to-end type sharing
  • references/openapi-guide.md — OpenAPI 3.x authoring, linting, bundling
  • references/openapi-32-arazzo-101.md — what OpenAPI 3.2 added over 3.1 (streaming types, QUERY method, OAuth flows) and Arazzo multi-step workflow chains; load when specifying multi-call API sequences or adopting 3.2 features
  • references/asyncapi-patterns.md — event-driven contracts, pub/sub
  • references/webhook-patterns.md — HMAC signing, replay protection, delivery guarantees
  • references/real-time-api-patterns.md — SSE, WebSocket, long-polling tradeoffs
  • references/api-testing-patterns.md — contract tests, property-based testing, Schemathesis
  • references/llm-agent-api-contracts.md — MCP integration, AX design, agent-first patterns, LLM-consumer rules (summary-stat endpoints, language-first search, payload pruning as accuracy control)

Assets and templates:

  • assets/openapi-template.yaml
  • assets/spectral-ruleset.yaml — custom Spectral lint ruleset for OpenAPI
  • assets/oasdiff-ci.yml — CI workflow for oasdiff breaking-change detection
  • Full-stack framework scaffolds (FastAPI, Express, Django REST, Spring Boot) are implementation, not contract design — moved to software-backend: assets/python/template-python-fastapi-sqlalchemy.md, assets/nodejs-express/template-nodejs-express.md, assets/python-django/template-python-django-rest.md, assets/java/template-java-spring-boot.md
  • assets/cross-platform/api-patterns-universal.md
  • assets/cross-platform/template-api-governance.md
  • assets/cross-platform/template-api-design-review-checklist.md
  • assets/cross-platform/template-api-error-model.md
  • data/sources.json

Related skills:

  • software-backend, software-security-appsec, data-sql-optimization, qa-testing-strategy, qa-observability, docs-codebase, docs-ai-prd, dev-workflow-planning, software-architecture-design

Learnings Loop

When prior decisions or pitfalls are relevant, consult learnings.consolidated.md if present; use learnings.md only for needed history or as the available fallback. Otherwise skip both.

After applying it, if you encountered a pattern worth remembering, a mistake worth preventing, or a domain fact that surprised you, append one dated bullet to learnings.md via agents-skills-feedback-loop/scripts/append_learning.py. Do not modify SKILL.md itself.

FAQ

What does the dev-api-design skill do?

Designs durable API contracts across REST, GraphQL, gRPC, tRPC, and AsyncAPI. Use when specifying interfaces, auth, versioning, errors, rate limits, or agent APIs.

How do I install dev-api-design?

Run npx skills add https://github.com/vasilyu1983/ai-agents-public --skill dev-api-design in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/dev-api-design/ (personal) or .claude/skills/dev-api-design/ (project).

Which AI agents can use dev-api-design?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is dev-api-design safe to install?

No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.

Who maintains dev-api-design?

It is published by vasilyu1983 in vasilyu1983/ai-agents-public. It has 176 recorded installs.

More from vasilyu1983/ai-agents-public

View all →

software-architecture-design

vasilyu1983/ai-agents-public

Designs runtime topology in a chosen solution. Use when choosing monolith vs services, cells, consistency, ADRs. Not for cross-system design (software-solution-architecture).

product-management

vasilyu1983/ai-agents-public

Guides founder-PM discovery, roadmaps, prioritization, and PMF measurement. Use when planning product strategy, metrics, or roadmaps.

AI & Agents914 installs

document-xlsx

vasilyu1983/ai-agents-public

Builds Excel charts, pivots, validation, exports, Office Scripts/Graph automation, and workbook audits. Use when automating workbooks; for plain edits prefer official xlsx skill.

Data & Databases875 installs

software-ui-ux-design

vasilyu1983/ai-agents-public

Designs and audits UI/UX systems with usability and accessibility requirements. Use when shaping flows, design systems, interaction patterns, or WCAG-aware product behavior.

Frontend & Design731 installs

document-pdf

vasilyu1983/ai-agents-public

Handles PDF/UA accessibility, real redaction, metadata scrubbing, signing, and extraction. Use when redacting or signing PDFs; for plain create/merge prefer the official pdf skill.

Docs & Writing689 installs

qa-testing-playwright

vasilyu1983/ai-agents-public

Builds and debugs Playwright E2E suites. Use when authoring browser tests, fixing flakes, or hardening Playwright CI and locator strategy.

Testing & QA665 installs

Popular backend & apis skills

View category →

find-skills

vercel-labs/skills

Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.

OfficialBackend & APIs4.1M installs

entra-app-registration

microsoft/azure-skills

Guides Microsoft Entra ID app registration, OAuth 2.0 authentication, and MSAL integration. USE FOR: create app registration, register Azure AD app, configure OAuth, set up authentication, add API permissions, generate service principal, MSAL example, console app auth, Entra ID setup, Azure AD authentication. DO NOT USE FOR: Key Vault secrets (use azure-keyvault-expiration-audit), general Azure resource security guidance.

OfficialBackend & APIs566.7K installs

This skill should be used when the user wants to "write agent code", "build an agent with ADK", "add a tool", "create a callback", "define an agent", "use state management" — in a project that needs ADK (Agent Development Kit) API patterns and code examples. It provides a quick reference for agent types, tool definitions, orchestration patterns, callbacks, state management, the graph Workflow API, and reference recipes to study. Do NOT use for scaffolding (use google-agents-cli-scaffold) or deployment (use google-agents-cli-deploy).

Backend & APIs514.8K installs

embedded-captions

heygen-com/hyperframes

Add captions or subtitles to an existing single-subject talking-head video without editing the footage. Use for plain verbatim captions, cinematic captions embedded behind the subject, VFX captions, “炸/特效/酷炫字幕,” or a named identity from the 35-style catalog. Route by visual identity, not by backend engine. The quiet anchor rail is the default; embed every word only when the user explicitly wants a fully cinematic treatment. The workflow runs locally end to end, including transcription and subject matting; split multi-shot footage before applying it.

Backend & APIs453.3K installs

entra-agent-id

microsoft/azure-skills

Provision Microsoft Entra Agent Identity Blueprints, BlueprintPrincipals, and per-instance Agent Identities via Microsoft Graph, and configure OAuth 2.0 token exchange (fmipath, OBO, cross-tenant) including the Microsoft Entra SDK for AgentID sidecar. USE FOR: Agent Identity Blueprint, BlueprintPrincipal, agent OAuth, fmipath token exchange, agent OBO, Workload Identity Federation for agents, polyglot agent auth, Microsoft.Identity.Web.AgentIdentities. DO NOT USE FOR: standard Entra app registration (use entra-app-registration), Microsoft Foundry agent authoring (use microsoft-foundry).

OfficialBackend & APIs336.6K installs

neon

neondatabase/agent-skills

Overview of Neon, a complete set of cloud backend primitives around Lakebase Postgres: Auth, Object Storage, Functions, the AI Gateway, and Realtime. Start here to choose Neon for undecided login, files, APIs, and LLM calls, set up the CLI or MCP server, and follow the branch-first workflow. Use when building an app or backend on Neon, or when "Neon" or "Lakebase Postgres" is mentioned. Child skill neon-postgres wins for an existing DATABASEURL, SQL, schema, inspect, or search. Child skill neon-auth wins for login, users, sessions, identity routing, and Managed Better Auth setup. Child skill neon-realtime wins for live queries in reactive apps and agents. Also use for object storage, S3, buckets, serverless functions, function triggers, cron, AI gateway, LLM calls, realtime, logs, Loki, Grafana, observability, postgres, database, backend, Claimable Neon, neon.new, or a no-signup database.

Backend & APIs237.1K installs