One pass, in the calling agent's own context — no sub-agent fan-out. It keeps token use low while preserving the review discipline that matters. 呼び出したエージェント自身のコンテキストで 1 パス監査。サブエージェントの fan-out なし。トークン消費を抑えながら、肝心のレビュー規律を保ちます。
For everyday "before I say done" checks. For release gates and high-risk changes, step up to the rigorous tier, review-audit-pro.
日常の「done と言う前」のチェックに。リリース判定や高リスク変更には、徹底ティア review-audit-pro へ。
dualform — 矛盾をカタチに。contradiction, given form.
§ The problem § 課題
Ask an AI to "review this" and you can get a plausible PASS that skipped axes, cited no evidence, and never ran the tests. review-audit is the everyday, lightweight check designed to stop a vibes-based PASS from being reported as audited.
AI に「レビューして」と頼むと、それらしい合格が返ることがあります。実際は一部しか見ていない、根拠が無い、テストを走らせていない —— それでも「問題ありません」と言ってしまう。review-audit は、その「雰囲気の合格」を監査済として出さないように設計した、毎日使える軽量チェックです。
| Moment場面 | A typical "review this"ふつうの「レビューして」 | With /review-audit/review-audit を使うと |
|---|---|---|
| Coverageカバレッジ | silent gaps — you can't tell what was skipped黙った隙間 —— 何を飛ばしたか分からない | every axis reports audited / partial / not-audited / n-a各観点が 監査済 / 部分 / 未監査 / 対象外 を報告 |
| Evidence根拠 | "looks fine" with nothing to check「大丈夫そう」、確かめる術なし | commands, grep, file:line — or the axis isn't "audited"コマンド・grep・file:line —— なければ「監査済」にしない |
| Testsテスト | assumed to pass, never run走らせず「通るはず」 | actually run — only the exit code counts実際に実行 —— 証拠は exit code だけ |
| The tree作業ツリー | may quietly edit while "reviewing"「レビュー中」に黙って書き換わる恐れ | read-only — proven untouched by before/after checksumread-only —— 前後の checksum で無傷を証明 |
§ How it works § 仕組み
The target is taken as a read-only snapshot. The calling agent audits the six axes itself in a single pass, re-checks each finding and drops the unprovable, then reports a coverage table and a verdict — PASS, FAIL, or INCOMPLETE. 対象は read-only スナップショットとして受け取ります。呼び出したエージェント自身が 6 観点を 1 パスで監査し、各 finding を再点検して証明できないものは外し、カバレッジ表と判定 —— PASS / FAIL / INCOMPLETE —— を出します。
§ The six axes § 6つの観点
Logic errors and boundary conditions.ロジックの誤り・境界条件。correctness / bugs
Built-but-never-called code, dead code.作ったが呼ばれない・dead code。wiring — built-but-never-called, dead code
Input, auth, and handling of secrets.入力・認証・秘密の扱い。security
Whether the tests actually bite.テストが本当に効いているか。test efficacy
Does it match the spec.仕様どおりか。spec compliance
Actually run the tests / build.テスト/ビルドを実際に走らせる。regression — actually run tests/build
Every axis reports audited / partial / not-audited / n-a. An unexamined axis can never be part of a PASS. 各観点は「監査済 / 部分 / 未監査 / 対象外」を報告します。調べていない観点が PASS に混ざることはありません。
§ The discipline § 核となる規律
Only an axis you can ground in evidence — a command, a grep, a file:line — counts as "audited".根拠(コマンド・grep・file:line)を示せた観点だけ「監査済」とします。
"I didn't check this" is a first-class output, not a silent gap.「調べなかった」は黙った隙間ではなく、一級の出力です。
It proposes fixes but does not apply them. A before/after checksum checks that target source files stayed unchanged.修正案は出しますが適用しません。前後の checksum で、対象ソースに変更がないことを確認します。
Regression needs a real run with an exit code; wiring needs concrete grep or file:line evidence. "Looks fine" is not enough.回帰には実走コマンドと exit code、配線には grep や file:line の具体的な根拠が必要です。「大丈夫そう」では PASS にしません。
§ When to escalate § いつ pro へ上げるか
review-audit is deliberately lightweight. When one pass isn't enough, it escalates rather than bloating itself, and tells you in its own output when to move to review-audit-pro — for release and publishing, high-risk or large-surface changes, or when you need per-run proof of detection power.
review-audit は意図的に軽量にしています。1 パスで足りない時は、自分を肥大化させるのではなく エスカレーション します。自分の出力の中で、いつ review-audit-pro(リリース/公開・高リスク・大規模・検出力の per-run 実証が要るとき)に上げるべきかを伝えます。
This tier carries no benchmark. One-pass detection is model-dependent and lighter than pro. If you need per-run proof of detection power or fresh-context adversarial verification, use pro.
このティアは ベンチマークを持ちません。1 パスの検出はモデル依存で、pro より軽い。検出力の per-run 実証や fresh-context の敵対検証が必要なら、pro を使ってください。
§ Install & use § インストール / 使い方
The skill drops into Claude Code. Run /review-audit [target], or call it before you declare a non-trivial change "done".
skill を Claude Code に置くだけ。/review-audit [対象] を実行、または non-trivial な変更を done と宣言する前に呼びます。
# Clone, then copy the skill into Claude Codeclone して、Claude Code の skills に置く git clone https://github.com/dualform-labs/review-audit.git cp -r review-audit/skills/review-audit ~/.claude/skills/ # Then, in Claude Code:あとは Claude Code で: /review-audit [target]
skills/review-audit/config.yml (auto / ja / en). Code, commands, and file:line are kept in English. License: Apache-2.0.
出力言語は skills/review-audit/config.yml(auto / ja / en)で切替。コード・コマンド・file:line は英語で出します。ライセンス:Apache-2.0。