agentsclimarketplace

Ratchet audit

Skill afrizzal/ratchet/skills/ratchet-audit

Deep multi-agent audit of the current codebase that ends in an executable artifact — ratchet/AUDIT.md (understanding + findings) and ratchet/BACKLOG.md (prioritized items with evidence, minimal specs, and runnable acceptance criteria, in ratchet:v1 format). Use when the user says "audit this repo", "ratchet audit", "review the codebase and give me a backlog", or before pointing /ratchet-loop at a project for the first time. Read-only: changes no source files.From its SKILL.md

Install
npx -y skills add afrizzal/ratchet --skill ratchet-audit

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 6 stars6 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

9.6 KB, ~2.3k tokens by cl100k_base, as published. Nobody here has run it

Ratchet Audit — from codebase to executable backlog

Your output is not a report card; it is work orders. Every finding must survive verification down to file:line and arrive with acceptance criteria a later session can actually run. A finding that can't be turned into a checkable item belongs in AUDIT.md's notes, not in the backlog.

Invocation

/ratchet-audit [focus] [--depth quick|standard|deep]
  • focus — optional: security, performance, tests, data, frontend, or free text ("multi-tenant isolation"). Default: full sweep.
  • --depthquick (no subagents, top risks only), standard (default), deep (more agents, adversarial verification pass).

Phase 1 — Fingerprint the project (yourself, fast)

  1. Read the manifests and configs: package.json / pyproject.toml / go.mod / Cargo.toml, lockfiles, CI workflows, Dockerfiles, env examples, top-level README/CLAUDE.md/CONTRIBUTING.
  2. Determine: stack, entry points, how it's tested (capture the exact commands — they become Global checks), how it's deployed, and the domain axes that matter (multi-tenant? auth? payments? background jobs?).
  3. Baseline reality check (mandatory). Run each candidate Global check cold — fresh clone semantics: no incremental cache, no dev-server-generated types, the way CI runs it. A check that passes warm but fails cold is a non-deterministic check and is worse than useless as a gate (the loop will read a false green). When you find one: (a) pin the Global check to its deterministic form (e.g. tsc --noEmit --incremental false, not tsc --noEmit), and (b) if the cold run is red, that is not a "skip" — it is your first backlog item, tagged [BASELINE], because the loop cannot ratchet forward from a red baseline. Never emit a backlog whose own Global checks are red with no [BASELINE] item to fix them.
  4. Pick audit dimensions by project shape — typical for a web app: data layer/schema · API surface/authz · business logic/duplication/fragility · tests/CI/ops · frontend/UX debt. A CLI or library gets different cuts (public API, error handling, packaging, docs). Don't force irrelevant dimensions.

Phase 2 — Fan out (parallel subagents; skip at --depth quick)

Launch one read-only exploration agent per dimension, in parallel. Each agent's brief must demand:

  • Facts with file:line citations, never file dumps.
  • Explicit separation of observed vs inferred.
  • A ranked list of concrete defects/risks for its dimension, each with: what, where, why it matters, and how one would prove it's fixed (this becomes the acceptance criteria seed).
  • Counting where it strengthens claims (route totals, models without a tenant column, dead files with zero importers).

Prompts must be self-contained (agents don't see your conversation): include the repo path, the stack fingerprint from Phase 1, and the dimension's specific questions.

Phase 3 — Verify before you write

For every candidate finding: open the cited file yourself and confirm the evidence holds today. At --depth deep, additionally spawn independent verification agents prompted to refute each HIGH/MED finding (each verifier gets only the claim + repo path, not the finder's reasoning); a finding survives only if the refuter fails. Drop or downgrade anything you cannot confirm — the loop downstream will trust your evidence literally, so unverified findings poison everything after them. Severity honestly: HIGH = exploitable/corrupting/money-losing now · MED = will bite under a plausible condition · LOW = debt and drift. Never inflate.

Phase 4 — Write the two artifacts

Create the ratchet/ directory (respect an existing one: append/update, never clobber a BACKLOG.md that has Ledger progress — new items go under new IDs).

If the existing backlog is v2 (marker <!-- ratchet:v2 -->; items carry Lane:, state lives in lanes/<lane>.md): append items with a Lane: field — pick the declared lane whose scope contains the item's Evidence/Spec paths; dependency-adding or shared-path items go to the first-declared default lane; if no assignment is defensible, the finding goes to AUDIT.md's "needs definition" list instead. Write each new item's todo ledger row into its lane's file, never emit ## Ledger/## Journal sections into a v2 backlog, and touch nothing while a lane run is open (a lane journal whose last run marker is run started — respect the format's human write windows; if every lane is open, put the items in AUDIT.md and say so). Fresh emission stays v1 below — v2 is opt-in via /ratchet-backlog migrate or an explicit user ask.

ratchet/AUDIT.md — the context: what the project is, architecture, hidden assumptions, what's strong and must be preserved, what's fragile, what remains unclear (say exactly what you couldn't verify — never bluff).

ratchet/BACKLOG.md — a fresh backlog is always ratchet:v1 (v2's parallel lanes are opt-in, via /ratchet-backlog migrate or an explicit user ask; appending to an existing v2 file follows the rule above). The skeleton you must emit (full spec: docs/backlog-format.md in the ratchet repo, github.com/afrizzal/ratchet):

# BACKLOG — <project or scope name>
<!-- ratchet:v1 -->

## Global checks
- `<verify command, deterministic form>`

## Items

### SEC-01 — <title> [P0]
- Tags: —                  ← only [RISKY] [OPS] [USER-DECISION] [BASELINE], or —
- Depends: —
- Evidence: path:line — <verified observation>
- Spec: <minimal change, one commit>
- Acceptance:
  - [ ] `<runnable command>` <expected result>

## Ledger
| ID | Status | Attempts | Commit | Note |
|---|---|---|---|---|
| SEC-01 | todo | 0 | — | — |

## Journal

Field rules:

  • ## Global checks = the project's real verify commands captured in Phase 1.
  • Items sized to one commit each — split anything bigger.
  • ID prefixes by category (SEC-, PERF-, TEST-, DX-, DOC-...), ordered by priority.
  • Evidence = the verified file:line — observation.
  • Spec = the minimal change, written so a smaller model can execute it without creativity.
  • Acceptance = runnable commands + observable behaviors. If you can't write a checkable criterion, the item isn't ready — move it to AUDIT.md's "needs definition" list instead.
  • Tag honestly, using only the canonical gate vocabulary in the Tags: field: [RISKY] (migration/destructive/irreversible/wide blast radius), [OPS] (needs credentials/infra), [USER-DECISION] (product/policy judgment), [BASELINE] (fixes a red baseline). Normalize — subagents return free-form tags (auth, idor, perf); those are descriptions, not gates. Map each to a bracket tag or drop it. A finding tagged privilege-escalation but written into the file without [RISKY] reads as far safer than it is — this is the single most dangerous authoring mistake. When a finding touches auth, tenant boundaries, payments, migrations, secrets, deletion, or GL/money and is HIGH/P0, prefer the gate even if it is locally testable — a cheap executor implementing it wrong corrupts data that tests may not catch. (Ungated sensitive items are not defenseless — the loop's high-stakes gate still demands explicit --only routing plus --verify fresh before executing them — but the bracket tag is what forces a human review first, and if you have not seen the acceptance criteria pass in a real run, the tag is the right call.)
  • Full Ledger (all todo, attempts 0) + empty Journal.

Phase 5 — Report

Summarize to the user: top findings by severity (plain language, with the one-sentence exploit/failure story each), what's strong, item count by priority, and the handoff line: review/edit ratchet/BACKLOG.md, then run /ratchet-recommend for a routed plan (who does what, in what order), or /ratchet-loop to start executing.

Rules

  • Read-only. You change no source files; your only writes are the two artifacts.
  • Every backlog item traces to verified evidence. No "consider improving X" items.
  • Don't drown the signal: a 20-item backlog that's all real beats 60 items of filler. Long-tail debt goes in AUDIT.md prose.
  • If the repo already has conventions docs (CLAUDE.md, CONTRIBUTING), audit against them and cite them in specs.

Failure modes to avoid

  • Unverified findings copied from agent summaries straight into items.
  • Acceptance criteria the executor can't run ("verify in production").
  • Mega-items ("refactor the auth system") — unshippable in one commit, guaranteed to block.
  • Overwriting a backlog that has Ledger history.
  • Generic advice untethered to this codebase.
  • Emitting a backlog with a red or non-deterministic baseline and no [BASELINE] item — the loop stops on the first preflight and the whole artifact is dead on arrival.
  • Free-form tags in the Tags: field — the loop only recognizes the four bracket gates; anything else reads as ungated.
  • Trusting subagent summaries verbatim. Finders overclaim (this field-test's currency finding was MED until a verifier proved the harm path didn't exist yet → LOW) and mis-count (a brief said "114 models"; the schema had 76). Open the cited line yourself; at --depth deep, the refute pass is what catches inflation.

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Gives 0 of the 12 instructions most audit compliance skills give in ~2.3k tokens

Counted across 960 of the 1,589 authors here whose files we hold, read 2026-09-06

  • Read product marketing context before asking questionsin 29 of 960, across 11 files
  • Rank findings by severityin 29 of 960, across 22 files
  • Generate audit reportin 22 of 960
  • Run the audit scriptin 20 of 960, across 19 files
  • Generate a prioritized action plan reportin 19 of 960, across 11 files
  • Ensure one H1 per pagein 15 of 960, across 5 files
  • Ensure sitemap exists and is accessiblein 14 of 960, across 4 files
  • Verify alt text on all imagesin 12 of 960, across 3 files
  • Determine the audit scope before startingin 12 of 960, across 4 files
  • Verify important pages allowed in robots.txtin 11 of 960, across 2 files
  • Detect business type from homepage signalsin 11 of 960, across 7 files
  • Delegate specialized tasks to subagentsin 11 of 960, across 7 files

Said here and by no other author read

  • Run each candidate Global check cold.
  • Pin the Global check to its deterministic form.
  • Open the cited file yourself and confirm the evidence holds.
  • Create the ratchet directory.
  • Append or update existing backlog never clobber.
  • Emit fresh backlog as ratchet:v1.

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.

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.