Install any skill in seconds. Free to start, no credit card required.
Get Started Free →jayrha/api-designer
Designs clean, consistent REST and GraphQL APIs covering resource modeling, URL structure, versioning, pagination, filtering, error formats (RFC 9457 Problem Details), idempotency, authentication, rate limiting, and machine-readable contracts (OpenAPI 3.1 / GraphQL SDL).
Passed 22 of 24 test cases with the skill, and 20 of 24 without it.
and 1 more in the full report
2 fixed20 passed either way2 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
The instructions your model reads when the skill loads.
This skill helps you design HTTP/REST and GraphQL APIs that are predictable, evolvable, and pleasant to consume. It covers resource modeling, URI design, HTTP semantics, versioning, pagination, filtering/sorting, error contracts, idempotency, concurrency control, auth, rate limiting, and writing machine-readable contracts.
Keywords: REST, GraphQL, OpenAPI, Swagger, API design, endpoint, resource, versioning, pagination, cursor, idempotency, ETag, RFC 9457, Problem Details, rate limit, contract, HATEOAS, webhook.
Apply this skill whenever the user is creating, extending, or reviewing an API surface — not when they are merely calling an existing third-party API.
Pick the style before designing details.
When unsure, default to REST and expose a small GraphQL layer later if client flexibility becomes a real pain point. See references/rest-checklist.md and references/graphql-checklist.md.
Follow these steps in order. Do not jump to URLs or schemas before modeling resources.
references/http-semantics.md. Avoid verbs in REST paths; model actions as sub-resources or status transitions.references/error-design.md.templates/openapi-3.1-template.yaml or templates/graphql-schema-template.graphql.scripts/lint_openapi.py on the OpenAPI file to catch common design smells before review./invoices, /users/{userId}/orders./invoices/{invoiceId}./getInvoice, /createUser. Good: GET /invoices/{id}, POST /users.POST /orders/{id}/cancel, POST /messages/{id}/send. Prefer modeling state: PATCH /orders/{id} with { "status": "cancelled" } when it's a true state field./comments?postId=42 over /users/1/posts/2/comments/3./billing-accounts), and be consistent with field casing (camelCase or snake_case) — pick one and never mix.test cases passed, vs 20 / 24 without
Published skills whose descriptions closely match this one, with their headline benchmark lift.
More skills from the same source and nearby in the registry, with their headline benchmark lift.