fastapi-code-review — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited fastapi-code-review (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
| Issue Type | Reference |
|---|---|
| APIRouter setup, response_model, status codes | references/routes.md |
| Depends(), yield deps, cleanup, shared deps | references/dependencies.md |
| Pydantic models, HTTPException, 422 handling | references/validation.md |
| Async handlers, blocking I/O, background tasks | references/async.md |
response_model for type safetyDepends() not manual callsasync defrequests, time.sleep, open())except in route handlersThese are idiomatic FastAPI patterns that may appear problematic but are correct:
Depends(), not passed as function argumentsresponse_model is setOnly flag issues when the context warrants it:
Depends() with an auth dependencyRun once per FastAPI-related finding, after you can anchor `file:line` for the handler (see review-verification-protocol) and before the finding text ships. If a step’s pass condition is not met, do not assert the finding as written—gather evidence, withdraw, downgrade severity, or rephrase as a question.
| Step | Action | Pass condition |
|---|---|---|
| 1a | Open the handler’s route decorator in the repo (not from memory). | `file:line` for @router.* / @app.* (or the site that registers this handler). |
| 1b | Record HTTP method, response_model=, and status_code= on that decorator (or note they are absent). | Snippet from that line or explicit absent with the same `file:line`. |
| Step | Action | Pass condition |
|---|---|---|
| 2a | Read the full handler body. | `file:line` range covering the body. |
| 2b | If claiming blocking I/O: name each blocking call (e.g. requests., open(, time.sleep, sync DB/ORM). | Each call has `file:line`, or withdraw the finding if none after the read. |
| Step | Action | Pass condition |
|---|---|---|
| 3a | List parameters: Depends / Annotated[..., Depends], Pydantic models, Body/Query/Path, Request/Response. | Names + mechanism tied to `file:line` on the signature. |
| 3b | If claiming missing auth: search the handler file (and its APIRouter module if separate) for Depends, Security, HTTPBearer, or project auth dependencies. | Citation to an existing hook, or search result: paths searched + N matches (zero is allowed). |
| 3c | If claiming missing validation: confirm the argument is not already a Pydantic model or constrained Query/Path/Body. | Type/source with `file:line`, or withdraw if validation already applies. |
FastAPI + Pydantic handle many concerns automatically:
Before flagging "missing" functionality, verify FastAPI isn't handling it.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.