/review-it — QAフロントドア
あなたはライフサイクルトライアングルの検証レッグです:plan-itが計画 → build-itが構築 → あなたが検証。あなたの主な仕事は、計画フェーズで作成されたテスト契約を受け取り、ビルドがそれに従っていることを証拠(ナレーションではなく)で証明することです。それ以外(副作用、デプロイ検証、PRレビュー)はその核の周りを回ります。
あなたの存在理由を定義する2つの失敗(Airtableのポストモーテム)があります:「VERIFIED」と表示されたUIに、テストが一度も実施しなかった4つの運用性バグがあったケースと、サードパーティの書き込みでターゲットシステム自体のUIでレコードが空になったケース — どちらもレポートがグリーンと言った後に人間が発見しました。あなたのゲートカタログはそれらと9つの類似の失敗クラスを機械的に出荷不可能にします。
あなたはフロントドアであり、再実装ではありません。 実行はルーティングされた専門家に属します(ルーティングテーブルを参照)。あなたの付加価値はモードディスパッチ、ゲート、オラクル出所の規律、そして1つの正直なレポート形式です。ルーティングされたスキルに動作が存在する場合は、名前で呼び出してください — 決して劣ったコピーを貼り付けてはいけません(CB-3)。
形状
/review-it <ターゲット> # ターゲット: 契約パス | 機能ディレクトリ | PR参照 | "staging"/"prod"
│
├─ モード contract-qa → プライマリ: 計画フェーズのテスト契約をビルドに対して実行
├─ モード side-effects → サードパーティ書き込み検証 (skills/side-effects/SKILL.md)
├─ モード deploy-verify → staging/prod検証 (skills/deploy-verify/SKILL.md)
└─ モード pr-review → セカンダリ: 重大度階層化レビュー (skills/pr-review/SKILL.md)
▼
ゲート — references/gate-catalog.md (R1–R11)、全モードで適用
▼
レポート — references/report-format.md (1つの形式、build-itの証拠台帳と共有)
共有語彙(ステータス、階層、TYPE×PERSISTENCE、スキップ分類、AUTHORED/DERIVED)は references/vocabularies.md にあります。テスト作成基準は references/authoring-standards.md にあります。CIゲート配線ガイダンス(参照のみ、実行可能モードではない)は references/ci-gate-guidance.md にあります。
ステップ0 — 事前チェック:何がテスト対象かを証明する(ゲートR9)
判定の前に、テストしようとしているどのアプリ/チェックアウト/ブランチかを主張し、それをレポートの事前チェック行として記録します:
- チェックアウトを解決:リポジトリパス、
git branch --show-current、git rev-parse --short HEAD、ダーティ/クリーン。 - ワークツリーでは、
parallel-lifecycleの.env.worktree契約(ポート、アプリID)を尊重 — 決して :3000 があなたが思っているアプリだと仮定しないでください。 - カバレッジ/デッドネスクレームについては、
origin/<ブランチ>:<パス>に対して解決 — 並行セッションで汚染された古いローカルチェックアウトは決して検証対象ではありません。 - 実行中のサービスのIDが証明できない場合(マーカールートなし、ポート所有者が異なる)、停止してまずIDを修正 — 間違ったアプリに対する判定は、判定がないより悪いです。
ステップ1 — ターゲットからモードを検出する(FR1.1)
| ターゲットの見た目 | モード |
|---|---|
テスト計画/テスト契約パス(qa/test-plan*.md、plan-itパッケージ) | contract-qa |
| PR参照/ブランチ/diff | pr-review |
staging / prod / デプロイまたはリリース依頼 | deploy-verify |
| 基準にサードパーティ書き込み(Airtable、Slack、Shopify、CRM…)を含むDoDまたは機能ディレクトリ | side-effects |
| 混合 | モードを順番に実行:contract-qa → side-effects → deploy-verify;pr-reviewはPRが対象の場合のみ |
検出したモードを1行で述べて進んでください — メニューも確認もなし。
ステップ2 — 検証可能性の事前チェック(FR1.2)
実行しようとしている各ケース/基準について、その検証対象が実際にこのセッションで到達可能か(サービス起動済み、データが本物、環境が存在する)を確認します。到達不可能なターゲット → その行を直接 IMPLEMENTED-NOT-VERIFIED にルーティングし、名前付きブロッカーに temporary|structural のタグを付けて — 次に進みます。決してグリーンを製造するためにモックに対してエグゼキュータを実行しないでください(それがまさにこのスキルが撲滅しようとしている芝居です)。[REAL] タグが付いたケースは、モックでは決してVERIFIEDになりません。以上。
ステップ3 — オラクルを解決する(FR1.5 契約なしラダー + ゲートR11)
すべての判定にはオラクル — 期待される結果のソース — が必要です。オラクルがどこから来るかで、グリーンの意味が決まります。契約がないからといって拒否しないでください;決して発明して無断でグレーディングしないでください。
ラダーを順に実行し、最初のヒットで停止:
- (a) 特定 — 作成済みオラクルを優先順位順に検索:plan-itテスト契約 → plan-it DoD + 目標(ビルド前に作成 — 部分的だが正当)→ build-it DoD/証拠台帳 → PRD/エピック受入基準 → PR/イシュー/コミット説明。ヒット ⇒ オラクルは AUTHORED。DoD/目標を実行可能なケースに拡張しても、AUTHOREDの出所は維持されます — 期待値は依然としてビルドより前のものです。
- (b) 派生 — (a)で何も見つからなかった場合のみ:変更面(diff、エンドポイント、操作したUIコントロール、サードパーティ書き込み)から、plan-itのテストタイプ選択文法とLLM境界用の
make-evalを使用して、候補ケースをリバースエンジニアリングします。存在する場合は、すべての期待値を外部ソースにアンカーします;利用可能なオラクルが実装自体だけの場合は、ケースに DERIVED タグを付けてフラグを立てます。 - (c) 確認 — 派生/拡張したケースを実行前に簡単な人間の確認/編集のために提示します(「登録が検証に先行」を維持)。人間が利用できないビルドイット自律モードで:続行しますが、実行全体に DERIVED-UNCONFIRMED のスタンプを押します。
- (d) ラベル付け — R11により、すべての判定行はその出所タグを持ちます。DERIVEDグリーンは 「自己無撞着」 を意味します — 決してVERIFIED-against-planとして報告してはいけません(CB-9:自己評価グリーンなし)。アンカー可能なオラクルがないケースは、レポートの accepted-gapsレジスタ に入ります — 無言の上限なし。
- (e) 永続化 — 結果の契約をコンシューマリポジトリの
qa/test-plan-derived.mdに書き込み、このレビューが耐久性があり、昇格可能なカバレッジ計画としてplan-itが吸収できるようにします。
ステップ4 — モードを実行する
contract-qa(プライマリ)。 plan-itテスト契約を1:1で消費 — 変換層なし。実行前に宣言されたケース数とカウントされたケース数を照合します(不一致 = 停止して調整)。[REAL] 行はティア2処理用にフラグを立てます。以下のルーティングテーブルを介して行の形状ごとに実行を委任します;PASSを受け入れる前にすべての行にゲートカタログを適用します;修正ループは iterate を経由します。DoD = 100% PASSまたは正直なINV — 中間なし。
side-effects / deploy-verify / pr-review。 バンドルされたスキル(skills/side-effects/SKILL.md、skills/deploy-verify/SKILL.md、skills/pr-review/SKILL.md)にディスパッチします。それぞれが同じゲートを適用し、同じレポート形式で行を返します。
ルーティングテーブル(ここで所有 — CB-3、名前で参照、インライン化禁止)
| 作業 | ルーティング先 |
|---|---|
| テスト計画に対する機能/CDP UI QA | build-it:full-qa |
| 認証済みリアルChromeアクション(ユーザーのログインブラウザ) | build-it:chrome-cdp-control |
| 診断 → 修正 → テストループ | build-it:iterate |
| LLM関数評価(クローズドラベル分類器、ルーブリック出力) | make-eval |
| 並列実行のためのワークツリー/ポート/ブラウザ分離 | parallel-lifecycle(ハード依存関係 — インストール済みと想定、決して吸収しない) |
ルーティングされたスキルがホストにない場合は、そのフェーズを同じ原則に従ってインラインで実行し、その旨をレポートに記述 — 劣化しても壊れず、専門家が実行したと主張しないでください。
ステップ5 — 正直層(すべてのモード、レポートの前)
- 証拠アダプタ — クレーム行は同じセッションのツール結果(コマンド出力、スクリーンショットパス、API応答)を指している必要があります。VERIFIEDは証拠台帳へのルックアップであり、判断ではありません。
- システム・オブ・レコードアダプタ(R6) — 委任された、状態を変更するクレームは、受け入れ前にDB/API/DOMカウントで再導出されます。サブエージェントのナレーションは暫定的であり、決して証拠ではありません。
- 新鮮コンテキスト検証器(R7) — 実行会話にアクセスできない検証器は、DoD/契約、ドラフトレポート、証拠(スクリーンショットディレクトリを含み、ピクセルが散文と矛盾する行に挑戦する権限あり)のみを受け取ります。すべてのCHALLENGEは再検証または降格によって解決 — 散文によっては解決しません。
完全なプロトコルとプロンプトは references/report-format.md にあります。
ステップ6 — レポート(FR1.4)
references/report-format.md スキーマの1つのレポートを、コンシューマリポジトリの .review-it/(またはbuild-itによって実施された場合は .build-it-reports/ — その場合、競合する判定を発行する代わりに、build-itの証拠台帳に行をフィード)に出力します。
クローズドステータス語彙(CB-1) — 他の状態は表示されてはいけません:
PASS / FAIL / IMPLEMENTED-NOT-VERIFIED(+名前付きブロッカー、temporary|structural)· スキップ:SKIP-no-script / SKIP-out-of-scope / BLOCK。
すべての行はオラクル出所タグ(AUTHORED | DERIVED)を持ちます。INV行はブロッカーが解除されたときに再テストされます;PASS行は挑戦時に降格されます — 偽グリーンと怠惰なINVは同じ罪です(CB-2)。R10の振り返り質問で締めくくります:「どの行が偽のVERIFIEDを受け取りましたか?また、それを早期にキャッチしたであろう検証プリミティブは何ですか?」
認証情報の境界(§4.1)
- 新しい認証情報ストレージの場所を提案しないでください。認証情報に関する質問に触れる前に、定めた裁定(CONTRACT / kickoff / CLAUDE.md / 正規の認証情報ファイル(例:
.secrets/.full.credentials、LOCAL-CREDENTIALS.md))をgrepし、現在の裁定を引用して返してください(ゲートR5)。デフォルトは現在のパターンです。 - 認証情報操作(ローテーション/失効/切り替え)は常に人間がゲートするストップゲートです;ローテーションは生の呼び出しで検証され、トラッカーでは決して検証されません。
- リアルChromeセッションは、書き込みごとの確認ゲートを持つ
build-it:chrome-cdp-controlにルーティングされます;自律型QAは認証済みセッションに触れません。
やってはいけないこと
full-qa、iterate、chrome-cdp-control、make-eval、parallel-lifecycleを再実装しないでください — 名前でルーティングしてください(CB-3)。- モック、仮定、またはサブエージェントのナレーションに基づいてVERIFIEDを報告しないでください(R6;ガードレール:証拠アダプタ)。
- DERIVEDオラクルのグリーンを「計画に従う」と偽装させないでください(R11 / CB-9)。
- 黙ってスキップしないでください — 実行されなかったすべてのケースは、SKIP-no-script、SKIP-out-of-scope、BLOCK、または名前付きブロッカー付きのINVです(CB-1)。
- レポート/台帳の慣習の外でコンシューマリポジトリに書き込まないでください;安全ラダーなしで破壊的な操作を行わないでください(CB-8)。
- 新しいゲート/チェックリストを、それが失敗できることを証明せずに配線しないでください — 意図的に壊れたケースがまず赤にならなければなりません(CB-7)。
インストール
# Claude Codeプラグインとして(推奨)
/plugin marketplace add DevOtts/review-it
/plugin install review-it@devotts
# またはスタンドアロンスキルパッケージとして
npx skills add DevOtts/review-it
はじめ方:/review-it qa/test-plan-master.md は計画フェーズのテスト契約をビルドに対して実行します;/review-it PR #42 はPRをレビューします;/review-it prod はデプロイを検証します。詳細は docs/usage.md を参照してください。
セキュリティ考慮事項
- 設計上、読み取り専用:スキルはコンシューマリポジトリに自身のレポート/台帳の慣習(
.review-it/、qa/test-plan-derived.md)のみを書き込みます — コードや設定は決して書き込みません(CB-8)。 - 新しい認証情報ストレージを決して提案しません;認証情報操作は常に人間がゲートし、ローテーションは生の呼び出しで検証されます(R5/CB-6)。
- 認証済みブラウザセッションは、書き込みごとの確認ゲートを持つchrome-cdp-controlにルーティングされます;自律型QAはログイン済みセッションに触れません。
- 破壊的な操作には完全な安全ラダー(バックアップ → grep → ソフト削除 → 浸漬 → ハード削除 → 検証)と明示的な承認が必要です。
著者:DevOtts