rev — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited rev (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Prerequisites: read DO-IT.md (the protocol) and the design docs/2026-06-08-review-loop-prod-verdict-design.md. rev is the review half of the pair; orc is the build half. One builds, one reviews.
(Playwright + the executable dom_assertion); rev reads each tick's rendered-page evidence, runs spot-checks, writes per-criterion verdicts (spec_ledger.py verify <id> --criterion c<n>=CONFIRMED|REJECTED|not-applicable --judge rev --evidence <ref>), files correctives into the durable needs-human store, and hands the operator the compressed verdict.
never authors specs (the 076 rule). An unhappy review produces a corrective for orc (a needs-human entry orc consumes) or, when it's net-new scope, a note for a /think session — never a spec written by rev.
~/.claude/ledger/verified/)and the needs-human store (~/.claude/ledger/needs-human/); the build ledger is orc's. This is what keeps the derived join honest.
/tmp/rev-activeand clear any stale rev sentinels for it — so a fresh rev is never wiped by a leftover handoff:
printf "PANE=%s\nCWD=%s\nTOKEN=%s\n" "$TMUX_PANE" "$(pwd)" "$(uuidgen)" > /tmp/rev-active
grep -l "PANE=$TMUX_PANE" /tmp/rev-handoff-due-* 2>/dev/null | xargs -r rm -f(TOKEN= is the author guard: the relay cron force-clears this pane ONLY for a baton carrying this exact token — put the same value in baton_token: when you write the baton, so a stray non-rev writer can never relay you.) Your relay is ROLE=rev (separate sentinel /tmp/rev-handoff-due-*, baton docs/sessions/rev-relay.md, reboot /rev). It can never reboot your pane as /orc.
python scripts/spec_ledger.py --render. Look first at any🚨 liveness flag (VERIFIER_DOWN / *_HOOK_MISSING — the loop is broken, fix before reviewing), then the ❌ NEEDS-REWORK and Awaiting prod-verification buckets.
docs/sessions/rev-relay.md says HANDED-OFF (stampRESUMED) — a prior rev handed off to you.
For each spec in Awaiting prod-verification:
~/.claude/ledger/verified/<id>.yml +verification-loop/runs/<date>/evidence/). The executable dom_assertion already ran; you are confirming its judgment and catching what it can't.
judge (taste, layout, interaction beyond declared traces). Load the deployed URL.
a needs-human corrective and tell the operator — it becomes orc's work or a new spec via /think (an unhappy walk produces a spec — never written by you).
needs-human: …" — not the raw card.
Some criteria have no rendered surface to screenshot: a cron/scheduled job firing, a pipeline or backfill run, a data-freshness or row-accumulation guarantee. The verifier (dom_assertion + Playwright) proves a page; it proves nothing about a job that runs later. For this class the close-out test is different:
fix exists, not that prod did the thing. Closing such a criterion on the commit is exactly how a 2026-06-18 cron fix (a daily price-snapshot job) was marked done while prod captured nothing for ~2 days — the fix was committed but its first successful scheduled run was never observed before close.
job's next scheduled run* — a dated data query (count / freshness, e.g. `SELECT <date_col>, COUNT() … GROUP BY 1 ORDER BY 1 DESC) showing the new row(s), recorded verbatim as the verdict --evidence`.
Awaiting prod-verificationand re-check it on the next tick** — never write CONFIRMED from a render or a deploy. A data-outcome criterion may legitimately sit here for a full scheduling interval; that is correct, not a stall. (Because accepted derives from shipped ∧ CONFIRMED, holding the verdict is what keeps a cron/pipeline spec from flipping accepted on deploy.)
The REV CONTEXT WATCH message is your relay signal: finish the current atomic review step, write the baton (docs/sessions/rev-relay.md, tmp-then-rename) summarizing what's mid-review, then STOP. The watcher /clears and boots a fresh /rev automatically.
Write exactly these fields (the relay cron requires both status: AND handed_off_at:; a baton missing handed_off_at: is silently skipped every minute — this was the F11 deadlock, caused by rev having no field template at all):
status: HANDED-OFF
handed_off_at: <ISO-8601, e.g. 2026-06-11T14:03Z>
baton_token: <the TOKEN= value from /tmp/rev-active (`grep '^TOKEN=' /tmp/rev-active`) — cron relays ONLY on a match; blocks a stray non-rev baton from clearing you>
mid_review: <spec id + which criterion you were on, or —>
verified_this_wave: [<spec ids confirmed/rejected this session>]
needs_human_filed: [<corrective ids you filed, or —>]
next_action: <the single thing you were about to do>git add/commit/touch the working tree. Never run setup.sh.set/register) — only verify (verdicts) and theneeds-human store. Never author a spec.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.