Goal Loop
把決策文件編譯成三層工件:
implementation-plan.md:穩定的 Gate 合約,回答做什麼、邊界是什麼、如何驗證和何時停止。goal-runbook.md:唯一的執行狀態與證據帳本,只回答目前執行到哪裡、已有何種證據。goal-prompt.md:方便人工複製的固定入口,只指向前兩份文件;不綁定 Gate,也不重複合約。
本 skill 只建立或驗證執行控制面,不實施 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。
支援兩種已收斂入口:
- Decision-only:Gate、範圍、驗證和 Exit 能從已接受 ADR、spec 或已解決 issue 得到。
- Wayfinder:map 的
Not yet specified為空或明確為「無」,參與執行順序和驗收的 decision 全部已解決。
本機決策連結缺失、ADR 未接受、decision 未解決,或文件仍有 TBD、TODO、open question、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。專案命令與技術約束只寫入計畫,不進入固定 prompt。
若舊計畫包含 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+。
計畫是合約的唯一來源;帳本是狀態和證據的唯一來源。兩者不得相互複製欄位或雙寫狀態。
寫入固定 prompt
完整讀取 references/goal-prompt-template.md,只取代 {{EFFORT_PATH}},寫入或取代 goal-prompt.md。
固定 prompt 必須:
- 在同一 effort 的所有 Gate 中保持完全相同;
- 不出現 G0/G1 等具體 Gate、Gate 名稱或 Objective;
- 不展開 Inputs、Constraints、Verification、Stop conditions、Rollback 或 Exit conditions;
- 保留跨專案穩定的執行循環和行為約束:最小 slice、範圍控制、驗證失敗閉環、職責分片、保留無關實作、不弱化測試、人工驗收交接終止和禁止 push;
- 要求在 Goal 啟動時鎖定目前唯一 active Gate,並只執行該 Gate;人工驗收時只請求一次確認,先記錄交接證據,再使用宿主 agent 提供的成功終態結束本次 Goal(不得標記為
blocked、paused或繼續執行),最後輸出包含 Gate、自動化結果、驗收入口、最小清單、明確回覆格式和「Goal 已結束、Gate 仍 active」的交接結果並結束一般對話。此時 Gate 必須保持active,後續只能由使用者帶著明確驗收結果手動重新觸發新的 Goal;沒有 Goal 狀態機制時直接結束目前任務,不建立等待迴圈。Gate 通過後將目前 Gate 標為passed、直接後繼標為active,彙總證據並明確結束整個 Goal,不得把後繼 Gate 納入同一 Goal。
goal-prompt.md 是可刪除、可重建的複製便利檔案。它不屬於原始碼基線,不被計畫或 runbook 引用,也不參與狀態驗證。
最終回覆說明是編譯還是驗證,給出計畫、runbook 和固定 prompt 的路徑,並輸出 prompt 內容。只最佳化工件時不得實施 Gate。