Install any skill in seconds. Free to start, no credit card required.
Get Started Free →AI-powered codebase security scanner that reasons about code like a security researcher — tracing data flows, understanding component interactions, and catching vulnerabilities that pattern-matching tools miss. Use this skill when asked to scan code for security vulnerabilities, find bugs, check for SQL injection, XSS, command injection, exposed API keys, hardcoded secrets, insecure dependencies, access control issues, or any request like "is my code secure?", "review for security issues", "audi
.claude/skills/security-review/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-09 | ✗→✓ | ▲ Improved | — | — |
| case-17 | ✗→✓ | ▲ Improved | — | — |
| case-04 | ✗→✗ | = Same ✗ | — | — |
| case-03 | ✗→✗ | = Same ✗ | — | — |
| case-22 | ✗→✗ | = Same ✗ | — | — |
An AI-powered security scanner that reasons about your codebase the way a human security researcher would — tracing data flows, understanding component interactions, and catching vulnerabilities that pattern-matching tools miss.
Use this skill when the request involves:
/security-review or /security-review <path>Unlike traditional static analysis tools that match patterns, this skill:
Follow these steps in order every time:
Determine what to scan:
/security-review src/auth/), scan only that scopego.mod, Cargo.toml, pom.xml, Gemfile, composer.json, etc.)
references/language-patterns.md to load language-specific vulnerability patternsBefore scanning source code, audit dependencies first (fast wins):
package.json + package-lock.json for known vulnerable packagesrequirements.txt / pyproject.toml / Pipfilepom.xml / build.gradleGemfile.lockCargo.tomlgo.sumreferences/vulnerable-packages.md for a curated watchlistScan ALL files (including config, env, CI/CD, Dockerfiles, IaC) for:
.env files accidentally committedreferences/secret-patterns.md for regex patterns and entropy heuristics to applyThis is the core scan. Reason about the code — don't just pattern-match. Read references/vuln-categories.md for full details on each category.
Injection Flaws
Authentication & Access Control
Data Handling
Cryptography
Business Logic
After the per-file scan, perform a holistic review:
all the way to sinks (DB queries, exec calls, HTML output, file writes)
For EACH finding:
Output the full report in the format defined in references/report-format.md.
For every CRITICAL and HIGH finding, generate a concrete patch:
Explicitly state: "Review each patch before applying. Nothing has been changed yet."
| Severity | Meaning | Example | |----------|---------|---------| | 🔴 CRITICAL | Immediate exploitation risk, data breach likely | SQLi, RCE, auth bypass | | 🟠 HIGH | Serious vulnerability, exploit path exists | XSS, IDOR, hardcoded secrets | | 🟡 MEDIUM | Exploitable with conditions or chaining | CSRF, open redirect, weak crypto | | 🔵 LOW | Best practice violation, low direct risk | Verbose errors, missing headers | | ⚪ INFO | Observation worth noting, not a vulnerability | Outdated dependency (no CVE) |
For detailed detection guidance, load the following reference files as needed:
references/vuln-categories.md — Deep reference for every vulnerability category with detection signals, safe patterns, and escalation checkersSQL injection, XSS, command injection, SSRF, BOLA, IDOR, JWT, CSRF, secrets, cryptography, race condition, path traversalreferences/secret-patterns.md — Regex patterns, entropy-based detection, and CI/CD secret risksAPI key, token, private key, connection string, entropy, .env, GitHub Actions, Docker, Terraformreferences/language-patterns.md — Framework-specific vulnerability patterns for JavaScript, Python, Java, PHP, Go, Ruby, and RustExpress, React, Next.js, Django, Flask, FastAPI, Spring Boot, PHP, Go, Rails, Rustreferences/vulnerable-packages.md — Curated CVE watchlist for npm, pip, Maven, Rubygems, Cargo, and Go moduleslodash, axios, jsonwebtoken, Pillow, log4j, nokogiri, CVEreferences/report-format.md — Structured output template for security reports with finding cards, dependency audit, secrets scan, and patch proposal formattingreport, format, template, finding, patch, summary, confidence| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-04 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-03 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-22 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-02 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-13 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-14 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-01 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-11 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-06 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-08 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-18 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-05 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-12 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-09 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-16 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-17 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-21 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-07 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-10 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-15 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-19 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-20 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +9 percentage points is the difference between those two pass rates over the 22 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
The per-case answers from this run were removed by the retention sweep, so the case table below shows the verdicts without the text either arm produced. The counts above were recorded at the time and are unaffected. Answers are now kept for 180 days.
Other measured skills in the registry, with their headline benchmark lift.