Communitygithub.com

fhajjej-ship-it/loop-it

為 Codex、Claude Code、Cursor 以及相容 SKILL.md 的 AI 代理設定有邊界且可驗證的編碼循環。

loop-it 是什麼?

Loop It 是一個專為 AI 輔助編碼代理(如 Claude Code、Codex、Cursor 等)設計的技能,用以將開放式的編碼目標轉換為有邊界、可驗證且可重複的循環。其主要價值在於防止 AI 代理在無明確目標或檢查點的情況下「盲目改進」,從而提升開發效率和結果可控性。該技能包含一個循環庫,使用者可以從預設的循環模板中選擇(如修復 CI 錯誤、文件同步、產品評估等),或根據當前進度(透過檢查 .loop-it/progress.json)推薦下一步迭代。每個循環都強制要求定義明確的目標、範圍、成功檢查條件、迭代上限、停止條件以及審批閘門,確保每次迭代都有具體的驗證步驟。Loop It 支援跨平台導出,可在不同工具中使用統一的循環邏輯,僅呼叫方式不同。此技能適用於需要結構化、可重複且可驗證開發流程的場景,特別是在處理複雜或模糊的任務時,能顯著減少 AI 代理的試錯成本。

相容平台✓Claude Code✓Codex CLI✓Cursor
npx skills add fhajjej-ship-it/loop-it

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

Loop It

將一個開放式的編碼目標轉變為有邊界、可驗證的循環。Loop It 同時也是一個循環庫:選擇合適的入門循環,根據使用者的情境進行調整,並追蹤進度,讓下一步循環顯而易見。

決策

首先決定使用者需要哪種模式:

  • 從庫中尋找:為使用者的目標選擇一個預設的循環。
  • 從進度中尋找下一步:檢查 .loop-it/progress.json 或 .loop-it/LOOP.md,並推薦下一步應循環的內容。
  • 僅設計:產生一個可重複使用的循環提示或專案本機的循環檔案。
  • 立即執行:一次執行一個有邊界的迭代,進行驗證,並決定是否需要進行下一次迭代。
  • 導出/安裝:將同一個循環調整為適用於 Codex、Claude Code、Cursor 或其他相容 SKILL.md 的代理。

如果任務描述模糊,不要提出廣泛的探索性問題。首先推薦最可能適用的庫循環並說明你的假設。僅在目標、成功檢查、程式庫範圍或審批邊界確實無法確定時,才提出最多三個針對性問題。

契約

每次執行前,每個循環都需要包含以下欄位:

  • 目標:具體的成果,而非主題。
  • 範圍:程式庫、檔案、功能區域、資料來源或環境。
  • 成功檢查:指令、基準、手動檢查、審查標準或可衡量的門檻。
  • 迭代上限:最大次數或時間預算。
  • 停止條件:成功、無顯著改善、重複失敗、存取受阻、不安全操作或需要審批。
  • 證據:每次迭代後應記錄的內容。
  • 審批閘門:生產環境寫入、外部訊息、付款、破壞性 Git 操作、憑證、部署或不可逆的資料變更。

如果請求的循環只是「不斷改進」而沒有檢查點,應予以拒絕。提供一個帶有明確檢查點的較小循環作為替代方案。

選擇循環

優先使用預設庫中的循環,而非從頭創造一個。

在可用的情況下使用選擇腳本:

node <skill-dir>/scripts/select-loop.mjs list
node <skill-dir>/scripts/select-loop.mjs search "failing ci"
node <skill-dir>/scripts/select-loop.mjs recommend --goal "fix failing checkout test"
node <skill-dir>/scripts/select-loop.mjs next --cwd <project>

請將 <skill-dir> 解析為此技能所在的資料夾。在 Claude Code 中,可以使用 ${CLAUDE_SKILL_DIR}。在其他代理中,請找到包含此 SKILL.md 的目錄。

選擇時:

  1. 當使用者詢問下一步循環時,優先檢查 .loop-it/progress.json。
  2. 如果沒有進度記錄,則將使用者的目標與 references/library/loops.json 進行比對。
  3. 推薦一個循環,最多提供兩個替代方案。
  4. 用一句話說明比對的理由。
  5. 僅在必要時提出該循環的主要問題。
  6. 如果庫中沒有適合的循環,請設計一個自訂循環,並說明在其證明了實用性後應考慮將其加入庫中。

僅在選擇腳本不可用或需要手動檢查時,才讀取 references/library/loops.json。當任務需要通用的持久化狀態結構時,請讀取 references/loop-template.md。

目前的庫分類包括:

  • 從問題單到已驗證修復:重現、診斷、修補、加入回歸測試、驗證。
  • 修復失敗的 CI:檢查失敗輸出、重現、修補、重新執行失敗的檢查。
  • 文件同步:將文件與實作進行比對、更新過時的文件、驗證範例或連結。
  • 產品評估:定義情境與標準、測試、修復遺漏、重新執行受影響及完整檢查。
  • 性能循環:測量基準、進行一次專注的變更、重新測量、僅保留已證實有效的改進。
  • 審查修復循環:審查差異修訂、修復阻礙性發現、重新執行檢查、重複直到僅剩下可接受的風險。
  • 全新設定循環:從一個乾淨的環境開始、遵循文件中的設定、修復隱藏的假設、乾淨地重試。
  • 發布就緒:在發布前驗證套件、部署或公開安裝路徑。
  • UX 優化、依賴升級、安全性強化、重構隔離以及測試覆蓋率缺口循環。

草擬循環

對於循環提示和狀態檔案,請使用以下結構:

  1. 說明目標及非目標。
  2. 在一個緊湊的週期中定義重複的動作:檢查、行動、驗證、記錄、決定。
  3. 指定確切的驗證指令或手動檢查。
  4. 定義迭代上限和停止條件。
  5. 定義最終報告必須包含的內容。

保持第一版範圍狹窄:一個程式庫、一個主要角色、一個主要的成功檢查。延遲排程、儀表板、多代理協調以及生產環境自動化等,直到手動循環已被證實有用後再考慮。

如果需要持久化的狀態檔案,請從 references/loop-template.md 建立 .loop-it/LOOP.md,或執行:

node <skill-dir>/scripts/create-loop.mjs --name "Loop name" --objective "Concrete outcome" --check "Verification command or criterion"
node <skill-dir>/scripts/create-loop.mjs --from failing-ci-repair

基於庫的循環檔案也會建立 .loop-it/progress.json,除非指定了 --no-progress 參數。

執行循環

每次迭代:

  1. 重新閱讀目標、成功檢查、上限以及審批閘門。
  2. 僅檢查下一個有邊界行動所需的上下文。
  3. 做出最小且可信的變更。
  4. 首先執行最狹窄的相關驗證,僅在必要時才進行更廣泛的檢查。
  5. 如果狀態檔案存在,將證據記錄在 .loop-it/LOOP.md 中;如果存在進度檔案,則更新 .loop-it/progress.json。
  6. 決定:停止、繼續、請求審批或報告受阻。

當繼續執行需要對安全性、憑證、生產資料、計費、使用者訊息、破壞性 Git 操作或部署審批做出隱含假設時,應立即停止。

不要將已耗盡、受阻或僅部分驗證的循環描述為完成。請確切說明是哪個條件導致了停止,以及存在哪些證據。

導出

在不同工具間使用相同的循環文字,僅改變呼叫方式:

  • Codex:安裝到 .agents/skills/loop-it/ 或作為 Codex 外掛,然後使用 $loop-it 呼叫。
  • Claude Code:安裝到 .claude/skills/loop-it/,然後使用 /loop-it 呼叫。
  • Cursor:安裝到 .cursor/skills/loop-it/,然後在代理對話中使用 /loop-it 或要求一個循環來呼叫。對於始終有效的專案慣例,請使用 Cursor 規則,而非此程序性循環。

導出時,請保持一個權威的循環主體,並避免使用特定於工具的語法,除非該工具強制要求。

相關技能