review-api-design

A code-review command for checking REST APIs, which are web interfaces that expose resources through HTTP requests. It examines methods, URL naming, nested resources, and response status codes.

In plain words
What is it for?
Use it to review Python API endpoint code, including routers, request models, and application setup, for correct GET, POST, PUT, PATCH, and DELETE behavior.
Why use it?
It helps catch inconsistent API behavior and naming that can confuse clients or make an interface harder to maintain.

Command

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add commands/mktoronto/python-clean-architecture/review-api-design
Clone the repo
git clone --depth 1 https://github.com/MKToronto/python-clean-architecture
Per session 15 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 732 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00015 $0.00732
Opus 5 $0.00008 $0.00366
Sonnet 5 $0.00003 $0.00146
Haiku 4.5 $0.00002 $0.00073

Measured 2d ago against content hash 5a737291244c, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

review-api-design scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

commands/review-api-design.md · 70 lines

What it actually says

Review the REST API design at $ARGUMENTS (or the current working directory if no path given) for HTTP conventions and best practices.

Process

  1. Read the code — Find and read ALL Python files in the target path recursively. Focus on router/endpoint files, Pydantic models, and main.py.

  2. Check HTTP method semantics — Verify each endpoint uses the correct method:

    • GET — Read-only, no side effects, cacheable
    • POST — Create new resource, returns 201 + Location header
    • PUT — Full replacement of resource, idempotent
    • PATCH — Partial update, uses optional fields
    • DELETE — Remove resource, returns 204 (no content)
  3. Check resource naming — Verify URL conventions:

    • Plural nouns for collections (/users, not /user or /getUsers)
    • Nested resources for relationships (/users/{id}/orders)
    • No verbs in URLs (use HTTP methods instead)
    • Consistent kebab-case or snake_case (not mixed)
    • IDs in path for single resources (/users/{user_id})
  4. Check status codes — Verify appropriate codes:

    • 200 — Successful read/update
    • 201 — Resource created
    • 204 — Successful delete (no body)
    • 400 — Validation error (malformed input)
    • 404 — Resource not found
    • 422 — Unprocessable entity (FastAPI default for validation)
    • 409 — Conflict (duplicate creation)
    • 500 — Never intentionally returned
  5. Check request/response design — Verify:

    • Separate Create and Read models (don't expose internal fields on input)
    • Update models use optional fields for partial updates
    • No sensitive data in responses (passwords, tokens, internal IDs)
    • Consistent response envelope (or lack thereof)
    • List endpoints support pagination (skip/limit or page/size)
    • Error responses have consistent format ({"detail": "..."})
  6. Check API structure — Verify:

    • Router prefix matches resource name (/api/v1/users)
    • Tags for OpenAPI grouping
    • Response model declarations on endpoints
    • Dependency injection for common concerns (auth, DB sessions)
  7. Report findings — Structure output as:

    API Endpoint Inventory

    List all endpoints with method, path, status codes, and request/response models.

    What Works Well

    Specific things the API design does right.

    Findings by Severity

    • Critical — Wrong HTTP methods, missing status codes, security issues
    • Important — Missing pagination, inconsistent naming, no response models
    • Suggestions — OpenAPI tags, versioning, error format consistency

    For each finding, include file/line, the convention violated, and a fix snippet.

For detailed REST API conventions, consult:

  • ${CLAUDE_PLUGIN_ROOT}/skills/clean-architecture/references/rest-api-design.md
  • ${CLAUDE_PLUGIN_ROOT}/skills/clean-architecture/references/pydantic-validation.md
  • ${CLAUDE_PLUGIN_ROOT}/skills/clean-architecture/references/layered-architecture.md
Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 70 lines · 15 tokens per session scan A 5a737291244c

Subscribe to this mod's changes

review-api-design is a command published in the GitHub repository MKToronto/python-clean-architecture (8 stars, last pushed 2mo ago), licensed MIT. It adds 15 tokens to every session and 732 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.