Security
Use when you want a dedicated security review of staged or recently changed files — deeper than the security section in /review. Covers OWASP Top 10, secrets exposure, dependency vulnerabilities, and auth gaps. Run before opening a PR on security-sensitive changes.From its SKILL.md
npx -y skills add latuconsinafr/claude-code-config --skill securityAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
4.8 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it
Security Review
Perform a focused security analysis of changed code. Do not modify any files.
Step 1: Get the target
git diff --staged
If nothing staged:
git diff HEAD
If $ARGUMENTS provides a file path → review that file specifically.
If diff is empty and no argument → ask: "What should I review? (staged changes, a specific file, or a path)"
Step 2: Read full context
For each changed file, read the complete file — not just the diff. Security issues often live in the surrounding code, not the changed lines.
Step 3: Security checklist
Work through each category. Report only findings that apply.
Injection
- SQL injection — unparameterized queries: string concatenation or interpolation into SQL
`SELECT * WHERE id = ${input}` ← vulnerable db.query('SELECT * WHERE id = $1', [input]) ← safe - Command injection — user input in shell commands:
exec(),spawn(),eval(),system() - Path traversal — user-controlled file paths without sanitization:
../sequences, absolute path injection - Template injection — user input rendered in server-side templates without escaping
- NoSQL injection — unvalidated objects passed directly to MongoDB/similar query operators
Authentication & authorization
- Missing auth check — new endpoints or routes without authentication middleware/guard
- Broken authorization — accessing records by ID without verifying ownership
GET /invoices/:id → fetches invoice without checking invoice.userId === req.user.id - Privilege escalation — lower-privilege role able to trigger higher-privilege action
- JWT/token issues — algorithm confusion, missing expiry check, token not invalidated on logout
- Password handling — plaintext storage, weak hashing (MD5/SHA1), missing salt
Sensitive data exposure
- Hardcoded secrets — API keys, tokens, passwords, connection strings in source code
Patterns:
sk-,Bearer,password=,secret=,api_key=,-----BEGIN - Secrets in logs — sensitive fields (password, token, card number, SSN) passed to logger
- Sensitive data in URLs — tokens or passwords in query params (appear in server logs)
- Overly permissive responses — API returning full user/record objects when only a subset is needed
- Insecure direct object reference — exposing internal database IDs directly in responses
Security misconfigurations
- CORS — overly permissive:
Access-Control-Allow-Origin: *on authenticated endpoints - Security headers missing — CSP, HSTS, X-Frame-Options, X-Content-Type-Options
- Verbose error messages — stack traces, internal paths, or DB errors exposed to clients
- Debug mode in production — debug flags, development middleware enabled unconditionally
- Insecure defaults — new config options defaulting to insecure values
Input validation
- Missing validation — user input used without type, length, or format checks
- Client-side validation only — validation exists on frontend but not enforced server-side
- Mass assignment — accepting all body fields without an allowlist (e.g.,
req.bodydirectly into DB)
Dependencies
# Quick check for known vulnerable packages in the diff context
grep -E "require\(|import.*from" <changed files> 2>/dev/null | \
grep -v node_modules | sort -u
Flag any newly added packages — verify they're not known-malicious or unmaintained.
Cryptography
- Weak algorithms — MD5, SHA1, DES, RC4 for security purposes
- Insufficient randomness —
Math.random()for security tokens (usecrypto.randomBytes()) - Hardcoded IVs or salts — cryptographic material that should be randomly generated per operation
Step 4: Output format
Structure findings as:
🔴 Critical — exploitable, direct security risk 🟡 High — significant risk, should be fixed before merging 🟢 Medium — defense-in-depth, worth fixing ℹ️ Informational — best practice, low-risk observation
For each finding:
<severity> | <file>:<line> | <vulnerability type>
Issue: <what the problem is>
Impact: <what an attacker could do>
Fix: <specific code change or approach>
End with a verdict:
✅ No security issues found⚠️ REVIEW REQUIRED — <N> high, <N> medium findings🚨 BLOCK — <N> critical findings, do not merge until resolved
If critical findings exist, list them again at the bottom for immediate reference.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.
Gives 0 of the 12 instructions most security skills give in ~1.1k tokens
Counted across 648 of the 828 authors here whose files we hold, read 2026-08-07
- Parameterize all database queriesin 68 of 648, across 51 files
- Hash passwords using bcrypt, scrypt, or argon2in 49 of 648, across 36 files
- Apply rate limiting to authentication endpointsin 48 of 648, across 24 files
- Configure security headersin 35 of 648, across 19 files
- Validate all inputsin 32 of 648, across 24 files
- Validate all external input at the system boundaryin 29 of 648, across 19 files
- Run containers as a non-root userin 28 of 648, across 15 files
- Use httponly secure samesite cookies for sessionsin 26 of 648, across 15 files
- Run dependency audits before every releasein 21 of 648, across 10 files
- Encode output to prevent cross-site scriptingin 21 of 648, across 11 files
- Copy dependencies before source codein 20 of 648, across 9 files
- Store secrets in environment variablesin 20 of 648, across 18 files
Said here and by no other author read
- get changed files via git diff
- use provided arguments to select target file
- evaluate changes against the security checklist
- flag newly added packages for vulnerabilities
- include severity, issue, impact, and fix
- end with an overall verdict
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.