Security checklist
Skill LFTPadilla/agent-dev-kit/plugins/dev-skills/skills/security-checklist
A pattern → severity → fix checklist for reviewing security-sensitive code (auth, payments, user input, file uploads, webhooks). Use as the LLM-reasoning complement to a deterministic SAST scan — semgrep catches known patterns, this catches the contextual ones. Run on any diff touching a trust boundary.From its SKILL.md
npx -y skills add LFTPadilla/agent-dev-kit --skill security-checklistAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 1 stars1 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.
- runs commandsInstructs the agent to run 1 command, including `semgrep --config p/owasp-top-ten p/secrets`.
SKILL.md
2.5 KB, 528 tokens by cl100k_base, as published. Nobody here has run it
security-checklist — pattern review for trust boundaries
The reasoning layer of security review. Pair with the semgrep skill: semgrep
is deterministic (never misses a known pattern), this catches the contextual
issues a static rule can't see. Adapted from ECC (github.com/affaan-m/ECC), MIT
— see ATTRIBUTION.md.
Flag-on-sight table
| Pattern | Severity | Fix |
|---|---|---|
| Hardcoded secret / key / token | CRITICAL | process.env, rotate if committed |
| String-concatenated SQL | CRITICAL | Parameterized query / $1 placeholders |
| Shell command with user input | CRITICAL | execFile / arg arrays, never string interp |
| Plaintext password compare | CRITICAL | bcrypt.compare / argon2 |
| No auth check on protected route | CRITICAL | Auth middleware; verify per-route |
| Balance/quota check without lock | CRITICAL | SELECT ... FOR UPDATE in a transaction |
innerHTML = userInput | HIGH | textContent or DOMPurify |
fetch(userProvidedUrl) (SSRF) | HIGH | Allowlist hosts; block internal IPs |
| Cross-tenant / cross-user access | HIGH | Scope every query by owner id |
| Error detail leaked to client | MEDIUM | Generic message out, detail to logs only |
| Secret / PII in logs or Sentry | MEDIUM | Redact before logging |
| No rate limit on public endpoint | HIGH | Throttle (per-IP / per-user) |
Process
- Scope to the diff at a trust boundary (auth, payments, input, uploads, webhooks).
- Walk the table; for each hit cite
file:line, the trigger, and the fix. - Cross-check with
semgrep --config p/owasp-top-ten p/secrets— deterministic backstop. - Backend-first: a security gap fixed only in the frontend is still open — flag until the server enforces it.
Skip these (common false positives)
- Vars in
.env.example— placeholders, not secrets. - Test credentials clearly inside test files.
- Keys meant to be public (publishable client keys).
- SHA256/MD5 used for checksums, not passwords.
Math.random()in non-crypto contexts (animation, jitter, sampling).
Verify context before flagging. A finding without a concrete trigger is noise.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.