SpecKit筆記整理
Spec Kit 核心概念
Spec Kit 是一個利用 AI 協助產生和修改軟體規格的工具,旨在解決從需求到開發過程中的溝通與掌控問題。
對不同角色的價值與影響
-
專案經理 (PM)
- 優點:能夠快速將約 20% 的核心需求直接轉化為初步可開發的成果,並在此基礎上進行迭代修改。
- 痛點:傳統流程中,一旦需求交付給工程師,進度往往變得難以掌控。
-
工程師 / 專案分析師
- 價值提升:可藉由 AI 產出的規格文件,學習並思考過往難以觸及的「邊緣案例」(Edge Cases),從而提升自身能力。
- 訓練機會:將 AI 產出的規格文件視為學習材料,鍛鍊自己的規格分析與設計能力。
規格與開發流程
-
規格債 (Specification Debt)
- 若不重視或不閱讀規格,未來將會承受修正和溝通所帶來的額外成本。
-
AI 與程式碼
- AI 無法解決人本身無法解決的問題。
- 程式碼如同 Docker 容器,可以隨時拋棄並根據新規格重新產生。
-
協作方式
- 專案經理應與團隊一同審閱 PRD (產品需求文件)。
- 對於 AI 產出的規格 (
spec.md),若有不滿意的部分,可以直接刪除或修改。
Spec Kit 產出的關鍵檔案
-
research.md- 用途:這是 AI 分析網路資料後,對專案架構與技術選型的評估報告。
- 價值:當團隊對架構沒有靈感或想法不夠清晰時,可作為基礎進行修改。提供多種替代方案以擴展知識領域(例如:Dapper vs. Database First vs. EF Core Code First 的密碼儲存策略比較)。
-
quickstart.md- 用途:指導工程師如何快速啟動與使用此專案。
-
openapi.yaml- 用途:可用於定義 API 規格,是一個值得研究的實用工具。
-
憲章 (Charter)
- 用途:可定義專案中通用的重要函式庫或規範,但也可以透過
Claude.md,Gemini.md等檔案進行更靈活的設定。 - 特性:憲章適用於每個專案,應納入版本控管。前後端專案的憲章內容會有所不同。
- 用途:可定義專案中通用的重要函式庫或規範,但也可以透過
工作流程與最佳實踐
-
修改規格
- 可透過與 AI 聊天的方式來修改
spec.md。 - 當規格過於複雜時,應進行切割(例如:前後端分離)。
- 可透過與 AI 聊天的方式來修改
-
處理變更
- 情境:在 Sprint 進行中,發現需要修改「憲章」。
- 原則:遵循 Scrum 原則,不動到當前的 Sprint Task。將其視為舊專案的一部分,待下一個 Sprint 再進行修改。
- 情境:
spec.md產出後,程式碼已完成,但臨時需要變更程式碼。 - 建議:不要用
specify指令去回補規格,而是直接命令 AI 修改spec.md,然後再重新產生程式碼。plan.md和task.md不是最重要的,可以不保留,但spec.md極為重要,操作前務必先 commit。
-
人工介入開發
- 當手動修改程式碼後,應讓 AI 更新
spec.md和README.md中的功能需求規格。
- 當手動修改程式碼後,應讓 AI 更新
-
重要提示詞 (Prompt)
- 記下這個重要的提示詞範本:
copilot --allow-all-tools --allow-all-paths -p 'Run Duotify.Membership.Api project and fix issues'
- 記下這個重要的提示詞範本:
-
產生線框圖 (Wireframe)
自動化與工具整合
-
使用 Gemini CLI 呼叫 Copilot
- 目標:自動化 Spec Kit 流程。
- 步驟:
- 將用戶提示詞整理並寫入
PROMPT.txt。 - 根據是否為首次執行,帶上
--continue參數來呼叫copilot命令。 - 任務結束後,產生一份中文的摘要作為 commit 訊息,並自動提交變更。
- 如果還有後續步驟(非進入下一階段),則繼續執行。
- 將用戶提示詞整理並寫入
-
其他
- 學習狀態機(FSM):有助於理解複雜的流程與狀態轉換。
- 英文的重要性:在與 AI 互動和閱讀技術文件時,英文能力至關重要。