Public API Design Review
Audit an existing or proposed public REST API surface as a checklist-driven design review - resource and URI naming, HTTP method and status-code correctness, field-naming consistency, pagination pattern choice, filtering/sorting/field-selection conventions, one consistent error envelope, and Hyrum's-Law backward-compatibility risk - every finding bucketed Must-change or Improvement against a cited rule, plus the standing review program (audience, lifecycle triggers, reviewer authority, linting, federation). Use whenever the user mentions an API design review, REST API consistency, endpoint naming, pagination style, or API design governance - even if they never say "design review". Do NOT use for GraphQL schemas - use samber/developer-platform-skills@public-graphql-api-design instead.
- Skill ID
- samber/developer-platform-skills/public-api-design-review
- Publisher
- samber
- Repository
- developer-platform-skills
- Installs
- 321
- Files
- 5
- License
- MIT
- Synced
- Oct 23, 2026
Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.
samber/developer-platform-skills/public-api-design-reviewInstalls these files- SKILL.md
- evals/evals.json
- references/review-checklist.md
- references/review-program-benchmarks.md
- references/worked-review-excerpt.md
What this skill tells the agent
Public API Design Review
You are a public API design reviewer. Walk a REST API surface - shipped or still on paper - through a pass/fail checklist of the conventions external developers expect, bucket every finding as Must-change or Improvement with a cited rule, and, when asked, design the standing review program around the audit.
Zalando's guideline states the goal in one line: "great RESTful APIs look like they were designed by a single team." Cross-surface consistency, not any single endpoint's cleverness, is what you review for.
Memory (advised): When memory lives in a file, consider using developer-platform-context.md; if a different memory system is in use, rely on that instead. The file is an advisory reference, not a mandatory requirement. Separate task info in different sections. Remove finished tasks. Add a date to a task; no date for general project context. Some interview responses may differ between 2 tasks.
Clarifying questions
Ask these before reviewing anything; each answer changes a later step. Batch them - this is a tactical audit, not a strategy interview.
- Existing production API or proposed design? A shipped surface makes every finding a Hyrum's-Law question: real clients may depend on the behavior you want fixed.
- What material exists: an OpenAPI (or similar) spec, reference docs, or sample requests/responses? Ask for it - never review from the API's name alone.
- One-off review, or a standing review program to design as well? If a program: how many teams ship APIs, by when must it operate, and what's the effort ceiling - a linter afternoon, a named reviewer pair, or a funded multi-quarter program? (re-ranks the maturity ladder - see step 6)
- Who consumes the surface - internal teams only, named partners, or anyone - and what lifecycle stage is it at (alpha, beta, GA)? (see next section)
- Which rule corpus does the team follow: their own guidelines, Zalando, Microsoft, Google AIPs, JSON:API - or none? A Must-change must cite a rule; the corpus is where citations come from.
- Which behaviors have clients already observed and possibly built against - field names, error shapes, ordering, undocumented endpoints?
Audience split: surface exposure and lifecycle
Two splits change the review:
- Internal-only vs partner vs public. Google's AIP-100 keys whether review is required on exactly this axis: internal or single-customer surfaces can skip formal review; anything externally consumable cannot. Public surfaces also carry the full Hyrum's-Law exposure - you cannot enumerate, contact, or migrate the clients.
- Alpha vs beta vs GA. Review is recommended at alpha, required (and blocking) at beta, and required again at GA if the surface changed. An alpha API may ship to a known user set without approval; a beta launch is where unresolved Must-change findings block.
Cross the two axes to set the review's severity posture:
- An internal alpha gets advisory feedback.
- A public beta gets the full blocking checklist.
Workflow
- Scope the surface.
- Run mechanical checks first.
- Walk the checklist, dimension by dimension.
- Bucket findings through the precedent mechanism.
- Deliver the report.
- Design the standing program - only when question 3 said so.
Each step has a section below, in order.
1. Scope the surface
- Confirm the paradigm is REST/HTTP. Hand a GraphQL surface to sibling
samber/developer-platform-skills@public-graphql-api-designand a gRPC surface tosamber/developer-platform-skills@public-grpc-api-design- their conventions differ enough that this checklist misleads. - Inventory the endpoints from the spec or docs. Tag each as collection (pagination and filtering checks apply), mutating (method-semantics checks apply), or both.
- Record the rule corpus from question 5. When the team has none, use references/review-checklist.md as the corpus and say so in the report - findings then cite this checklist's items by name.
- For a shipped API, collect 5-10 real responses across endpoints; a spec can claim a consistency its production traffic doesn't have.
2. Run mechanical checks first
If you can run tools and an OpenAPI spec exists, run a spec linter (Spectral-class; Zally ships Zalando's ruleset) before any human-judgment check. Linters check structural conditions; they cannot tell whether an operation makes sense to a consumer (Erik Wilde's limitation) - so linting owns the mechanical findings and you own the semantic ones, never the reverse split.
No spec, or no tooling available: proceed straight to step 3, and log the missing spec itself as an Improvement finding - every mature review program treats a machine-readable spec as the review's substrate.
3. Walk the checklist
Eight dimensions, walked in full and in order - a checklist, not a menu to pick from. Four independently developed rule corpora (Google AIPs, Zalando, PayPal, Adidas) converge on this same dimension set, so a skipped dimension is a hole a mature reviewer would notice.
- Resource modeling and URI naming - nouns not verbs, plural collections, nesting depth.
- HTTP method semantics - safe/idempotent contract per method, no POST for idempotent operations.
- Status-code correctness - 400 vs 422, 401 vs 403, 201+Location, never 200-with-error.
- Field-naming consistency - one casing everywhere, boolean prefixes, enum casing.
- Pagination - a deliberate strategy, applied uniformly, with edge cases specified.
- Filtering, sorting, field selection - shared parameter conventions across collection endpoints.
- Error shape consistency - one envelope on every endpoint and status. Shape only: the code taxonomy, message writing, and retry signaling inside the envelope are sibling
samber/developer-platform-skills@api-error-design's job. - Backward compatibility - Hyrum's Law, addition-over-modification, what the change under review breaks.
The full pass/fail items per dimension live in references/review-checklist.md - load it for the walk; the list above is only the map.
Five adjacent concerns get an existence-and-consistency check only - one line each in the report, with depth deferred to the sibling that owns it:
- A versioning scheme exists and is applied uniformly -
samber/developer-platform-skills@api-versioning-policy. - Unsafe retries are addressed via idempotency keys or documented -
samber/developer-platform-skills@api-idempotency-retry. - One auth model covers the surface -
samber/developer-platform-skills@api-auth-key-management. - Rate limits are signaled in responses -
samber/developer-platform-skills@api-rate-limit-policy. - Every endpoint is documented -
samber/developer-platform-skills@api-reference-quality.
4. Bucket findings through the precedent mechanism
Two buckets, no numeric score - Must-change vs Improvement is what every published program (Zalando, Haufe) actually uses, and severity lives in the rule itself as RFC 2119 keywords (MUST/SHOULD/MAY), not in reviewer judgment at grading time.
- A Must-change finding must cite a written rule or precedent - from the team's corpus, or from this skill's checklist when the team has none. This is Google AIP-100's mechanism: if a rule or precedent exists, a violation is must-fix; if none exists, the comment is advisory.
- The burden flips onto the deviator, not the reviewer. A team that wants to violate a cited rule records a rationale referencing a documented exception (Google's
aip.dev/not-precedentconvention) - see references/review-program-benchmarks.md for Google's own enumerated exception reasons. Taste never blocks; documented deviation is allowed but leaves a trace. - No cited rule → Improvement, always. The calibration line practitioners converge on: firm on decisions that affect clients or security, forgiving on stylistic preferences.
More from samber
Use this skill in a project
Open any RiverX project, search the Skills panel for samber/developer-platform-skills/public-api-design-review, and install it in one click.
