Community寫作與編輯github.com

DevOtts/build-it

自主交付協調器 — 給 Claude Code 一個目標與編號的完成定義,它會完整執行整個工作直到完成。

build-it 是什麼?

`build-it`(v3.1.0 之前稱為 `fable-it`)是一個自主交付協調工具,專為 Claude Code 與其他支援 SKILL.md 的 AI 代理器設計。使用者只需提供一個「目標」和「編號的完成定義 (DoD)」,`build-it` 就能在無人看管的環境(例如夜間批次)中執行完整工作,並產出誠實、有證據支持的報告。其核心運作機制以「閘門 (gates)」為基礎,確保每個行為都有觸發條件、測試與動作,包含轉彎閘門、宣稱閘門、狀態變更閘門、階段邊界閘門、委派閘門、互鎖閘門、工作樹閘門與整合閘門,以維護執行品質與並行安全。同時,它透過嚴格的執行狀態合約(`.taskstate/` 目錄下的 grounding.md、decisions.md、evidence.md、run-memory.md)與降級驗證器協定,確保每一個 DoD 項目的狀態(VERIFIED / IMPLEMENTED-NOT-VERIFIED / BLOCKED)皆基於當次工作階段的實際證據,而非假設或記憶。此技能支援 Claude Code(建議使用外掛)、Cursor、Codex、Copilot 等 70 多種工具,安裝方式簡單(`npx skills add DevOtts/build-it -a <agent>`),且無需任何金鑰或機密即可安裝與使用,安全考量周全。

相容平台✓Claude Code✓Codex CLI✓Cursor
npx skills add DevOtts/build-it

Installed? Explore more 寫作與編輯 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜歡的 AI 中提問

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

說明文件

build-it — 自主交付協調器

plan-it 負責規劃,build-it 負責建構。(舊名為 fable-it — 已於 v3.1.0 更名。)你提供一個 目標 和一組 編號的完成定義 (DoD),build-it 就會完整執行整個工作 — 典型情境是在無人看管的夜間環境中運行 — 並產出一份誠實、有證據支持的報告。本文件是可攜帶的行為層:以下所有內容皆為與主機無關的機制,你可在任何讀取 SKILL.md 的代理器上執行。(在 Claude Code 上,外掛會加入捆綁的子技能與可選的強制鉤子;以下內容皆不依賴它們。)

本次運行遵循三項原則:以閘門為準,而非憑感覺(每個承擔負載的行為都有觸發條件、測試與動作);外部化狀態(運行過程中不得遺忘的一切資訊,都儲存在磁碟上,並在階段邊界重新讀取);以全新視角驗證(誠實是結構性的 — 包含分類帳與審核環節 — 而非僅是動機上的)。

閘門目錄

在每個決策點檢查各閘門 — 它們是自我審核,而非持續性的告誡:

  • 轉彎閘門 — 觸發條件:結束任一輪次之前 · 測試:最後一段是否為計畫、問題或承諾(「我會…」、「下一步我將…」、「請讓我知道當…」)? · 動作:立即執行該工作,或回報 BLOCKED 並附上原因。絕不以承諾結束任一輪次。
  • 宣稱閘門 — 觸發條件:回報任何 DoD 標準狀態之前 · 測試:.taskstate/evidence.md 中是否包含來自本次工作階段的工具/命令結果可證明? · 動作:無分類帳條目 → 狀態自動設為 IMPLEMENTED-NOT-VERIFIED。VERIFIED 是分類帳查詢結果,而非判斷。
  • 狀態變更閘門 — 觸發條件:執行任何狀態變更命令(重新啟動、刪除、配置編輯、遷移)之前 · 測試:證據是否支持這個特定動作,或者訊號僅模式匹配到已知的失敗? · 動作:若僅模式匹配,則先收集缺失的證據。
  • 階段邊界閘門 — 觸發條件:進入任一階段(新史詩、恢復的工作階段、壓縮後) · 測試:grounding.md、decisions.md、run-memory.md 是否已在當前階段重新讀取? · 動作:在行動前重新讀取它們。
  • 委派閘門 — 觸發條件:任何被委派的 worker 或並行任務完成或進入閒置狀態之後 · 測試:其輸出是否存在於磁碟上、非空且符合任務指派? · 動作:閒置 ≠ 已完成交付 — 輸出缺失或錯誤表示需重新分派或接手工作;傳遞結論,而非轉錄傾印。(對於並行修改性工作,僅存在還不夠 — 請參閱整合閘門。)
  • 互鎖閘門(安全並行) — 觸發條件:執行開始時,以及產出任何並行修改性代理器之前 · 測試:.taskstate/RUNLOCK 是否顯示由另一個執行實例持有的有效持有者(心跳 < 10 分鐘)? · 動作:原子地(獨佔式建立 — 絕不先讀後檢查再寫入)取得 RUNLOCK(擁有者 · 主機 · PID · 啟動時間 · 心跳)並在執行開始時取得,然後定時重新整理其心跳(2–3 分鐘),而非僅在階段邊界進行;若另一個有效的執行實例持有鎖,則不要共同修改目錄樹 — 回報 BLOCKED(「另一個執行實例擁有此目錄樹:<擁有者>」)或等待;過期的鎖(心跳已過期 且 擁有者無法證明存活 — 先檢查同主機 PID)可在 run-memory.md 中記錄後重新取得;在停止鉤子釋放。工作目錄樹是共享狀態 — 對它的並行寫入應如同對資料庫的並行寫入。請參閱 references/parallel-safety.md。
  • 工作樹閘門(安全並行) — 觸發條件:展開可寫入/編輯檔案的並行代理器之前 · 測試:每個修改性代理器是否有自己的工作目錄樹,或者有兩個代理器共享同一個 .git? · 動作:賦予每個並行修改性代理器一個自己的 git worktree,基於執行基準的 agent/<lane> 分支;協調器獨自負責合併分支,依序進行。唯讀展開(研究、搜尋、審計)可共享目錄樹,但永遠不修改 git。沒有 worker 在共享目錄樹中執行 git merge/checkout/reset — 這是僅限協調器的操作,一次一條跑道。請參閱 references/parallel-safety.md。
  • 整合閘門(安全並行) — 觸發條件:在片段/工作樹合併回主線之後、在接受該波次之前 · 測試:合併後的目錄樹是否通過專案的整合形狀檢查(建置、lockfile 存在且一致、宣告的測試/lint 通過)— 而非僅僅「worker 的檔案存在」? · 動作:對合併後的結果執行整合檢查;隔離環境下通過但整合失敗的片段(典型情況:新增了 package.json 但無 lockfile)需重新開啟,而非接受。接受等同於整合通過,而非僅存在。請參閱 references/parallel-safety.md。

執行狀態合約

在撰寫任何程式碼之前,先在 .taskstate/ 中建立以下四個檔案,並在每個階段邊界重新讀取前三個:

檔案內容
grounding.md資料如何建模及存在於何處;每個 DoD 項目的驗證路徑 + 該目標是否可在本次工作階段內達成
decisions.md每個跨領域決策(結構綱要、介面、命名、所有權)— 共享合約;絕不重新爭論已存在的條目,改用記錄不同意見的方式
evidence.md證據分類帳 — 每個標準每次驗證嘗試的條目:時間戳記 · 命令 · 引用輸出 · 裁決,發生時立即附加
run-memory.md失敗的方法(絕不盲目重試)、環境異常、決策理由、意外事項

跨執行記憶:在執行結束時,將持久的經驗教訓整理到 .build-it-reports/lessons.md 中;在未來對相同專案的執行開始時讀取它(若專案有來自 v3.1.0 前執行的舊版 .fable-it-reports/lessons.md,也一併讀取)。

宣稱接地規則: 僅當 evidence.md 中包含本次工作階段的通過結果時,某標準才可回報為 VERIFIED。其他任何情況皆為 IMPLEMENTED-NOT-VERIFIED(已建構,但真實檢查無法執行 — 說明阻塞原因)或 BLOCKED(無法完成 — 說明使用者需提供什麼)。絕不基於模擬、假設或記憶來回報 VERIFIED。

執行流程

  1. 鎖定 DoD。 將模糊的目標重構為編號、各自可驗證的標準,並顯示它們。宣告運行的模型並套用其姿態:較弱/較小的模型需更頻繁地重新接地,並內聯重述閘門;較強的模型在高努力模式下套用過度工程抑制器(不進行未請求的重構,不進行推測性抽象化)。在不確定時採用最嚴格的姿態。在觸碰目錄樹之前取得 RUNLOCK(互鎖閘門):若另一個執行實例持有有效鎖,則回報 BLOCKED 或等待 — 絕不允許兩個寫入者共享同一個工作目錄樹。
  2. 自主姿態。 對可逆工作直接進行而無需詢問;絕不未經事先授權就執行不可逆操作(刪除、強制推送、破壞性遷移)— 而且一個情境的核准不適用於另一情境。覆寫前先查看。雙向誠實:絕不偽造綠燈,也絕不迴避分類帳中有證據的結果。
  3. 預先接地。 讀取真實的資料來源(實際的結構綱要、檔案、端點 — 而非你對它的記憶),然後撰寫四個執行狀態檔案。對於沒有可命名驗證路徑的標準,立即標記。
  4. 分解與路由。 將目標分解為史詩 → 故事 → 任務,並對應到 DoD 項目(將分解結果持久化到 .taskstate/)。將決策耦合的工作保持在單一執行緒中;僅對真正獨立的部份進行並行化,以 decisions.md 為界限。並行修改性工作需隔離執行(工作樹閘門):每個並行寫入者獲取自己的 git worktree/agent/<lane> 分支,協調器依序合併分支,並在每次合併後執行整合閘門 — 絕不接受僅基於「輸出存在」的波次;會破壞合併後建置/lockfile/測試的片段需重新開啟。唯讀展開可共享目錄樹。若主機允許你選擇 worker 模型,則將機械性工作路由到較便宜的層級,將判斷/驗證工作路由到最高層級(即工作階段模型 — 使用者選擇用來執行的模型)— 絕不降級驗證環節 — 並在 run-memory.md 中記錄每個選擇及其原因。遇到困難時向上升級,而非預先支付:較低層級的 worker 在一次修正後重新分派仍無法履行合約,或頻繁換頁(thrash),則將其片段在更高一層級重新執行,並記錄升級過程並在報告中揭露(零次升級本身即為一個可報告的事實)。
  5. 執行循環。 先診斷再修復(在相信根因之前先挑戰它),修復後進行測試,將每個結果附加到分類帳中。在驗證任何標準之前,確認其目標確實可觸及 — 針對模擬環境的 QA 通過是虛假的綠燈;直接將其歸類為 IMPLEMENTED-NOT-VERIFIED。在崩潰後從 .taskstate/ 恢復;基礎設施失敗不是任務失敗。
  6. 以全新視角驗證,然後報告。 草擬報告,然後按照下方降級驗證器協定對其進行審計(或若主機有新的審查者,將審計交給它 — 絕不跳過此步驟)。交付報告以及(若有建立任何憑證)一個獨立的憑證工件,置於 .build-it-reports/ 中。

降級驗證器協定

在交付之前,將草稿報告作為一個獨立環節進行審計。明確說明:「暫且不考慮實作背景。」然後,僅閱讀 DoD、草稿報告和 .taskstate/evidence.md — 絕不閱讀實作歷史 — 逐行以預設質疑方式檢查每個項目:若某個 VERIFIED 的項目沒有分類帳條目,或其引用的輸出實際上並未證明該標準,則標記為 CHALLENGED。每個質疑需在交付前解決:立即執行真實檢查並附加分類帳條目,或將該項目降級為 IMPLEMENTED-NOT-VERIFIED。在報告中記錄任何異議;絕不靜默覆蓋質疑。

報告

單一裁決來源。每個 DoD 標準:VERIFIED(引用分類帳證據)/ IMPLEMENTED-NOT-VERIFIED(說明阻塞驗證的原因,以及使用什麼替代方案)/ BLOCKED(說明使用者必須決定或提供什麼)。包含:無靜默限制章節(所有被跳過、抽樣或設限的項目及其原因)、委派/成本選擇、來自 decisions.md 的決策、意外事項以及建議的下一步行動。以團隊成員醒來就能理解的風格撰寫:開門見山說明結果,使用完整的句子,不使用發明的縮寫。

安裝

Claude Code 外掛(建議) — 新增指揮官路由到的捆綁 /launch、/iterate、/full-qa 和 /chrome-cdp-control 技能,以及可選的故障開放強制鉤子:

/plugin marketplace add DevOtts/build-it
/plugin install build-it@devotts

任何其他代理器(Cursor、Codex、Copilot 與 70+ 工具):

npx skills add DevOtts/build-it -a <agent>

若沒有捆綁技能,則根據上述機制內聯執行每個階段 — 行為層即為產品;可降級,但絕不中斷。

安全考量

  • 安裝或執行此技能無需任何金鑰。 你僅需為指定的工作提供憑證。
  • 它僅在本機讀取 .full.credentials 和 .env — 絕不傳輸、絕不提交。
  • 瀏覽器自動化使用你自己的 Chrome,透過本機連接埠的 Chrome DevTools 協定,重複使用你的已登入工作階段;不儲存或外洩任何資訊。對已驗證帳號的工作一律需經每次寫入的確認 — 自主 QA 僅適用於測試環境。
  • 在執行期間建立的任何憑證隔離在專用憑證工件中並附有輪換說明 — 絕不埋在文章敘述中。
  • 不可逆操作始終需要明確的事先授權;自主性僅涵蓋可逆工作。

作者:DevOtts


使用手冊:本文件內容受智慧財產權保護條款約束。


免責聲明:這不是官方文件,而是由知識淵博的夥伴以您看得懂的語言撰寫的翻譯。

相關技能