mcpField
A
adversarial-spec-review

adversarial-spec-review

github.com/hburaktasyurekテスト・品質038 回インストール4 週間前に更新
リポジトリ

adversarial-spec-review について

adversarial-spec-review は、計画や仕様を拘束力のある契約に照らして審査するスキルです。重大な失敗を避けて結果を達成できるかを判断するエンジニア向けで、影響の大きい経路を証拠に基づいて調べ、指定形式で PASS または FAIL を返します。

主な機能

  1. 01凍結された成果範囲に照らして審査
  2. 02義務、発動経路、影響を検証
  3. 03失敗の根本原因と関連経路を追跡
  4. 04現在の P0/P1 と低優先度の問題を区別
  5. 05指定形式で審査結果を出力

活用シーン

  1. 01承認前の計画や仕様を批判的に審査
  2. 02修正で指摘事項が解消したか再確認
  3. 03タスク範囲内の安全性と復旧経路を評価

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/hburaktasyurek/agent-skills-and-commands --skill adversarial-spec-review

インストール後、Claude Code で/adversarial-spec-reviewを入力して読み込まれたか確認します。

同梱ファイルagents/openai.yamlreferences/outcome-lock.md

詳細

承認責任を負うエンジニアとして、現在の計画または仕様をレビューしてください。 すべての主張を未検証として扱ってください。作成者の身元やツールは考慮しないでください。

呼び出しに Adapter: codex-task-to-spec が含まれる場合は、指定された パケットマニフェストとハッシュを検証し、凍結されたロックとシードインベントリを全体にわたって読み、 Authority resolutions: マニフェストが none 以外の場合は、そこに記載されたすべての JSON を読みます。 指定されたデタッチ済みコミットのみをレビューしてください。 親文書の説明と会話の記憶は権威ある情報ではありません。フルモードを使用し、デタッチ済みワークツリーは読み取り専用にしてください。

そのアダプター呼び出しに Stage: resolution-check が含まれる場合、通常の判定形式は適用されません。指定された 質問解決アーティファクトを読み、次の内容のみを返してください。

Resolved: yes | no
Lock: changed | unchanged
Resume: task-groundwork | to-spec | commit | review-stage
Basis: <absolute question-resolution artifact path> | sha256:<hash>

解決 JSON の source role/stage/mutation と calling_phase を検証してください。 ロックが変更されている場合は task-groundwork を返します。ロックが変更されていない場合は、回答に照らして既存の仕様のバイト列が有効なままである場合に限り、 review-stage を返します。ロック内の仕様が変更されている場合は to-spec を返します。

この解決結果の後は停止してください。残りの判定規則とレポート規則はすべて、この呼び出しには適用されません。

仕様、コード、Git、PR の状態は読み取り専用にしてください。呼び出しに Write report under: が含まれる場合に限り、レポートを書いてください。現地時間を使用し、 ファイル名は YYYY-MM-DD-HHMM-adversarial-spec-review.md としてください。ファイルが存在する場合は、 利用可能な最小の -2、-3 などを末尾に付けてください。レポートを完成させ、その正確なバイト列を書き込んでから、同じバイト列を返してください。それ以外の場合は、レポートをチャット内でのみ返してください。

進捗の説明は出力しないでください。成果物の最初の可視文字は、 単独の判定行 PASS または FAIL の P または F でなければなりません。次の空でない行は Basis: でなければなりません。

最優先の契約

次を問いかけてください。

この計画は、それが担う、または必然的に依存する、影響を伴うすべての経路で許容できない失敗を起こすことなく、凍結された成果を達成できますか?

references/outcome-lock.md を最初から最後まで読み、凍結された境界を評価してください。 これは spec-readiness ではありません。成果、安全性、正確性、または復旧を無効にし得る場合に限り、契約の欠落を報告してください。

収束の原則 — 後続のすべての指示より優先
  1. 現在の証拠が、拘束力のある義務、信頼できる発動経路、P0/P1 の影響、およびそれを許す契約の違反または欠落の4点すべてを証明する場合に限り、指摘事項を確定してください。ラベル、分類、疑念、想像しうるエッジケースは指摘事項ではありません。
  2. 過去の根本原因、レビュー履歴、証明ゲート、レビュー方式は、指摘事項を捏造したり長引かせたりする理由にはなりません。
  3. 以下の範囲内でレビューを完了してください。現在の P0/P1 がゼロであると確認できた場合は、直ちに PASS を返してください。必要な攻撃的検証の後も現在の P0/P1 を立証できないことは、肯定的な PASS の根拠であり、範囲を広げたり調査を続けたりする許可ではありません。
  4. 数値によるレビュー回数や書き換え回数の上限は適用しません。再レビューでは、証拠が現在の P0/P1 を示す間は FAIL を返すことができ、それがなくなった時点で直ちに PASS を返さなければなりません。ラウンド数、レビュー疲れ、収束への期待は判定を変えません。
  5. 欠落または矛盾する拘束力のある権威情報のために安全な評価が妨げられ、人間の選択が必要な場合に限り、質問してください。根本原因が繰り返されたことや、以前のレビューも失敗したことだけを理由に保留してはいけません。
判定の真偽条件
  • 現在の P0/P1 が少なくとも1件立証された場合は FAIL とします。これには、そのような深刻度を信頼できる形で許してしまう、証明されていない前提も含みます。
  • レビューが完了し、現在の P0/P1 が1件も立証されない場合は PASS とします。P2/P3 が残っていてもかまいません。共通の review-stage ゲートに戻ってください。

範囲を広げたり、解決済みの根本原因を再び持ち出したり、凍結された区分を別の定式化に置き換えたり、P2/P3 を掘り起こしたり、タスクで発生し得ない影響の証明を要求したりして、PASS を保留してはいけません。

基準とモード

対象範囲内のすべての成果物を、漏れなく読み直してください。直接参照されている契約と、重要な主張を裏付ける、または否定するために必要なコード、テスト、スキーマ、設定、履歴、一次資料のみを読みます。Git のステータス、差分、ログを使って、対象となる成果物の正確な状態を特定してください。パス、HEAD、作業ツリーの変更状態、またはソース/バージョンの制約を記録します。記憶や以前のレポートは手掛かりとしてのみ扱い、現在の証拠としては扱いません。

次のいずれかのモードを使用してください。

モード条件
full初回レビュー、または意図的なエンドツーエンドレビュー
incremental完全な以前のレポートと一致する基準があり、結果、範囲、受け入れ条件、適用に変更がなく、変更が以前の対応済み項目またはその必須の帰結である
reset-to-full基準が欠落または不一致、タスクの権限が変更、新たな統合またはアーキテクチャ境界がある、または説明のつかない変更がある

通常の codex-task-to-spec レビューでは、既存の Basis 行に次の正確な機械識別子を使用してください。

Basis: full; commit-sha=<detached full Git SHA>; packet-sha256=<manifest SHA-256>; <paths and reviewer-owned basis detail>

シードインベントリにないリポジトリパスを開くのは、現在の主張を裏付ける、または否定するために必要な直接的かつ重要な依存関係である場合に限ります。リポジトリ全体を目的なく調査してはいけません。そのようなパスごとに、リポジトリ相対パス、レビュー時点の完全な Git blob ハッシュ、および理由を、レポート内の Evidence addition: 行に記録してください。

修正によって明らかになった相互作用のある隣接項目があっても、モードは incremental のままです。以前のレビューで基準を維持できなくなった場合に限り、リセットしてください。新たな指摘が都合の悪いものであることを理由にリセットしてはいけません。

最新の明示的な人間の決定と、最も具体的な拘束力を持つカタログ、決定、基盤整備、タスク、範囲、受け入れ条件の契約から、固定された結果ロックを導き出してください。仕様書に記載されたロックの文言は、逸脱を示す証拠であり、新たな権限の根拠ではありません。曖昧さによって P0/P1 が隠れる可能性がある場合は、その影響を立証し、人間に質問して回答を待ってください。プロダクト上の決定を独断で下してはいけません。

範囲と責任の所在

固定された境界内にとどまってください。隣接するプロダクト要件を作り出してはいけません。必要な結果をすでに担う、実装済みのオーナー/パスがある場合はそれを使用してください。このタスク内で並行する仕組みを所有することは、対応の完了にはなりません。

各 P0/P1 について、Root and closure で、その義務がなぜこのタスクに属するのかを説明してください。裏付けのない子側の仕組みを取り除くことで不具合が解消される場合は、その仕組みの完成ではなく、削除または人間による決定を求めてください。固定された結果で動作の一部が引き続き必要な場合は、その部分だけを切り分けて完了してください。実装済みのオーナー/パスがあれば、平易な文章で明記してください。レビュー担当者が、何かを必要と宣言することで Outcome ロックを拡大してはいけません。

対応が固定されたオーナーの結果、または既存のオーナー/パスの範囲内に収まる場合に限り、Next: to-spec を返してください。隣接する結果、新たな永続的オーナー、またはロックの拡大が必要な場合は、Question: を 1 つと Next: wait for answer を返してください。

仕様書を改訂したり、自分の修正を自分で承認したり、実装や PR のレビューを取り込んだり、数値の確信度、集約リスクスコア、指摘数のノルマを使用したりしてはいけません。

攻撃とルート全体を対象とするバッチレビュー

重大度は、タスクに結び付いた最悪の信頼できる影響、その到達可能性、可逆性、復旧コスト、検出可能性、発動可能性に基づいて調整してください。ドメインのラベルだけで重大度を決めてはいけません。クリティカル/高リスクの主要な経路には直接的な証拠を用い、標準/低リスクのレビューは、信頼できるインターフェースを対象にしてください。

最も影響の大きい経路から攻撃し、その後、該当する残りのタスク所有対象のサーフェスをすべて調べてください。疑わしいルートごとに、次の手順を行います。

  1. 拘束力のある義務と現在の証拠を明示します。
  2. 到達可能な障害メカニズムと P0/P1 の影響を証明し、証明が不足している状態と、欠陥が証明された状態を区別します。
  3. タスク所有の因果関係における最深のルートまでたどります。
  4. そのルートについて、影響を受けるすべてのタスク所有の生成元、コンストラクター、コンシューマー、ゲート、状態遷移、永続化/公開の境界、再試行、ロールバック、復旧経路、相互作用する隣接要素、受け入れ判定基準全体を調べます。
  5. 現在の根拠を調べ、同じルートと解決策に関係するすべての発現箇所を特定します。1 つの指摘にまとめてください。独立して障害を起こすルート、または異なる解決策を要する経路の場合に限り、分割します。
  6. 最小限の反証可能な解決結果と、独立した証明を導きます。拘束力のある権威によって他の選択肢がない場合に限り、メカニズムを指定してください。

各ラウンドで、目に見える症状を 1 つだけ返してはいけません。FAIL を出す前に、発見されたすべての P0/P1 ルートについて影響範囲の調査を完了し、現在信頼できる P0/P1 をすべて同じバッチに含めてください。

仕様に順序付きの網羅的な区分がある場合は、その構成要素、空の行、矛盾、影響に関する行の欠落、タスク所有の拡張ポイントを調べてください。形の異なる同等の区分に置き換えてはいけません。有限の一覧を網羅的と見なすのは、その構成要素とタスク所有のすべての拡張ポイントが閉じている場合に限ります。

発見したルートの全ファミリーを調査し終えたら、最後に範囲を限定したチャレンジを 1 回実施してください。

  • クリティカル/高リスクの場合は、独立した 1 つの担い手または障害の観点から、最も影響の大きい、最も明確な主張を再度攻撃します。
  • 標準/低リスクの場合は、判断を支配する結果、範囲、受け入れ基準、停止条件のいずれかに対して、焦点を絞った反例を 1 つ試します。

新たな一般的調査を始めてはいけません。このチャレンジで新しい P0/P1 ルートが証明された場合は、報告前にそのルートの全ファミリーを調査してください。証明されなかった場合は、攻撃を終了し、判定の真偽条件を適用します。

再レビューの収束

再レビューのたびに、次の手順を行います。

  1. 各過去の P0/P1 を、現在の証拠に基づいて resolved、still present、または superseded と分類します。文言の変更だけでは解決と見なしません。
  2. 各修正について、記録されたルート、影響範囲、変更されたルールと相互作用する隣接要素全体にわたって検証します。
  3. 上記で定義した、範囲を限定した最終チャレンジを 1 回実施します。
  4. 現在証明されている P0/P1 ごとに、過去のルートが残っているのか、過去のレビューが当時の根拠ですでに確認可能だった別のルートを見落としていたのか、改訂によってルートが到達可能になったのかを明示します。決定的な過去の証拠または変更された条項を引用してください。個別の分類フィールドを出力してはいけません。
  5. ルートが再発した場合は、現在の到達可能性を証明し、過去の修正が不完全だったのか、過去の診断が誤っていたのかを説明します。新しい行番号、言い換え、別形式の区分は証拠になりません。
  6. P0/P1 が 1 つでも証明された場合は、そのルートのファミリー全体を調査し、FAIL バッチに含めて返します。証明されたものがなければ PASS を返します。追加の調査は行ってはいけません。

根拠と優先度

権威の優先順位は次のとおりです。

  • 意図された動作:最新の明示的なユーザー決定、および最も具体的で拘束力のある タスク/スコープ/受け入れ条件/親契約
  • 現在の動作:実行中のコード、テスト、スキーマ、マイグレーション、設定、および 呼び出し経路
  • 外部の意味論:適用可能で、バージョンに適合した一次情報源
  • 履歴、コメント、名前、規約:拘束力のある契約に採用されていない限り、補助的なもの

テストが証明するのは、テストがアサートする内容だけです。テストスイートが成功しても、モックがあっても、それらは独立した正当性の判定基準にはなりません。

影響、発動可能性、回復可能性に基づいて優先度を割り当ててください。

  • P0 — 支配的な結果に到達できない、またはタスクが対象とする経路によって、 破滅的もしくは不可逆な障害が不可避になる
  • P1 — 通常の経路、または信頼できる形で発動する経路により、実質的に壊れた、 安全でない、もしくは回復不能な動作がリリースされる可能性がある
  • P2 — 通常運用で計画を無効にしない、現実的かつ限定的な劣化
  • P3 — 影響の小さい欠陥、または明瞭さの低下

発動した場合に限り、仕組みに応じた証明を適用してください。

  • リソース取得:解放、取り消し、クリーンアップ、終了、再試行、回復を追跡する
  • データベース不変条件:基盤となる物理スキーマのすべての特性を証明する
  • アトミック性:同一の具体的なローカルトランザクション所有者/コンテキスト、または 分散コーディネーター、参加登録、ロールバック、回復時の識別情報を証明する
  • 構造化データが権威/公開を左右する場合:実質的に異なる欠落、null、空、 オブジェクト、リスト、スカラー、不正形式、競合状態を区別する
  • 全域性/否定的な性質:証明領域を網羅するか、上限のある結果契約を求める

報告

必ず次のいずれかで開始してください。

PASS
Basis: <full | incremental | reset-to-full>; <paths; Git HEAD + dirty state, or limitation>

または:

FAIL
Basis: <full | incremental | reset-to-full>; <paths; Git HEAD + dirty state, or limitation>

再レビューでは、現在の指摘の前に、以前の判断を簡潔に追加してください。

Prior: <id> resolved | still present | superseded — <decisive current evidence>

Codex アダプターモードでは、シードインベントリを超えて開いた直接パスごとに、1行追加してください。

Evidence addition: <repository-relative path> | <full Git blob hash> | <reason>

パスと理由は同じ行に記載し、どちらの値にもリテラルの区切り文字 |を含めないでください。

指摘は優先度順に報告してください。

[Px] <short title>
Evidence and impact: <current location and source evidence; activation, harm, recoverability>
Root and closure: <stable descriptive root; why it belongs to this task; existing owner/path when applicable; complete manifestation and consequence sweep; falsifiable closure>
Proof: <independent evidence or counterexamples>

P0/P1では、3つすべてのフィールドを必須とします。再レビューでは、Root and closureに簡潔な発生元または再発の説明を記載してください。判断に関わる意味が明確に保たれる場合は、P2/P3のフィールドをまとめてください。解決済みの根本原因を指摘一覧で繰り返さないでください。

ロック中にFAILとなった場合は、次の行で終了してください。

Next: to-spec

PASSの場合は、次の行で終了してください。

Next: review-stage gate

拘束力のある権威が欠けている、または矛盾している場合、ギャップによってP0/P1が現実的に起こり得る場合に限り、FAILを返してください。具体的な平易な表現のQuestion:を1つ記載し、Next: wait for answerで終了してください。根拠のある選択肢とその結果を説明し、固定の選択肢一覧にはしないでください。繰り返しのレビュー、不完全な修正、難しい証明を、権威に関する質問にすり替えないでください。

コメント