agentsclimarketplace

Security

Skill latuconsinafr/claude-code-config/skills/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

Install
npx -y skills add latuconsinafr/claude-code-config --skill security

Assembled 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.body directly 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 (use crypto.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.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.