Design clean and consistent APIs. Use when the user says "design an API", "API design review", "design these endpoints", "REST API for X", "GraphQL schema", "API contract", "how should this endpoint work", "review my API design", or wants to create or improve an API interface - even if they don't explicitly say "API design".
Collected from public GitHub. Every version is saved exactly as it was and never changes. Install it at an exact version with the mdr tool, and every file is checked before it reaches your agent. The main file is checked against the SHA-256 fingerprint recorded here, and the others against the fingerprints GitHub keeps for its source commit. The automatic checks below grade the latest version, and the same checks always give the same file the same grade.
What the file says
## Overview
Based on **"A Philosophy of Software Design"** by John Ousterhout. Ousterhout's key principle: modules should be deep - simple interface, powerful implementation. Applied to APIs: the surface area exposed to callers should be as small as possible, while the behavior provided should be as rich as possible. A leaky abstraction (where callers need to understand implementation details) is a design failure.
## Workflow
### Step 1: Define the API's job
Before designing any endpoint, state what the API enables:
- What is the caller trying to accomplish?
- What information does the caller have?
- What should the API hide from the caller?
Ousterhout: if callers need to know how the API works internally to use it correctly, the API is leaky.
### Step 2: Design resources (REST) or schema (GraphQL)
**REST:**
- Resources are nouns, not verbs: `/users`, `/orders` not `/getUsers`, `/createOrder`
- Use HTTP verbs for actions: GET (read), POST (create), PUT (replace), PATCH (update), DELETE (remove)
- Nest for ownership: `/users/{id}/orders` (orders owned by a user)
- Don't nest beyond 2 levels deep
**GraphQL:**
- Types model your domain, not your database schema
…
The line at the top of this page pins the label git:20260303.09b1726, which is what most people want. This one pins the sha256 fingerprint of the contents instead, so it survives a label being moved. Either way the exact version is written to mdr.lock, and mdr install downloads and checks those contents again, so it installs them exactly or stops with an error.
GET https://markdownregistry.com/api/v1/artifacts/art_62mtp5rfzfemty3f
GET https://markdownregistry.com/api/v1/resolve?ref=qa-aman/claude-skills/api-design
GET https://markdownregistry.com/api/v1/blob/413fade7b851ad226a105bc3db9e24ebe2c3af7b3f14166250269be93fdb56ab
Your AI assistant does the legwork. You hear about the deals worth your word. Hand yours the standing instructions at modelranch.com and it joins the network that reads files like this one.
qa-aman/claude-skills · .claude/skills/create-skill/SKILL.md · Create or update Claude Code skills following Anthropic's official skill standard. Use when user says "create a skill"…
qa-aman/claude-skills · .claude/skills/sync-skills/SKILL.md · Fetch skills from projects on the current system, genericize them, and add to the claude-skills repository. Use when…
qa-aman/claude-skills · skills/by-role/accountant/audit-workpaper/SKILL.md · Write a clear, reviewable audit workpaper documenting procedures, evidence, and conclusions. Use when an auditor says…
qa-aman/claude-skills · skills/by-role/accountant/budget-variance-analysis/SKILL.md · Analyze budget vs. actual variances, identify root causes, and recommend corrective actions. Use when an accountant or…
qa-aman/claude-skills · skills/by-role/accountant/financial-statement-review/SKILL.md · Analyze and interpret financial statements to surface performance signals, quality concerns, and red flags. Use when an…
qa-aman/claude-skills · skills/by-role/accountant/month-end-close/SKILL.md · Run, document, or review a structured month-end close process. Use when an accountant says "help me with month-end…
qa-aman/claude-skills · skills/by-role/accountant/tax-position-memo/SKILL.md · Write a technical tax position memo that documents a tax filing position with authorities, facts, analysis, and…
qa-aman/claude-skills · skills/by-role/business-analyst/acceptance-criteria-writer/SKILL.md · Write measurable acceptance criteria for requirements or user stories. Use when the user says "write acceptance…
qa-aman/claude-skills · skills/by-role/business-analyst/brd-writer/SKILL.md · Write a Business Requirements Document. Use when the user says "write a BRD", "business requirements", "document the…
qa-aman/claude-skills · skills/by-role/business-analyst/cost-benefit-analysis/SKILL.md · Build a business case with costs, benefits, and ROI. Use when the user says "cost-benefit analysis", "business case"…
qa-aman/claude-skills · skills/by-role/business-analyst/data-dictionary/SKILL.md · Generate a data dictionary documenting entities, fields, and business rules. Use when the user says "data dictionary"…
affaan-m/ecc · docs/es/skills/api-design/SKILL.md · Patrones de diseño REST API incluyendo nomenclatura de recursos, códigos de estado, paginación, filtrado, respuestas de…
yonatangross/orchestkit · plugins/ork/skills/api-design/SKILL.md · API contract design for REST and GraphQL, covering resource shape, URL and header versioning with deprecation windows…
yonatangross/orchestkit · src/skills/api-design/SKILL.md · API contract design for REST and GraphQL, covering resource shape, URL and header versioning with deprecation windows…