agentleFS
mrveissmrveiss/AutoBot-AI/.claude/skills/secreview/SKILL.md

secreview

Skill39 starsChanged 19 days agoApache-2.0View on GitHub

Fast findings-first security review of a diff — emits a findings table within 3 tool calls, then verifies. Use when asked to security-review a diff, branch, uncommitted changes, or "check this for vulnerabilities". For deep multi-agent PR review use review-fleet instead; for whole-codebase audits use the security-auditor agent.

  • Reads credentials

1 other project uses a version of this.

Adopted by

Most recently taken up by

  • Other versions1 project uses a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 1

    1. rayketcham-lab/qn-claude-web★ 2same name

    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 repository14 other files it gives its agents.

The file

We split this skill into the rules it gives an agent

8 rules. About 0 are common, 3 are distinctive, and 5 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈3

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 5

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    One orientation call: Read the diff. Nothing else.

    line 14
  2. Distinctive:

    Findings table within 3 tool calls: No preamble, no full-file reads, no codebase greps before the table is on screen.

    line 15
  3. Distinctive:

    Verify after: Only once the table is printed, read supporting files to confirm, downgrade, or drop each finding.

    line 17
  4. Very specific:

    Never reorder these. A finding stated with CONFIDENCE: unverified and corrected in step 3 is useful.

    line 21
  5. Very specific:

    If the diff exceeds ~1500 lines, add --stat first and review the highest-risk files by name (auth, config, secrets, migrations, routers, …

    line 46
  6. Very specific:

    If the diff is genuinely clean, print the table header with — no findings — and go straight to the verdict.

    line 64
  7. Very specific:

    If the diff touches path validation, session/chat ownership, plugin loading, or secrets/credentials, read the matching section of …

    line 69
  8. Very specific:

    Keep the chat response to the table plus the verdict.

    line 132

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 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

Secreview — Findings Before Exploration

A diff-scoped security review that emits before it explores. Partial value delivered in seconds beats total value delivered in minutes — a review that is abandoned mid-exploration delivers nothing at all.

The Ordering Contract (non-negotiable)

  1. One orientation call. Read the diff. Nothing else.
  2. Findings table within 3 tool calls. No preamble, no full-file reads, no codebase greps before the table is on screen.
  3. Verify after. Only once the table is printed, read supporting files to confirm, downgrade, or drop each finding.
  4. Verdict last. BLOCK / APPROVE-WITH-NITS / APPROVE.

Never reorder these. A finding stated with CONFIDENCE: unverified and corrected in step 3 is useful; a perfectly-verified finding that never gets printed is not.

When NOT to use this skill

SituationUse instead
Unbounded review of the branch, thoroughness over speedbuilt-in /security-review
Deep, recall-biased review of an open PRreview-fleet (10 parallel finder + verifier agents)
Whole-codebase security auditsecurity-auditor agent
Syntax, imports, types, lint before mergepre-merge-validate
CI triage / PR merge cyclereview

This skill is the fast path. Reach for it when the answer is wanted now.

Step 1 — Orientation (ONE call)

# Pick whichever matches the ask; run exactly one.
git diff                                  # uncommitted changes
git diff --staged                         # staged changes
git diff origin/main...HEAD        # whole branch vs base
gh pr diff <number>                       # a specific PR

If the diff exceeds ~1500 lines, add --stat first and review the highest-risk files by name (auth, config, secrets, migrations, routers, middleware) — but still emit the table within the 3-call ceiling. Say explicitly which files were deferred; never let truncation read as "everything was covered".

Step 2 — Emit the findings table (before any other read)

| Sev | file:line | Issue | Fix |
|-----|-----------|-------|-----|
| HIGH | app/api/x.py:42 | Endpoint has no authz dependency | Add `Depends(require_role(...))` |

Severity: CRITICAL / HIGH / MEDIUM / LOW / NIT.

Mark anything not yet confirmed against source as (unverified) in the Issue cell. That flag is what makes early emission safe.

If the diff is genuinely clean, print the table header with — no findings — and go straight to the verdict. Do not pad it with speculation.

Review checklist

If the diff touches path validation, session/chat ownership, plugin loading, or secrets/credentials, read the matching section of docs/developer/THREAT_MODEL.md first — it carries the trust boundary, the canonical enforcement point, and the invariants for each, so the model is loaded instead of re-derived. It is one read, and it counts against the 3-call ceiling only when a listed subsystem is actually in the diff.

These categories have produced real hits in this repo — cover each one.

Authz & identity

  • Route added or changed without an auth dependency (@router.* with no Depends)
  • Hand-rolled role comparison instead of the canonical helper (is_admin_role())
  • Ownership check missing — can user A act on user B's resource?
  • WebSocket auth: token read before accept(), close code correct

Secrets & data exposure

  • Credentials, tokens, or keys written to disk, logs, or an error response
  • Secret compared with == instead of a constant-time / canonical verifier (verify_internal_api_key)
  • Internal IPs, hostnames, or filesystem paths leaking into outward artifacts
  • rsync --delete or similar without an .env exclusion

Injection & input

  • Unparameterised SQL, shell interpolation, template injection
  • Path traversal on user-supplied filenames
  • Deserialisation of untrusted input (pickle, yaml.load)

Concurrency & state

  • TOCTOU between a check and its use
  • Rate limiter or lease that can be bypassed by a second path to the same action
  • In-process singleton assumed global across workers

Refactor fallout — the highest-yield category historically

  • Renamed function/client with call sites left un-updated (grep the OLD name)
  • Method-name shadowing after a move
  • Changed return shape with callers still reading the old one
  • Fail-open default introduced where the old path failed closed

Step 3 — Verify

For each finding, read the file and its direct callers. Then update the row: promote, downgrade, or strike it. State what changed — a finding that survives verification is worth more than one that was never challenged.

For rename fallout specifically, grep the old identifier repo-wide; an AST or import check misses aliased imports and test monkeypatch targets.

Step 4 — Verdict

VERDICT: BLOCK | APPROVE-WITH-NITS | APPROVE
  • BLOCK — any CRITICAL, or a HIGH that survived verification
  • APPROVE-WITH-NITS — MEDIUM and below only
  • APPROVE — nothing found after verification

Follow-up

File a GitHub issue for every CRITICAL or HIGH that is out of scope for the current change — discovered problems are fixed in scope or filed, never dropped. In-scope findings get fixed in the same PR.

Keep the chat response to the table plus the verdict. If the review runs long, write the detail to docs/reports/secreview-<branch>.md and reply with the path.

Download now (ZIP)

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.