Communitygithub.com

需求規格驅動功能開發

強制執行「先規劃、後編碼」的規範,確保在實作複雜的多檔案功能、API 端點或資料庫遷移前,先撰寫並核准正式的規格文件(SPEC.md)。

需求規格驅動功能開發 是什麼?

這項技能實作「規格先行閘道協定」,專為需要處理複雜、跨多檔案功能的自主編碼代理程式(如 Claude Code、Cursor、Codex)設計。它能防止代理程式直接跳入編輯階段,避免產生語境偏移、幻覺 API 及浪費 token 的試錯除錯。啟動後,代理程式必須先掃描專案上下文與限制條件,然後依據模板在 `.specs/` 目錄下建立正式的 SPEC.md 文件,其中清楚定義目標、資料合約、檔案修改邊界矩陣及實作檢查清單。在閘道檢查點,互動模式會暫停並要求使用者核准,而自主子代理模式則會驗證邊界矩陣並在無衝突時繼續執行。如果實作過程中出現意外限制,技能也提供「中途修正協議」,允許在不中斷完整工作流程的情況下記錄並處理增量變更。最終會執行驗證(測試、型別檢查、Linter),並將完成的規格歸檔至 `.specs/completed/` 目錄。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jeffreyehogg/agent-skills/tree/HEAD/spec-driven-feature

在你喜歡的 AI 中提問

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

說明文件

規格驅動功能開發

總覽

此技能強制執行「先規劃、後編碼」的閘道協定。自主編碼代理程式常因直接跳入檔案編輯而失敗,導致語境偏移、幻覺 API 以及耗費 token 在試錯除錯上。

當此技能啟動時,在未草擬、驗證並核准正式規格(SPEC.md 或 .specs/<功能名稱>.md)之前,不得修改任何應用程式程式碼。


1. 第一階段:上下文與限制條件探查

草擬規格前:

  1. 辨識專案中現有的慣例、資料模型及 API 工具。
  2. 找到型別定義或 schema 檔案(例如 schema.prisma、drizzle/schema.ts、Zod schemas、OpenAPI 規格)。
  3. 除非必要,否則不要讀取整個檔案;檢查匯出內容、介面標頭及型別即可。

2. 第二階段:草擬 SPEC.md

閱讀 ./references/spec_template.md 並依照以下精確結構建立 .specs/<功能名稱>.md(或應要求建立在儲存庫根目錄的 SPEC.md):

  1. 目標、成功標準與明確的非目標: 清楚的 2 句話問題陳述、確定性的通過標準,以及明確不處理的範圍邊界。
  2. 資料合約與簽章: 精確的 TypeScript 介面、資料庫欄位型別或 API 架構。
  3. 檔案修改邊界矩陣: 明確的「建立」、「修改」(標明目標函式/行數)及「禁止」路徑。
  4. 實作檢查清單與驗證協定: 精確的測試命令、Linter 檢查及邊界案例。

3. 第三階段:閘道檢查點(強制)

產生規格後:

  1. 互動模式(使用者工作階段): 呈現簡潔摘要,連結到規格檔案,指出任何架構取捨(若有多種有效方法,使用 ask_question),並在撰寫程式碼前請求確認:

    「我已在 SPEC.md 中草擬規格。請檢視建議的資料合約與檔案邊界矩陣。是否繼續實作?」

  2. 自主子代理模式: 如果由父層 Lead Orchestrator(例如來自 code-audit-orchestrator)呼叫,且該 Orchestrator 已提供核准的修正計畫,則驗證檔案邊界矩陣與「禁止」路徑零衝突,然後進入第四階段。
  3. 硬停止: 在互動工作階段中,等待核准或回饋。在獲得綠燈前,不得碰觸原始碼檔案。

4. 第四階段:分階段執行與中途修正協定

核准後:

  1. 選擇性沙盒隔離: 對於多檔案變更,或當主要工作目錄樹有無關變更時,在修改檔案前,透過 git-worktree-isolator 佈建隔離的工作目錄樹。
  2. 以離散、原子化的里程碑實作功能(例如 Schema $\to$ 核心邏輯 $\to$ API 處理器 $\to$ 使用者介面/整合)。
  3. 在規格檔案中,隨著里程碑完成標記進度核取方塊。
  4. 讓 git 提交保持在單一里程碑範圍內。

應急措施:中途規格修正

如果實作過程中發現未預見的限制(例如「禁止」檔案必須修改、上游 SDK 型別與草擬的合約不符、或使用者在進行中修改需求):

  1. 立即停止受影響里程碑的編輯。
  2. 在規格檔案的 ## 6. 規格修正(增量日誌) 區段中新增一筆記錄,包含:
    • 觸發條件/阻礙因素: 為何原始合約無法維持。
    • 修正區段與增量變更: 資料合約或檔案修改邊界矩陣的精確變更。
  3. 如果增量變更觸及先前標記為「禁止」的檔案,或改變了公開 API / schema 合約,則暫停並請求使用者快速確認後再繼續。如果增量變更純屬內部(例如提取內部的輔助檔案),則在規格中記錄增量變更並繼續執行。

5. 第五階段:驗證與歸檔

  1. 執行第二階段中指定的確定性測試套件。
  2. 確認所有型別檢查與 Linter 都乾淨通過。
  3. 將規格狀態更新為「已完成」,並歸檔至 .specs/completed/YYYY-MM-DD-<功能名稱>.md(若儲存庫不追蹤 .specs/ 目錄,則移除暫存規格檔案)。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相關技能