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 skills/romiluz13/auto-pi/security-reviewnpx skills add romiluz13/auto-pi --skill security-reviewgit clone --depth 1 https://github.com/romiluz13/auto-piWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/romiluz13/auto-pi/security-review)<a href="https://agentmods.dev/skills/romiluz13/auto-pi/security-review"><img src="https://agentmods.dev/badge/skills/romiluz13/auto-pi/security-review.svg" alt="Measured on agentmods" height="20"></a>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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00065 | $0.02014 |
| Opus 5 | $0.00032 | $0.01007 |
| Sonnet 5 | $0.00013 | $0.00403 |
| Haiku 4.5 | $0.00006 | $0.00201 |
Grade B, and why
security-review scanned grade B with 2 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 4d 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.
Cloud metadata endpointmediumServer-side request forgery
One request to 169.254.169.254 can return temporary IAM credentials.
- Server-side fetch/HTTP to a user-supplied URL (webhooks, image fetching, URL previews). → validate and restrict: allowlist domains, block internal IPs (127.0.0.1, 169.254.169.254, 10.x, 192.168.x), follow-redirect limi Downgraded: this mod is about security review, or the phrase is quoted, so it is likely naming the pattern rather than instructing it.
Runs shell commandslowCapability
Expected in a hook, worth knowing in a rule or an instructions file.
- **Command injection** — user input in `exec()`, `execSync()`, `spawn()` shell mode, backticks, `subprocess.run(shell=True)`. → use argument arrays (`execFile`, `spawn` without `shell: true`); never interpolate. How it starts
The opening of the file, as written. The whole thing — 101 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Security Review
The third review axis in auto-pi's review phase — alongside Standards (does the code follow the repo's conventions?) and Spec (does the code match what was asked for?). This axis answers: does the diff introduce security vulnerabilities?
Runs as a parallel sub-agent with fresh context — only the diff, not the builder's reasoning — so the security review is not anchored by the implementer's assumptions.
Smell catalog
Each smell reads what it is → how to spot it in the diff → how to fix. Match against the diff hunks:
-
Injection — user-controlled input reaches a dangerous sink without sanitization.
- SQL injection — string-concatenated queries, unparameterized
query(), ORM raw queries with user input. → parameterize; use prepared statements / parameterized query builders. - Command injection — user input in
exec(),execSync(),spawn()shell mode, backticks,subprocess.run(shell=True). → use argument arrays (execFile,spawnwithoutshell: true); never interpolate. - Template injection — user input in template engines (
eval,ejs,jinja2,nunjucks) that execute code. → use logic-less templates or auto-escaping; neverevaluser content. - XSS — unescaped user input rendered in HTML (
innerHTML,dangerouslySetInnerHTML,|safein Django,{!! !!}in Blade). → escape on output; use framework auto-escaping; CSP headers.
- SQL injection — string-concatenated queries, unparameterized
-
Authentication / authorization — missing or bypassable access control.
- Missing auth checks — a route, endpoint, or function that should require authentication but doesn't. → add the auth middleware/guard.
- Privilege escalation — a user can perform actions above their role (horizontal or vertical). → check role/permission at the action site, not just the route.
- IDOR (Insecure Direct Object Reference) — user can access another user's resource by changing an ID in the URL/params. → verify ownership:
where("user_id = ?", currentUser.id). - Missing ownership checks — the code loads a resource by ID without checking the requester owns it. → add ownership scoping.
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.
- 4d ago First seen · 101 lines · 65 tokens per session scan B 835db451af60
security-review is a skill published in the GitHub repository romiluz13/auto-pi (10 stars, last pushed 19d ago), licensed MIT. It adds 65 tokens to every session and 2,014 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it B with 2 findings (cloud metadata endpoint, runs shell commands). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
wayfinder
Plan a huge chunk of work (more than one agent session can hold) as a shared map of decision tickets on your issue tracker, and resolve them one at a time until the way to the destination is clear.
ask-matt
Ask which skill or flow fits your situation. A router over the skills in this repo.
teach
Teach the user a new skill or concept, within this workspace.
writing-for-agents
Writing documents for agents. Use when creating or editing skills, or modifying AGENTS.md or CLAUDE.md.
diagnosing-bugs
Diagnosis loop for hard bugs and performance regressions. Use when the user says "diagnose"/"debug this", or reports something broken/throwing/failing/slow.
setup-matt-pocock-skills
Configure this repo for the engineering skills: set up its issue tracker, triage label vocabulary, and domain doc layout. Run once before first use of the other engineering skills.