Gsd-skill-creator api-design

REST API design best practices. Use when designing APIs, choosing status codes, or creating endpoints.

install
source · Clone the upstream repo
git clone https://github.com/Tibsfox/gsd-skill-creator
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/Tibsfox/gsd-skill-creator "$T" && mkdir -p ~/.claude/skills && cp -r "$T/examples/skills/patterns/api-design" ~/.claude/skills/tibsfox-gsd-skill-creator-api-design && rm -rf "$T"
manifest: examples/skills/patterns/api-design/SKILL.md
source content

REST API Design

Endpoint Rules

  • Nouns, not verbs:
    /users
    not
    /getUsers
    — HTTP method is the verb
  • Plural nouns:
    /users
    ,
    /orders
    — consistent collections
  • Kebab-case:
    /user-profiles
    not
    /user_profiles
  • Max 2 levels nesting:
    /users/{id}/orders
    — deeper use query params
  • No trailing slashes, no extensions

HTTP Methods

MethodPurposeIdempotent
GETRetrieveYes
POSTCreateNo
PUTReplace entire resourceYes
PATCHPartial updateNo
DELETERemoveYes

Status Codes

CodeUse When
200Success with body
201Resource created (+ Location header)
204Success, no body (DELETE)
400Malformed request
401Not authenticated
403Authenticated but forbidden
404Not found
409Conflict (duplicate)
422Valid syntax, invalid semantics
429Rate limited

Error Format

{"error": {"code": "VALIDATION_ERROR", "message": "...", "details": [], "request_id": "req_..."}}

Key Rules

  • Always paginate lists (cursor-based preferred, max page size enforced)
  • Never expose sequential IDs — use UUIDs
  • Auth credentials in headers, never URLs
  • Return 400 for unknown parameters (catch typos)
  • Include request_id in every response