agentleFS
eugenelimeugenelim/llm-wiki-kit/.claude/skills/security-checklists/SKILL.md

security-checklists

Skill12 starsChanged 5 months agoMITView on GitHub

Progressive-disclosure security-depth modules for the security-reviewer. Holds ten boundary-keyed checklists (access-control, authn-session, injection, path-and-file, secrets-and-crypto, outbound-ssrf, supply-chain, config-misconfig, exceptional-conditions, llm-agent) as references/, each anchored on a current standard (OWASP Top 10:2025, ASVS 5.0, API Security Top 10:2023, Proactive Controls 2024, CWE Top 25, OWASP LLM Top 10:2025). The work-loop's orchestrator loads only the boundary-matching modules and inlines them into the security-reviewer's brief; the subagent never self-discovers this skill. Not a reviewer prompt itself — it is the depth library the reviewer reasons from.

We split this skill into the rules it gives an agent

1 rule. About 0 are common, 1 is distinctive, and 0 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈1

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Every check in every module is tagged so the reviewer knows who owns it:

    line 39

≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Skill: security-checklists

This skill is the depth library behind the security-reviewer agent. The reviewer's body carries the universal method (the three-bucket delegation rule, load-context-first, the always-on STRIDE + LINDDUN open pass, the established-helper-bypass meta-check, the severity rubric, the honest-limits footer, the output format). The shape-specific depth — what to actually check at each trust boundary — lives here, in ten references/<module>.md modules, so the agent prompt stays lean and the depth scales without bloat.

How it loads (orchestrator-driven, not self-discovered)

The orchestrator drives loading; the subagent does not. There is no mechanism to force a subagent to invoke a skill, skill discovery is model-invoked and adapter-variable, and the security-reviewer's tools: list does not even include a Skill tool. So depth must not depend on the reviewer finding this library itself.

Concretely, at the work-loop's security-review step (and at the pre-EXECUTE spec-stage pass), the orchestrator:

  1. Detects which trust boundaries the diff or spec crosses.
  2. Loads only the matching modules via the deterministic boundary→module routing table in work-loop/SKILL.md.
  3. Inlines the selected modules' content into the security-reviewer subagent's brief — so the reviewer receives a focused ~30-item checklist as prompt text, never a path to resolve.

Where an adapter does support subagent skill auto-discovery, that is a redundant convenience layered on top — never the load-bearing mechanism.

The three-bucket delegation legend

Every check in every module is tagged so the reviewer knows who owns it:

  • tool — scanner-owned. Confirm the scanner is wired; don't re-check by hand. Detect the ecosystem's scanner rather than assuming one: npm audit / pip-audit / govulncheck / cargo audit / bundler-audit, or Snyk / Semgrep / CodeQL. If the delegated scanner is absent, do not silently skip (Tier-1 declare/detect/fail-clean): either reason the class best-effort and flag it degraded: no scanner, or state the gap explicitly ("class X is normally scanner-owned; none detected → wire one or accept the gap"). A silent skip is the worst outcome — it looks like coverage.
  • hybrid — the scanner finds the flow; you judge the fix. Taint analysis can point at a sink, but whether the escaping, the confinement, or the safe-loader choice is correct is reasoning work.
  • reason — reviewer-only. Logic-flaw access control, fail-open vs fail-closed, confused-deputy, privacy exposure — the classes scanners structurally cannot see. The highest-value findings live here.

Established-helper bypass (the repo-aware meta-check)

For each boundary the change crosses, the most actionable real-world finding is "this code rolled its own instead of the repo's blessed helper." Each module names, in generic terms, the kind of helper that boundary usually has. To resolve the repo's actual helper, the reviewer consults, in precedence: the AGENTS.md "blessed security tools/helpers" list → CONVENTIONS.md and any context other packs install (steering files, etc.) → inference fallback (grep the codebase for the de-facto helper). Flag code that re-implements a boundary the repo already has a sanctioned helper for. This skill carries the mechanism only — never any one repo's specific helper names.

Module index

ModuleBoundaryPrimary anchor
access-controlauthz / object- & function-level accessOWASP A01:2025 + API Security Top 10:2023 (BOLA/BFLA)
authn-sessionauthentication, session, tokensOWASP A07:2025 + ASVS 5.0 V6/V7
injectionuntrusted input → interpreter / deserializerOWASP A05:2025 (+ A08 deserialization)
path-and-filefilesystem paths, uploads, archive extractionCWE-22 / CWE-73 + ASVS 5.0 V12
secrets-and-cryptosecrets, keys, hashing, signing, randomnessOWASP A04:2025 + ASVS 5.0 V11
outbound-ssrfoutbound HTTP/DNS, URL fetch, webhooksOWASP A01:2025 (SSRF) + ASVS 5.0 V13
supply-chaindependencies, lockfiles, build trustOWASP A03:2025 (new)
config-misconfigCORS, IAM, IaC, server configOWASP A02:2025
exceptional-conditionserror paths, retries, fail-openOWASP A10:2025 (new) (+ A09 logging)
llm-agentprompts, tool exposure, MCP, model outputOWASP LLM Top 10:2025

Threat modeling (STRIDE + LINDDUN for privacy) and design-time Insecure Design (A06 / Proactive Controls 2024) are not runtime modules: STRIDE + LINDDUN ride the always-on open pass in the agent body, and Insecure Design is realized by the spec-stage secure-design mode. Each module below carries a Spec-stage section so the same depth backs the design-time pass in its proactive-control framing.

Download now (ZIP)

  • Other versions2 projects use a version of this.

    Word for word · 0

    None found.

    Edited · 2

    1. eugenelim/agent-ready-repo★ 2751% same
    2. phanijapps/memex★ 052% same

    Wrote their own version · 0

    None found.

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • In this repository8 other files it gives its agents.

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.