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.
npx agentmods add commands/mktoronto/python-clean-architecture/review-api-designgit clone --depth 1 https://github.com/MKToronto/python-clean-architectureWhat 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.
| Model | Per session | Once 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 |
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.
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
-
Read the code — Find and read ALL Python files in the target path recursively. Focus on router/endpoint files, Pydantic models, and main.py.
-
Check HTTP method semantics — Verify each endpoint uses the correct method:
GET— Read-only, no side effects, cacheablePOST— Create new resource, returns 201 + Location headerPUT— Full replacement of resource, idempotentPATCH— Partial update, uses optional fieldsDELETE— Remove resource, returns 204 (no content)
-
Check resource naming — Verify URL conventions:
- Plural nouns for collections (
/users, not/useror/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})
- Plural nouns for collections (
-
Check status codes — Verify appropriate codes:
200— Successful read/update201— Resource created204— Successful delete (no body)400— Validation error (malformed input)404— Resource not found422— Unprocessable entity (FastAPI default for validation)409— Conflict (duplicate creation)500— Never intentionally returned
-
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/limitorpage/size) - Error responses have consistent format (
{"detail": "..."})
-
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)
- Router prefix matches resource name (
-
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
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.
- 2d ago First seen · 70 lines · 15 tokens per session scan A 5a737291244c
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.
Other commands, from other repositories
go-stack.bundb.setup
Instructions to setup the go-stack BunDB integration for database access, migration management, and the bundled DB CLI command.
go-stack.project-update
Compare the current project against the latest go-stack scaffold template and propose or apply updates (tasks, linters, dependencies, skills, provider patterns, security tooling) while preserving project-specific business logic and module identity.
go-stack.inertia.setup
Instructions to setup the go-stack Inertia.js integration for fullstack Go applications, including boot provider wiring and frontend workflow.
deploy
Build, test, deploy with staged rollout.
brand-setup
Configure a new brand profile with colors, fonts, logo, visual style, platforms, and compliance rules.
save
Save this conversation as a new or existing reusable context.