
get-shit-done Backlog 治理指南用 /gsd:review-backlog 將 999.x 積壓項晉級為里程碑階段【免費下載鏈接】get-shit-doneA light-weight and powerful meta-prompting, context engineering and spec-driven development system for Claude Code by T?CHES.項目地址: https://gitcode.com/GitHub_Trending/getshi/get-shit-done本文基于 get-shit-doneGSD項目中的 commands/gsd/review-backlog.md 命令規(guī)范完整講解其999.x積壓Backlog評審與晉級機制。你將掌握Backlog 項為何使用 999.x 編號、如何列出并逐個評審積壓項、如何將它們安全地Promote晉級進活躍里程碑序列、如何清理過期條目以及底層 gsd-sdk 查詢?nèi)绾伪WC編號不沖突與 ROADMAP.md 一致性。Backlog 的由來為什么要用 999.x 停放未就緒想法GSD 的規(guī)劃空間.planning/默認(rèn)把“尚未準(zhǔn)備好進入主動規(guī)劃”的想法統(tǒng)一停放在 ROADMAP.md 的## Backlog區(qū)塊并把它們排除在活躍階段序列之外。編號上約定使用999.x而非普通遞增編號是為了讓這些條目不會占用01-99的正式里程碑階段號。在 docs/FEATURES.md 中這一機制被明確為產(chǎn)品需求REQ-BACKLOG-01/02/03/04Backlog 項必須使用 999.x 編號以保持在活躍階段序列之外Backlog 的階段目錄必須立即創(chuàng)建使得/gsd:discuss-phase與/gsd:plan-phase可以直接對其工作/gsd:review-backlog必須支持對每個條目的 promote / keep / remove 三種動作被晉級的條目必須被重新編號進入活躍里程碑序列。與“Review”命令配套的是寫入側(cè)的 get-shit-done/workflows/add-backlog.md它由/gsd:capture --backlog觸發(fā)先讀取.planning/ROADMAP.md用gsd-sdk query phase.next-decimal 999 --raw計算下一個積壓編號尚無任何 999.x 時返回999.1稀疏編號是允許的例如 999.1、999.3再先寫 ROADMAP 條目、后建目錄、最后提交。這意味著 Backlog 目錄與 ROADMAP 條目是成對存在的而/gsd:review-backlog正是這一流程的反向治理環(huán)節(jié)。從源碼側(cè)也可以確認(rèn) 999.x 的“隔離”是貫穿全程的約定get-shit-done/bin/lib/init.cjs 中明確“跳過 999.x Backlog 階段——它們是停放的想法不是活躍工作”/^999(?:\.|$)/并在完成度統(tǒng)計時排除 Backlog 階段issue #2129。get-shit-done/bin/lib/phase.cjs 在多個編號計算/整理邏輯中if (num 999) continue;將 999.x 視為活躍編號之外的“孤兒”。get-shit-done/bin/lib/milestone.cjs 收集階段目錄時同樣過濾掉/^999(?:\.|$)/的目錄。也就是說Backlog 項的目錄與條目雖然存在于 ROADMAP 與.planning/phases/下但絕不會被當(dāng)作下一個正式階段來計算——直到通過評審被主動晉級為止。命令契約觸發(fā)條件與可用工具review-backlog在倉庫中以 slash-command 形式注冊其契約見 commands/gsd/review-backlog.md 的 frontmatter字段值說明namegsd:review-backlog命令全名調(diào)用時寫作/gsd:review-backlogdescriptionReview and promote backlog items to active milestone審查并把積壓項提升為活躍里程碑a(chǎn)llowed-toolsRead,Write,Bash,AskUserQuestion評審過程需要讀文件、改文件、跑命令并通過交互提問征詢用戶決策requires[phase, review]依賴 phase階段與 review評審相關(guān)上下文就緒該命令的客觀目標(biāo)是審查全部 999.x Backlog 項選擇性地將其晉級promote到活躍里程碑序列或刪除remove過期條目。它并不負責(zé)“新建積壓項”——那是/gsd:capture --backlog的職責(zé)兩者一寫一審構(gòu)成 Backlog 的完整閉環(huán)。完整工作流從列目錄到輸出評審報告/gsd:review-backlog的執(zhí)行被組織為 7 個步驟命令規(guī)范中給出了可直接執(zhí)行的示例命令。第 1 步列出 Backlog 項Backlog 階段目錄統(tǒng)一存放在.planning/phases/下且以999開頭。通過一條防御性 shell 命令即可列出全部積壓目錄ls -d .planning/phases/999* 2/dev/null || echo No backlog items found2/dev/null抑制“目錄不存在”的錯誤||分支保證即使沒有任何積壓項也不會讓命令失敗而是輸出可讀提示。注意目錄名遵循與普通階段一致的約定例如999.1-idea-slug如果項目在.planning/config.json配置了project_code如CK目錄還會帶上前綴如CK-999.1-idea-slug這與所有階段創(chuàng)建路徑保持一致見 add-backlog 工作流對generate-slug、config-get project_code的使用。第 2 步讀取 ROADMAP 并整理每項上下文隨后讀取.planning/ROADMAP.md從其中提取全部 999.x 條目cat .planning/ROADMAP.md這一步需要為每一個積壓項匯總編號與描述、階段目錄內(nèi)累積的上下文制品如*-CONTEXT.md的用戶決策、*-RESEARCH.md的調(diào)研結(jié)論參見 get-shit-done/workflows/review.md 中“讀取 init.phase-op 拿到 phase_dir / phase_number再讀取 CONTEXT.md / RESEARCH.md”的同一套制品發(fā)現(xiàn)方式以及創(chuàng)建時間。由于 Backlog 項“累積上下文”的特性正是這些制品構(gòu)成了評審是否應(yīng)該晉級的依據(jù)。第 3 步通過 AskUserQuestion 呈現(xiàn)決策命令不能自作主張晉級或刪除任何 Backlog 項——它必須把候選列表呈現(xiàn)給用戶并為每一項提供三選一決策這正是 frontmatter 中聲明AskUserQuestion工具的原因Promote晉級移入活躍里程碑序列Keep保留留在 Backlog 中繼續(xù)停放Remove刪除從 Backlog 與磁盤中清除。向用戶展示的內(nèi)容應(yīng)至少包含階段編號999.x、描述、已累積的制品清單。這是一個人工決策關(guān)口human-in-the-loop避免 AI 自動把未就緒的想法帶入正式規(guī)劃。第 4 步Promote 晉級操作對于被選為Promote的條目核心問題是“如何在不破壞活躍序列連續(xù)性的前提下把它變?yōu)檎诫A段”。命令規(guī)范給出的策略分四件事在活躍里程碑中找到下一個順序階段號。這一步的關(guān)鍵是調(diào)用底層查詢句柄讓系統(tǒng)自行計算下一個編號而不是人工猜測。規(guī)范中給出的命令是NEW_NUM$(gsd-sdk query phase.add ${DESCRIPTION} --raw)這一調(diào)用命中的正是 sdk/src/query/phase-lifecycle.ts 中的phaseAdd句柄注冊于 sdk/src/query/command-family-handlers.tsphase.add: phaseAdd。從源碼實現(xiàn)phase-lifecycle.ts#L88-L233可以確認(rèn)其行為多個位置參數(shù)以單個空格拼接為 description多詞描述如phase add User Dashboard不會丟失--raw會被剝離而不會混入描述未知--flag一律以校驗錯誤拒絕description 為必填空描述拋出GSDError(description required for phase add)通過讀取當(dāng)前活躍里程碑內(nèi)容與.planning/phases/目錄名集合調(diào)用computeNextSequentialPhaseId計算出下一個順序階段號目錄命名受.planning/config.json的phase_namingsequential或自定義模式與project_code前綴影響slug 由 description 生成真實寫入路徑會持有 ROADMAP 寫鎖readModifyWriteRoadmapMd在“讀→計算→寫”全程加鎖避免兩個并發(fā)的phase.add觀察到同一 maxPhase 而產(chǎn)生重復(fù)編號新階段目錄創(chuàng)建.gitkeep以保證空目錄被 git 跟蹤并把新條目插入到 ROADMAP 中最后一個\n---分隔符之前或文件末尾。把目錄從999.x-slug重命名為{new_num}-slug。晉級后目錄名必須與新的正式編號保持一致使后續(xù)/gsd:discuss-phase、/gsd:plan-phase、完成度統(tǒng)計等邏輯能正確識別它——這些邏輯統(tǒng)一依賴目錄前綴作為階段的“身份”而 999 前綴的排除規(guī)則見 init.cjs / phase.cjs / milestone.cjs只有在目錄不再以 999 開頭后才會將其納入活躍核算。把已累積的制品移動到新階段目錄。Backlog 期間通過 discuss / plan 累積的*-CONTEXT.md、*-RESEARCH.md等制品必須隨目錄一起遷移保證“晉級”不會丟失既有調(diào)研與用戶決策。同步更新 ROADMAP.md把該條目從## Backlog區(qū)塊移動到活躍階段列表移除(BACKLOG)標(biāo)記并補充合適的**Depends on:**字段。之所以要補依賴字段是因為正式階段是有序、有依賴的參見 get-shit-done/templates/roadmap.md 中**Depends on**: Nothing (first phase)/**Depends on**: Phase 1的骨架寫法而 Backlog 項“本質(zhì)上是無序的、沒有 Depends on 字段”add-backlog 工作流的 notes 中明確這一點。第 5 步Remove 刪除操作對于被選為Remove的條目需要做兩件事保證磁盤與文檔保持一致刪除階段目錄.planning/phases/999.x-slug從 ROADMAP.md 的## Backlog區(qū)塊移除對應(yīng)條目。第 6 步提交變更所有變更無論晉級還是刪除都需要統(tǒng)一落入一次文檔提交中以保持規(guī)劃空間的可追溯性gsd-sdk query commit docs: review backlog — promoted N, removed M --files .planning/ROADMAP.mdgsd-sdk query commit是 GSD SDK 的提交查詢配合--files只提交規(guī)劃文檔變更避免把工作區(qū)其它無關(guān)改動一起卷入。第 7 步匯報評審結(jié)果命令最后向用戶輸出結(jié)構(gòu)化匯總## Backlog Review Complete Promoted: {list of promoted items with new phase numbers} Kept: {list of items remaining in backlog} Removed: {list of deleted items}三份清單分別對應(yīng) Promote / Keep / Remove 的最終落盤結(jié)果晉級項需要列出新階段號保留項仍在999.x區(qū)間刪除項則徹底消失。晉級語義的底層驗證phase.add 的返回值與落盤細節(jié)gsd-sdk query phase.add --raw之所以能充當(dāng)“尋找下一個順序階段號”的權(quán)威手段是因為其返回值直接來自對 ROADMAP 與目錄的實時計算。phaseAdd在非 dry-run 模式下返回結(jié)構(gòu)phase-lifecycle.ts#L218-L232包括字段含義phase_number新階段編號數(shù)字轉(zhuǎn)字符串后padded左補零的編號如05用于目錄與文件命名name階段的描述文本slug由描述生成的目錄 slug 片段directory相對項目根的新階段目錄路徑naming_modeconfig.phase_naming的實際取值默認(rèn)sequential在 dry-run--dry-run模式下還會額外返回dry_run: true與roadmap_entry即將寫入的 ROADMAP 條目方便在真正寫入前預(yù)覽編號與條目內(nèi)容。并發(fā)安全方面readModifyWriteRoadmapMd的路由級寫鎖保證兩個并發(fā)phase.add不會看到同一個最大階段號——這正是把“自動分配下一個編號”委托給 SDK 而不是由 Agent 手工數(shù)編號的根本原因。與相鄰命令的分工capture、discuss、plan 與 review要把 review-backlog 放在整個 GSD 工作流里理解可以參考 get-shit-done/workflows/help/modes/full.md 等文檔對命令族的組織。Backlog 相關(guān)的生命周期大致是捕獲/gsd:capture --backlog 描述把想法寫入## Backlog調(diào)用 add-backlog 工作流產(chǎn)生999.x條目與目錄孕育/gsd:discuss-phase 999.x與/gsd:plan-phase 999.x在積壓目錄內(nèi)累積*-CONTEXT.md、*-RESEARCH.md等制品評審/gsd:review-backlog定期清理這一“停車區(qū)”parking lot把成熟的想法晉級為正式階段、刪除過期的想法。該流程的正確性在測試中有覆蓋例如 tests/bug-3135-capture-backlog-workflow.test.cjs 驗證了 capture backlog 工作流與后續(xù) review-backlog 提示的銜接tests/roadmap.test.cjs 則覆蓋 ROADMAP 結(jié)構(gòu)解析與 Backlog 相關(guān)條目的處理??偨Y(jié)與最佳實踐永遠不要手工猜測下一個 999.x 或正式階段號加 Backlog 用phase.next-decimal 999晉級用phase.add兩者都由 SDK 基于當(dāng)前 ROADMAP 與目錄實時計算并加鎖寫入天然避免編號沖突尤其稀疏編號如 999.1、999.3 時。磁盤與 ROADMAP 必須成對變更無論是 capture 的“先寫條目后建目錄”還是 review-backlog 的“改名目錄 移動制品 移動條目 去掉 (BACKLOG) 補 Depends on”都要求在文件系統(tǒng)與文檔之間保持一致任何一邊的滯后都會破壞后續(xù)統(tǒng)計與鉤子檢測。晉級是人工決策review-backlog 通過 AskUserQuestion 逐項征詢 Promote / Keep / Remove絕不自動刪除用戶想法也絕不讓未就緒想法悄悄進入正式序列。提交保持原子用gsd-sdk query commit --files .planning/ROADMAP.md單獨提交規(guī)劃變更保持倉庫歷史清晰。至此你已經(jīng)可以完整地理解并執(zhí)行一次 Backlog 治理列出 999.x 積壓項 → 讀取 ROADMAP 與累積制品 → 逐項三選一 → 晉級者重編號并遷移、刪除者清理 → 原子提交 → 輸出三清單報告?!久赓M下載鏈接】get-shit-doneA light-weight and powerful meta-prompting, context engineering and spec-driven development system for Claude Code by T?CHES.項目地址: https://gitcode.com/GitHub_Trending/getshi/get-shit-done創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考