New free skill for Claude Code
Production Readiness Auditor
Point it at your FastAPI service. Find out what breaks in production.
It runs inside your repository and reads the code itself. No pasting files into a chat window, no describing your architecture from memory. It only asks you the things the code genuinely cannot answer, like whether you are self-hosting or calling a provider.
Seven areas, one at a time. Each one graded Pass, Partial or Fail against the standards in the O’Reilly book, with the offending file and line number attached and the specific fix.
- Modular project architecture Ch 2
- Whether the onion layers hold up, or your business logic has quietly leaked into the route handlers.
- Routing and API design Ch 2, 4
- Response models, dependency injection, versioning, and whether errors come back through one envelope or fifteen.
- LLM integration and streaming Ch 3, 5, 6
- Lifespan loading, SSE against WebSocket, connection managers, and whether tokens actually stream or just look like it.
- Async concurrency Ch 5
- The blocking call sitting inside an async handler that freezes every other request. The single most common fail.
- Security and optimisation Ch 8, 9, 10
- Auth matched to your deployment, input and output guardrails, prompt injection, caching, and where your keys live.
- Tests and behavioural testing Ch 11
- Whether your suite hits a paid API on every run, and whether anything tests model output beyond a 200 status code.
- Docker and container security Ch 9, 12
- Root users, secrets baked into layers, missing .dockerignore, and the multi-gigabyte image you did not need.
It finishes with a summary table, your three most urgent fixes
ranked by production risk, and a report written to
PRODUCTION_READINESS_AUDIT-{date}.md in your repo root, so you can run it again after the fixes and
compare.
Most FastAPI services that fail in production do not fail on anything exotic. It is a blocking call in an async handler, a key baked into a Docker layer, or a test suite that never checked what the model actually said. Those are cheap to fix before launch and expensive after.
> audit my repo for production readiness
Area 4 of 7 — Async concurrency (Ch 5)
Finding: app/routers/chat.py:38 declares an
async handler but calls the provider with the sync
SDK. Every other request blocks until it returns.
Grade: Fail
Fix: Swap to the async client and add backoff
for rate limits. Ch 5 covers why the event loop
stalls here and what the throughput cost is.
Moving to Area 5 — Security and optimisation… Free, and yours to keep. Works in Claude Code, or anywhere else that reads agent skills. Link will only be sent to real emails.
Want it?
Enter your email below and I will send the download straight to your inbox. 👇
Installing it takes about a minute
- Unzip the folder you receive.
-
Drop it into
.claude/skills/in your project, or~/.claude/skills/to use it everywhere. - Open Claude Code in your repo and ask it to audit your codebase.
If you have the O’Reilly MCP connected it will pull matched reading for whatever it finds. It works fine without it.