Goal Loop
意思決定ドキュメントを3つのアーティファクトにコンパイルします:
implementation-plan.md:安定したGate契約。何をするか、境界は何か、どのように検証するか、いつ停止するかを回答します。goal-runbook.md:唯一の実行状態と証拠の台帳。現在の実行状況と、どのような証拠があるかのみを回答します。goal-prompt.md:手動でコピーしやすい固定エントリポイント。最初の2つのドキュメントのみを参照します。Gateにバインドせず、契約を繰り返しません。
このスキルは実行制御面を確立または検証するのみで、Gateを実行せず、承認済みの決定をやり直しません。
入力の特定
ユーザーはeffortディレクトリ、map.md、ADR/spec、または既存のimplementation-plan.mdを提供します。Gitリポジトリのルートを解析し、effortを特定します。一意に特定できない場合は停止し、チェックしたパスをリストアップします。
該当するCLAUDE.md、AGENTS.md、CONTEXT.md / CONTEXT-MAP.md、およびeffort内のmap、spec、implementation plan、それらがリンクするローカルのADR、decision、issue、受入依存関係を読み取ります。CONTEXT.mdは用語とドメイン事実のみを提供し、単独でGateを生成しません。
2種類の収束済みエントリをサポートします:
- Decision-only:Gate、範囲、検証、Exitが、承認済みADR、spec、または解決済みissueから取得可能。
- Wayfinder:mapの
Not yet specifiedが空または明示的に「なし」。実行順序と受入に関与するdecisionがすべて解決済み。
ローカル決定リンクの欠落、ADR未承認、decision未解決、またはドキュメントにTBD、TODO、未解決の質問、pending decisionがある場合は停止し、項目ごとにギャップを報告します。経験則で製品決定、受入ポリシー、ロールバック境界を補完してはいけません。
計画のコンパイル
implementation-plan.mdが存在しない場合、references/implementation-plan-schema.mdを完全に読み取り、収束済み決定から計画を生成します。既に存在する場合は、読み取りと検証のみ行い、上書きしません。
計画はすべての安定したGate契約を独占します:Objective、Inputs、Scope boundary、Constraints、Slice policy、Verification、Evidence rule、Stop conditions、Rollback、Exit conditions。プロジェクトコマンドと技術的制約は計画にのみ書き込み、固定プロンプトには書き込みません。
古い計画にCurrent Execution Stateが含まれている場合、runbookの初期化時に一度インポートできます。Gate名、順序、状態は一致している必要があり、passed / blockedには対応する証拠が存在する必要があります。インポート後は計画を更新しません。
台帳のコンパイルまたは検証
references/runbook-schema.mdを完全に読み取ります。
goal-runbook.mdが存在しない場合:
- 計画からGate番号、名前、依存関係、契約の場所を読み取ります。
- ソースベースライン、唯一のGoal Ledger、各GateのProgress Logを書き込みます。
- インポート可能な状態がない場合、G0のみを
active、残りをplannedとマークします。 - 計画からObjective、Constraints、Verification、その他のGate契約をコピーしません。
goal-runbook.mdが既に存在する場合:
- ソースパスセットとSHA-256を比較します。計画または決定がドリフトしている場合、台帳をそのままにして停止します。
- Gateの順序、計画参照、厳密な線形依存関係、ステートマシン、Progress Logの証拠を検証します。
- 台帳は
passed* active planned*、passed* blocked planned*、またはpassed+の状態のみを示せます。
計画は契約の唯一のソースです。台帳は状態と証拠の唯一のソースです。両者は相互にフィールドをコピーしたり、状態を二重書き込みしたりしてはいけません。
固定プロンプトの書き込み
references/goal-prompt-template.mdを完全に読み取り、{{EFFORT_PATH}}のみを置き換えて、goal-prompt.mdに書き込むか置き換えます。
固定プロンプトは以下を満たす必要があります:
- 同じeffort内のすべてのGateで完全に同一であること。
- G0/G1などの特定のGate、Gate名、Objectiveが出現しないこと。
- Inputs、Constraints、Verification、Stop conditions、Rollback、Exit conditionsを展開しないこと。
- プロジェクト間で安定した実行ループと行動制約を保持すること:最小スライス、範囲制御、検証失敗時のクローズドループ、責任の分割、無関係な実装の保持、テストの弱体化禁止、手動受入による引き継ぎ終了、push禁止。
- Goal開始時に現在の唯一のactive Gateをロックし、そのGateのみを実行すること。手動受入時は確認を一度だけ要求し、最初に引き継ぎ証拠を記録し、ホストエージェントが提供する成功終了状態を使用して今回のGoalを終了すること(
blocked、pausedとマークしたり、実行を継続したりしない)。最後に、Gate、自動化結果、受入エントリポイント、最小チェックリスト、明確な応答形式、および「Goal終了、Gateはactive」を含む引き継ぎ結果を出力して、通常のセッションを終了すること。この時点でGateはactiveのままである必要があり、後続の処理はユーザーが明確な受入結果を持って手動で新しいGoalを再トリガーすることのみ可能。Goal状態メカニズムがない場合は、現在のタスクを直接終了し、待機ループを作成しないこと。Gate通過後は、現在のGateをpassed、直接後続のGateをactiveとマークし、証拠をまとめてGoal全体を明示的に終了すること。後続のGateを同じGoalに含めてはいけません。
goal-prompt.mdは削除および再構築可能なコピー便宜ファイルです。ソースベースラインに属さず、計画やrunbookから参照されず、状態検証にも関与しません。
最終的な返信では、コンパイルか検証かを説明し、計画、runbook、固定プロンプトのパスを示し、プロンプトの内容を出力します。アーティファクトのみを最適化する場合は、Gateを実行してはいけません。