Community生產力與協作github.com

GalRogozinski/sdd

引導使用者採用 Spec-Driven Development(規格驅動開發)方法論,搭配 GitHub 的 Spec-Kit,為新專案(Greenfield)與現有程式碼庫(Brownfield)建立可執行的規格,並在生成成果時自動提供結構化摘要與功能狀態追蹤。

sdd 是什麼?

這項技能專為 AI 驅動的開發工作流程而設計,幫助使用者在 Claude Code、Cursor 或 GitHub Copilot 等平台上,順利導入 Spec-Driven Development (SDD) 方法論。SDD 的核心在於將規格視為可執行的產出物,而非單純的文件;使用者在定義好「做什麼」(Intent-driven)之後,AI 能根據規格直接生成可運作的程式碼。此技能涵蓋 Greenfield(全新專案)與 Brownfield(既有程式碼庫)兩種情境,提供完整的 6 步驟流程或逆向工程引導。每次執行 SDD 命令(如 `/speckit.specify`)後,系統會自動偵測並產生 10 點結構化摘要,包含關鍵決策、生成項目、待審查事項與功能進度條,並提供四種回饋選項(A: 繼續、B: 修改、C: 解釋、D: 顯示完整狀態),讓使用者能持續參與、快速迭代。此外,所有使用者故事都必須包含 Gherkin 格式的驗收條件,以確保規格的可測試性;若故事涉及 LLM 行為,則需要額外的「行為驗收條件(Behavioural ACs)」來評估非確定性輸出。技能也內建功能狀態追蹤儀表板,可透過 `/speckit.status` 叫用,讓開發者掌握專案整體進度。

相容平台✓Claude Code✓Codex CLI✓Cursor✓Gemini CLI✓OpenCode✓Windsurf
npx skills add https://github.com/GalRogozinski/skills/tree/HEAD/skills/sdd

Installed? Explore more 生產力與協作 skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

在你喜歡的 AI 中提問

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

說明文件

規格驅動開發 (SDD) 技能

引導使用者使用 GitHub 的 Spec-Kit 進行規格驅動開發——這是一種翻轉傳統軟體開發的方法論,讓規格成為可執行的產出物,並直接產生可運作的實作。

核心哲學

規格驅動開發強調:

  • 意圖驅動開發:先定義「做什麼」再談「怎麼做」
  • 豐富的規格建立:使用防護措施與組織原則
  • 多步驟精煉:非一次性程式碼生成
  • AI 原生:高度依賴先進的 AI 能力

切記:這是 AI 原生開發。規格不只是文件——它們是直接驅動實作的可執行產出物。AI 代理會根據規格中所定義的意圖,產生符合需求的運作程式碼。

驗收條件:Gherkin 格式(必要)

每個 spec.md(或 specify.md)中的使用者故事都必須附帶 Gherkin 風格的驗收條件,以及其散文敘述。這適用於 Greenfield 與 Brownfield 專案,適用於每個使用者故事,無論該產出物是由 /speckit.specify 產生,還是為不使用 CLI 產生模板的儲存庫手動撰寫。散文說明故事的內容;Gherkin 情境則精確說明如何驗證——這就是讓規格「可執行」而非「描述性」的關鍵。

格式——在每個使用者故事下方,使用圍籬代碼塊 gherkin,包含 1 到 4 個情境:先放快樂路徑,然後是對該故事重要的邊界/負面案例(非規格中所有邊界案例——那些屬於規格自身的「邊界案例」段落;這裡只放與該故事相關的)。

Scenario: <簡短、具體的名稱——請勿使用「happy path」>
  Given <前提條件/起始狀態>
  When <行動者採取的單一行動>
  Then <可觀察、可測試的結果>
  And <額外結果,如有需要>

Scenario: <該故事的邊界/負面案例>
  Given <前提條件>
  When <行動>
  Then <結果——「不應該發生什麼」也是有效的 Then>

撰寫規則:

  • 每個情境一個 When。多個行動代表多個情境——這讓每個情境對應一個測試。
  • Then 必須是可觀察的,而非內部狀態:「使用者看到確認通知」,而非「狀態正確更新」。如果你無法說明某個人如何檢查它,代表尚未準備好。
  • 重複使用規格本身的詞彙。 Given/When/Then 步驟應使用與使用者故事和功能需求相同的名詞(資產名稱、合約類型、欄位名稱)——而非改寫。
  • 不要將功能需求直接重寫為 Gherkin。 驗收條件是驗證 故事;FR 則分開追溯。重疊沒問題,但將每個 FR 都複製成一個情境則不恰當。
  • 當一個故事有多個情境時,為情境編號以便追蹤:Scenario: AC-1 — ...、Scenario: AC-2 — ...(單一情境的故事可選擇性使用)。

進行摘要時(使用 10 點模板,「產生了什麼」),請回報情境數量,與使用者故事/成功條件數量並列,例如 「5 個使用者故事(11 個 Gherkin 情境),8 個成功條件。」 如果某個使用者故事缺少驗收條件,請在「🔍 重要待審項目」中標記,然後再移動到 /speckit.plan——基於缺乏驗收條件的故事所制定的計畫,通常會導致測試規格不足。

行為 AC:僅適用於 LLM 參與的故事

Gherkin 假設一次執行就能決定通過/失敗。但當模型的輸出決定結果時,這就不適用了:一個非確定性故事的一次綠色執行幾乎無法證明任何事。對於這類故事,請在 Gherkin 區塊下方新增一個行為 AC(Behavioural ACs) 區塊。

僅當故事的觀察結果取決於模型的輸出時才產生它。 範例:提示詞、系統提示詞、任務、技能檔案或工具描述變更;模型選擇動作、判斷或決定某件事,或撰寫使用者面對的文字;模型或其參數變更。請勿對確定性程式碼、已儲存資料的 UI 呈現、基礎設施,或故事中包含模型呼叫但其輸出未被斷言的情況,產生此區塊。 有疑問時,先問一個問題;不要投機性地新增區塊。一個完全沒有 LLM 參與故事的規格,就不會有任何行為 AC,也不要有空的佔位符。

格式:每個符合資格的故事一個區塊,直接放在其 Gherkin 之後。

**行為 AC**(LLM 參與:<模型決定的內容>)
- **案例:** <案例數量>,來自 `<案例集的路徑>`,取自 <真實失敗 / 軌跡 / 逐字稿>;僅在需要填補缺口時使用合成輸入,絕不使用合成預期輸出
- **執行次數:** k = <每次案例的執行次數>(≈ 3 / 預期失敗率;未知時為 20–30)
- **通過門檻:** <指標> ≥ <閾值> 在 k 次執行中,超越基線且差距大於雜訊(與目前版本進行配對比較)
- **評分者:** 程式碼檢查 | LLM 評審(二元,每個失敗模式一個)| 人類;評審也需說明其驗證方式:在保留的人類標籤上 TPR/TNR ≥ 0.9(最低 0.8),或直接標明「未驗證(UNVALIDATED)」
- **指令:** `<一個可執行並輸出通過率、成本和延遲的指令>`

規則:

  • 只有真實的模型執行才算數。 Mock、關鍵字模擬或預測分數都不是結果。如果無法執行(成本、金鑰問題),請標明該故事為「未評估(UNEVALUATED)」。不要偽造數字。
  • 優先使用程式碼評分者。 只有在程式碼無法檢查的情況下,才使用 LLM 評審。
  • Gherkin 仍然適用。 Gherkin 情境涵蓋確定性的外殼(產出的成品、守住的護欄)。行為 AC 則涵蓋模型的行為。
  • plan.md 承載評估設定: 案例集位置、執行指令、每次執行成本,以及執行時機(每次 PR 執行,或僅在合併前執行,如果成本高昂)。

進行摘要時,請分開計算,例如 「5 個使用者故事(11 個 Gherkin 情境,其中 2 個包含行為 AC)」。在「重要待審項目」下標記任何缺少行為 AC 區塊的 LLM 參與故事,以及任何標記為 UNVALIDATED 的評審。

快速決策樹

這是新專案(Greenfield)嗎?

→ 請參閱 Greenfield 工作流程 了解完整的 6 步驟流程

這是現有程式碼庫(Brownfield)嗎?

→ 請參閱 Brownfield 工作流程 了解逆向工程與整合指引

需要安裝說明嗎?

→ 請參閱 安裝指南 了解設定與疑難排解

快速安裝

推薦(永久安裝):

uv tool install specify-cli --from git+https://github.com/github/spec-kit.git

一次性使用:

uvx --from git+https://github.com/github/spec-kit.git specify init <PROJECT_NAME>

驗證:

specify check

如需詳細安裝選項、疑難排解與環境變數,請參閱安裝指南。

支援的 AI 代理

適用於:

  • ✅ Claude Code
  • ✅ GitHub Copilot
  • ✅ Gemini CLI
  • ✅ Cursor
  • ✅ Qwen Code
  • ✅ opencode
  • ✅ Windsurf
  • ✅ Kilo Code
  • ✅ Auggie CLI
  • ✅ CodeBuddy CLI
  • ✅ Roo Code
  • ✅ Codex CLI
  • ✅ Amp
  • ⚠️ Amazon Q Developer CLI(不支援斜線指令的自訂引數)

產出物摘要與回饋循環

關鍵工作流程:在任何 SDD 指令產生或修改產出物之後,自動遵循此回饋循環,以保持使用者參與:

每個指令完成後

  1. 偵測產出物變更

    • 識別哪些產出物被建立或修改:
      • constitution.md(專案原則)
      • spec.md(需求規格)
      • plan.md(技術實作計畫)
      • tasks.md(可執行任務分解)
      • Brownfield 工作流程的分析報告
  2. 讀取並摘要

    • 讀取相關產出物
    • 提取關鍵資訊:
      • 針對 constitution.md:核心原則、編碼標準、限制條件
      • 針對 spec.md:主要需求、使用者故事(及其 Gherkin 驗收條件)、成功條件
      • 針對 plan.md:技術棧選擇、架構決策、里程碑
      • 針對 tasks.md:任務數量、主要任務類別、相依性
      • 針對分析報告:當前模式、技術債、整合點
  3. 呈現結構化摘要(使用下方的 10 點模板)

    • 展示產生了什麼以及原因
    • 用理由突出最重要的決策
    • 包含品質指標與注意事項
    • 保持摘要重點明確且可行
    • 每個部分使用清晰標題
  4. 包含功能狀態(混合方式)

    • 每個摘要中包含簡短狀態行
    • 使用 /speckit.status 按需提供詳細狀態
    • 請參閱下方的「功能狀態追蹤」章節
  5. 提供回饋選項

    • 選項 A:「看起來不錯,繼續下一步」
    • 選項 B:「我想修改 [特定章節]」
    • 選項 C:「套用這些變更重新產生:[使用者輸入]」
    • 選項 D:「解釋為什麼做出 [特定決策]」

10 點摘要模板

在任何 SDD 指令完成後,使用此結構化格式:

## ✅ [指令名稱] 已完成 - 以下是剛剛發生的事

### 🎯 主要決策(前 3 項)
1. [決策] - **理由:** [為何選擇此項]
2. [決策] - **理由:** [為何選擇此項]
3. [決策] - **理由:** [為何選擇此項]

### 📋 產生了什麼
- [產出物 1]:[內容簡短說明]
- [產出物 2]:[內容簡短說明]

### 🔍 重要待審項目(前 3 項)
1. [需要檢查的關鍵項目及其重要性]
2. [需要驗證的重要細節及其潛在影響]
3. [需要考慮的邊界案例及其對設計的影響]

### ⚠️ 注意事項(前 2 項)
- [潛在問題或陷阱] - **如何避免:** [指引]
- [常見錯誤] - **如何避免:** [指引]

### 🔄 這讓下一步可以做什麼(2 個選項)
- **選項 1:** [下一步] - 最適合:[條件]
- **選項 2:** [替代步驟] - 最適合:[條件]

📊 **功能狀態:** [當前功能名稱]([階段])→ 下一步:[下一個功能]
   進度:[●●●○○] [X]% | 已完成:[N] / [總數] 功能 | 相依性:[狀態]

**您的選項:** [A] 繼續 [B] 修改 [C] 進一步解釋 [D] 顯示完整狀態

範例:增強型摘要(/speckit.specify 之後)

## ✅ Specify 已完成 - 以下是剛剛發生的事

### 🎯 主要決策
1. **認證方式:JWT 令牌** - 理由:無狀態架構、水平擴展性佳、業界標準
2. **密碼要求:12 個字元以上且具複雜性** - 理由:在安全性(NIST 指南)與可用性之間取得平衡
3. **工作階段逾時:24 小時** - 理由:Web 應用程式的標準,在安全性與使用者便利性之間取得平衡

### 📋 產生了什麼
- `.speckit/features/user-auth/specify.md`:完整需求,包含 5 個使用者故事(12 個 Gherkin 驗收條件情境)、8 個成功條件、3 個邊界案例

### 🔍 重要待審項目
1. **密碼重設流程** - 驗證電子郵件需求是否與您的基礎設施相符(SMTP 伺服器、範本)
2. **多因子驗證** - 目前標記為「未來增強」;可能需要納入 MVP
3. **速率限制** - 設定為每 15 分鐘 5 次登入嘗試;考慮是否符合您的安全政策

### ⚠️ 注意事項
- **未指定電子郵件服務相依性** - 如何避免:將電子郵件服務加入 plan.md 的相依性中
- **使用者資料的 GDPR 合規** - 如何避免:檢視資料保留與使用者刪除需求

### 🔄 這讓下一步可以做什麼
- **選項 1:** 執行 `/speckit.plan` 來設計技術實作 - 最適合:需求看起來沒問題
- **選項 2:** 修改 specify.md - 最適合:您需要調整需求或新增功能

📊 **功能狀態:** user-authentication(已規格化)→ 下一步:profile-management
   進度:[●●○○○] 40% | 已完成:1 / 5 功能 | 相依性:database-setup ✅

**您的選項:** [A] 繼續進行規劃 [B] 修改需求 [C] 解釋 JWT 的選擇 [D] 顯示完整狀態

何時跳過摘要

僅在以下情況跳過摘要步驟:

  • 使用者明確要求「跳過摘要」或「自動執行所有步驟」
  • 重新執行指令但產出物無變更
  • 指令失敗或產生錯誤(此時應進行疑難排解)

此工作流程的好處

  • 消除「黑箱」感:清楚說明產生了什麼以及原因
  • 實現早期回饋:在實作前就發現誤解
  • 保持敏捷性:快速審查,使用結構化格式,無需冗長的核准流程
  • 建立信任:使用者看到 AI 的推理過程與決策理由
  • 提供脈絡:功能狀態讓使用者了解專案整體進度

功能狀態追蹤

混合方式

每次執行 SDD 指令後,在摘要中包含簡短的功能狀態行。使用 /speckit.status 按需提供詳細狀態。

簡短狀態行格式

在每個摘要結尾包含以下內容:

📊 **功能狀態:** [當前功能名稱]([階段])→ 下一步:[下一個功能名稱]
   進度:[●●●○○] [X]% | 已完成:[N] / [總數] 功能 | 相依性:[相依項目] ✅/⏸️

階段值:

  • 規格化中(Specifying,20% 完成)
  • 規劃中(Planning,40% 完成)
  • 任務分解中(Tasking,60% 完成)
  • 實作中(In Progress,80% 完成)
  • 已完成(Complete,100% 完成)

進度指示符:

  • 已完成階段使用實心圓(●)
  • 待完成階段使用空心圓(○)
  • 根據階段計算百分比

詳細狀態儀表板

當使用者要求完整狀態(選項 D)或執行 /speckit.status 時,顯示:

📊 專案功能狀態儀表板

🎯 當前功能
├─ [功能名稱]([階段] - [X]% 完成)
│  ├─ ✅ 需求已規格化
│  ├─ 🔄 實作計畫進行中
│  ├─ ⏸️  任務尚未開始
│  └─ ⏸️  實作尚未開始
│  阻礙:[無 | 說明]
│  相依性:[功能名稱] ✅

✅ 已完成功能([數量])
├─ [功能 1](100% 完成)
└─ [功能 2](100% 完成)

📋 即將進行功能([數量])
├─ [功能 3](相依於:[當前功能])
└─ [功能 4](相依於:[功能 3])

⚠️ 受阻功能

…

[為簡潔起見已截斷]

相關技能