| name | security-review |
| description | Use when the user wants a focused security audit of the current diff or recent changes. Triggered by /security-review, 'security review', 'audit this for security', 'check for vulnerabilities', 'OWASP review'. Runs deeper checks than the generic review — OWASP / secrets / injection / auth / crypto. Independent of the generic review skill. |
| disallowed-tools | AskUserQuestion |
Security Review — Focused Vulnerability Audit
When to Use
- User says "/security-review", "security review", "audit for security", "check for vulnerabilities", "OWASP review"
- After implementing anything touching: the injector, the assistant HTTP client, the updater download/self-swap, config/secret handling, or subprocess/
os.startfile calls
- Before merging high-risk PRs
Scope
Diff-based by default. Full-codebase only on explicit user request (/security-review --full).
Workflow
1. git status + git diff → identify changed files
2. Read CLAUDE.md "Architecture Principles" + Secrets → understand trust boundaries
3. Read every changed file completely
4. Evaluate against the checklist below
5. Run security-relevant tooling (see Tooling)
6. Fix findings inline (prefer over defer; security debt compounds)
7. Output standard Security Review Results table
8. For NOT-fixed findings → BACKLOG.md with explicit Sev: P0/P1
Checklist — OWASP-adapted + this app's real surfaces
Secrets & Data
Injection & Subprocess
Network (assistant + updater)
Robustness (a must-never-crash tray app)
Dependencies
Tooling (run if available, never gate on availability)
| Tool | Command | What it catches |
|---|
gitleaks / trufflehog | gitleaks detect --source . | Committed secrets |
pip-audit | pip-audit | Vulnerable Python deps |
bandit | bandit -r src | Python SAST (subprocess, eval, weak crypto) |
If a tool isn't available locally → note in report, do NOT block the review.
Severity & Fixing Rules
- All security findings default to P0 or P1. P2 only for clearly informational items.
- Never defer a P0 without explicit user override + BACKLOG entry naming the user as the deferring party.
- Fix inline — security tech debt compounds.
Report
### Security Review Results
| # | Area | Sev | Status | Finding | Action |
|---|------|-----|--------|---------|--------|
| 1 | Secrets | P0 | ⚠️ Fixed | api_key echoed in a notify() | Redacted from message |
| ... |
Tools run: <list>
Summary: X findings | Y fixed | Z deferred (with explicit user override) → Backlog
Footer:
🔐 security-review skill — independent of generic /review
Rules
- Do not run automatically. On-demand only.
- Do not skip checklist sections even if "looks fine".
- Do not silently lower severity. If unsure, default to higher.
- Do not commit fixes without re-running the affected checks (autonomy + zero-cost rule still applies).