GitHub 開源的規範驅動開發工具包,通過結構化的規範和計畫引導 AI 編碼助手生成高品質代碼
GitHub Spec Kit 專案詳細介紹
專案概述
GitHub Spec Kit 是由 GitHub 開源的一款規範驅動開發(Spec-Driven Development, SDD)工具包。它為 AI 編碼助手提供了一套結構化的工作流程,透過先編寫詳細規範再生成程式碼的方式,改變了傳統的「先編碼後寫文件」的開發模式。
專案地址: https://github.com/github/spec-kit
核心理念
什麼是規範驅動開發?
規範驅動開發是一種以規範(Specification)為核心的軟體開發方法論,其核心思想是:
- 規範優先: 在編碼之前先建立詳細的產品需求文件(PRD)和技術實作計畫
- 規範即真相: 規範成為專案的單一真相來源(Single Source of Truth)
- 動態演進: 規範不是靜態文件,而是隨專案演進的「活文件」
為什麼需要 Spec Kit?
在使用 AI 編碼助手(如 Claude Code, GitHub Copilot, Gemini CLI)時,常見問題包括:
- 模糊的輸入導致錯誤的輸出: AI 助手只能根據提示詞生成程式碼,缺乏專案整體理解
- 假設性編碼: AI 可能做出不符合實際需求的假設
- 缺乏架構約束: 生成的程式碼可能與現有系統架構不匹配
- 品質不一致: 沒有統一標準,程式碼品質參差不齊
Spec Kit 透過提供結構化框架解決這些問題,確保 AI 助手能夠準確理解專案意圖並生成高品質程式碼。
核心元件
1. Specify CLI
Specify CLI 是一個基於 Python 的命令列工具,用於快速初始化專案的 SDD 鷹架。
安裝方式:
# 使用 uvx 安裝(推薦)
uvx --from git+https://github.com/github/spec-kit.git specify init <PROJECT_NAME>
# 或者持久化安裝
uv tool install specify-cli --from git+https://github.com/github/spec-kit.git
主要功能:
- 檢查已安裝的工具(git, claude, gemini, code, cursor-agent 等)
- 自動下載適配的模板文件
- 初始化專案的 SDD 結構
- 支援多種 AI 編碼助手
使用範例:
# 初始化新專案並指定 AI 助手
specify init my-project --ai claude
specify init my-project --ai copilot
specify init my-project --ai gemini
# 在目前目錄初始化
specify init . --ai claude
specify init --here --ai copilot
# 強制合併到非空目錄
specify init . --force --ai claude
# 跳過 Git 初始化
specify init my-project --ai gemini --no-git
2. 模板和輔助腳本
Spec Kit 提供了一套完整的模板系統,包括:
Constitution.md (專案憲章)
專案的基本原則和不可協商的準則,例如:
- 測試方法要求
- 架構約定
- 程式碼風格規範
- 技術棧選擇
這是一個強大的工具,幫助組織建立「有主見的技術棧」。
規範模板
定義了規範文件應該包含的內容結構。
技術計畫模板
規定了技術實作計畫的格式和必需要素。
任務分解模板
將大型功能拆解為可執行的小任務。
輔助腳本
位於 powershell 或 bash 資料夾中,用於確保 SDD 鷹架的一致性應用。
工作流程
Spec Kit 遵循四步開發流程:
步驟 1: 定義規範 (/specify)
使用 /specify 命令提供高層次的專案描述,重點關注「做什麼」和「為什麼做」,而不是技術細節。
範例:
/specify
建構一個任務管理應用程式 Taskify,支援:
- 使用者認證
- 即時協作
- 行動端支援
- 專案建立和任務分配
- Kanban 看板追蹤進度
AI 編碼助手會生成完整的產品規範文件(PRD),包括:
- 專案動機和目標
- 核心功能描述
- 使用者故事
- 非功能性需求
- 驗收標準
步驟 2: 制定技術計畫 (/plan)
使用 /plan 命令提供高層次的技術方向,AI 會生成詳細的技術實作計畫。
範例:
/plan
使用 React + TypeScript 前端
Node.js 後端
PostgreSQL 資料庫
生成的技術計畫包括:
- 系統架構設計
- 技術棧選擇理由
- 資料模型設計
- API 設計
- 安全考量
- 效能最佳化策略
步驟 3: 任務分解 (/tasks)
/tasks
將技術計畫分解為可執行的小任務,每個任務包括:
- 任務描述
- 依賴關係
- 預期產出
- 驗收條件
步驟 4: 實作 (/implement)
/implement
AI 編碼助手根據規範、計畫和任務列表生成程式碼,並遵循測試驅動開發(TDD)原則。
核心特性
1. 跨 AI 助手相容
Spec Kit 支援多種主流 AI 編碼助手:
- Claude Code (Anthropic)
- GitHub Copilot
- Cursor
- Gemini CLI (Google)
- Windsurf
- Qwen Code
- OpenCode
- Codex
- 以及更多...
2. 測試驅動開發整合
內建 TDD 支援,確保:
- 每個功能都有對應的測試
- 優先使用真實環境測試而非模擬
- 合約測試(Contract Tests)在實作前必須完成
3. 審查與驗收清單
每個階段都有明確的驗收標準,包括:
- 規範是否完整?
- 技術計畫是否可行?
- 任務是否可獨立執行?
- 程式碼是否通過所有測試?
4. 迭代最佳化機制
支援在任何階段返回修改:
- 規範不清晰?更新規範
- 架構需要調整?修改技術計畫
- 任務太大?重新分解
適用場景
1. 綠地專案 (Zero-to-One)
從零開始的新專案,透過提前規劃避免 AI 生成通用化解決方案。
2. 功能擴展 (N-to-N+1)
為現有複雜系統添加新功能,這是 Spec Kit 最強大的應用場景:
- 明確新功能與現有系統的互動方式
- 編碼架構約束確保程式碼風格一致
- 讓新程式碼感覺像原生功能而非「修補程式」
3. 遺留系統現代化
重構遺留系統時:
- 在現代規範中捕捉核心業務邏輯
- 設計全新架構
- 讓 AI 從頭重建系統,不帶技術債
專案結構範例
使用 Specify CLI 初始化後的專案結構:
my-project/
├── .specify/ # Spec Kit 設定和模板
│ ├── templates/ # 規範、計畫、任務模板
│ ├── scripts/ # 輔助腳本
│ └── config.json # 設定檔
├── constitution.md # 專案憲章
├── spec.md # 產品規範文件
├── plan.md # 技術實作計畫
├── tasks/ # 任務列表
│ ├── task-001.md
│ ├── task-002.md
│ └── ...
└── src/ # 原始碼目錄
實際案例: Taskify 專案
Spec Kit 官方提供了一個完整的範例專案 Taskify,展示了如何使用規範驅動開發建構一個 Kanban 風格的專案管理工具。
功能特性:
- 5個預設使用者,無需密碼登入
- 多專案管理
- Kanban 看板視圖
- 拖曳式任務管理
- 任務分配與狀態追蹤
- 評論功能(只能編輯/刪除自己的評論)
- 目前使用者任務高亮顯示
開發流程:
- 使用
/specify命令描述 Taskify 的需求 - AI 生成詳細的產品規範
- 使用
/speckit.clarify進行細節澄清 - 使用
/plan生成技術實作計畫 - 驗證審查與驗收清單
- 生成並執行任務
優勢與價值
對開發者的價值
- 減少猜測: 明確的規範消除歧義
- 提高品質: 結構化流程確保程式碼品質
- 便於協作: 規範成為團隊溝通的共同語言
- 易於維護: 文件和程式碼同步演進
對團隊的價值
- 統一標準: 透過 Constitution 建立團隊規範
- 知識沉澱: 規範和計畫成為可複用的資產
- 減少返工: 提前規劃減少實作階段的問題
- 可追溯性: 清晰的決策記錄
對 AI 助手的價值
- 上下文理解: 完整的規範提供充足的上下文
- 約束引導: 技術計畫提供架構約束
- 任務聚焦: 小粒度任務讓 AI 更專注
- 品質保證: 內建的驗收標準指導程式碼生成
局限性與注意事項
1. 學習曲線
對小型簡單專案可能顯得過於繁瑣,需要權衡投入產出比。
2. 實驗性質
Spec Kit 仍處於實驗階段,GitHub 團隊明確表示還有很多問題需要回答。
3. 模板靈活性
內建模板基於 GitHub 團隊的最佳實踐,但可能需要根據組織需求調整。
4. 現有專案整合
目前主要面向新專案,對現有專案的支援還在探索中。
社群與生態
相關專案
- SpecLang: GitHub 2023年的研究專案,探索自然語言規範作為程式碼生成的主要來源
- AWS Kiro: AWS 的「代理式」IDE,讓 AI 直接從規範建構軟體
- Codeplain: 使用專用規範語言 Plain 的新創專案
- Tessl: 提供規範驅動框架和註冊表的平台
社群回饋
社群對 Spec Kit 的主要討論點:
- 標準化需求: 使用者希望建立共享框架,避免 AI 輔助開發的碎片化
- 跨團隊協作: 建議支援跨儲存庫共享規範和產物
- 自動生成: 希望能從現有程式碼庫自動生成 Constitution
- 現有專案支援: 呼籲更好地支援已開發專案的整合
取得支援
- GitHub Issues: https://github.com/github/spec-kit/issues
- 文件: https://speckit.org/
- 部落格文章: https://github.blog/ai-and-ml/generative-ai/spec-driven-development-with-ai-get-started-with-a-new-open-source-toolkit/
- 支援頁面: https://support.claude.com (Claude 相關問題)
總結
GitHub Spec Kit 代表了 AI 輔助軟體開發的一個重要方向:從「即興編碼」(Vibe Coding)轉向「有計畫的建構」。透過提供結構化的規範驅動開發框架,它幫助開發者和 AI 助手建立了更有效的協作模式。
雖然還處於實驗階段,但 Spec Kit 已經展示了其在複雜專案開發中的價值。隨著工具的不斷完善和社群的持續貢獻,規範驅動開發有望成為 AI 時代軟體工程的重要實踐方法。
授權條款: MIT License
最新版本: 請造訪 https://github.com/github/spec-kit/releases 取得最新發布版本