<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Spec Kit on KnightLi的博客</title>
        <link>https://knightli.com/zh-tw/tags/spec-kit/</link>
        <description>Recent content in Spec Kit on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-tw</language>
        <lastBuildDate>Mon, 25 May 2026 00:19:14 +0800</lastBuildDate><atom:link href="https://knightli.com/zh-tw/tags/spec-kit/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>GitHub Spec Kit 是什麼？用規格驅動開發約束 AI 編程</title>
        <link>https://knightli.com/zh-tw/2026/05/25/github-spec-kit-spec-driven-development/</link>
        <pubDate>Mon, 25 May 2026 00:19:14 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/25/github-spec-kit-spec-driven-development/</guid>
        <description>&lt;p&gt;GitHub 的 &lt;strong&gt;Spec Kit&lt;/strong&gt; 是一個面向 AI 編程的新工具包，目標是幫助開發者實踐 &lt;strong&gt;Spec-Driven Development&lt;/strong&gt;，也就是規格驅動開發。&lt;/p&gt;
&lt;p&gt;它解決的問題很直接：現在很多 AI 編程工作流太像「邊聊邊寫」。人類給一個大概想法，Agent 立刻開始改代碼，短期看很快，但需求邊界、驗收標準、技術取捨和任務拆分往往沒有沉澱下來。項目稍微複雜一點，就容易變成一次性的 vibe coding。&lt;/p&gt;
&lt;p&gt;Spec Kit 的思路是反過來：先把規格寫清楚，再進入計劃、任務和實作。代碼不再是第一步，規格才是第一步。&lt;/p&gt;
&lt;h2 id=&#34;spec-kit-是什麼&#34;&gt;Spec Kit 是什麼？
&lt;/h2&gt;&lt;p&gt;Spec Kit 是 GitHub 開源的規格驅動開發工具包。它提供 &lt;code&gt;specify&lt;/code&gt; CLI、模板、腳本和面向 AI coding agent 的命令，讓團隊可以圍繞同一套結構化產物推進開發。&lt;/p&gt;
&lt;p&gt;它強調的不是「讓 AI 少問問題」，而是讓 AI 在寫代碼前先生成並完善這些內容：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;項目原則：團隊對品質、測試、體驗、性能等方面的約束；&lt;/li&gt;
&lt;li&gt;功能規格：要做什麼、為什麼做、使用者故事和功能需求；&lt;/li&gt;
&lt;li&gt;技術計劃：使用什麼技術棧、如何落地、有哪些架構決策；&lt;/li&gt;
&lt;li&gt;任務清單：把計劃拆成可執行步驟；&lt;/li&gt;
&lt;li&gt;實作過程：按任務逐步修改代碼，而不是一次性亂改。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這套流程讓 AI 編程更像工程協作，而不是一次提示詞表演。&lt;/p&gt;
&lt;h2 id=&#34;基本使用流程&#34;&gt;基本使用流程
&lt;/h2&gt;&lt;p&gt;官方 README 給出的入門流程大致是這樣：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uv tool install specify-cli --from git+https://github.com/github/spec-kit.git@vX.Y.Z
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;specify init my-project --integration copilot
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; my-project
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;初始化後，項目裡會生成 &lt;code&gt;.specify&lt;/code&gt; 目錄、模板、腳本和與 Agent 整合的命令。隨後在支援的 AI coding agent 中使用 &lt;code&gt;/speckit.*&lt;/code&gt; 命令推進開發。&lt;/p&gt;
&lt;p&gt;典型順序是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.constitution
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.specify
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.clarify
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.plan
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.tasks
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.implement
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;其中 &lt;code&gt;/speckit.constitution&lt;/code&gt; 用來建立項目原則，&lt;code&gt;/speckit.specify&lt;/code&gt; 描述產品需求，&lt;code&gt;/speckit.clarify&lt;/code&gt; 補齊模糊點，&lt;code&gt;/speckit.plan&lt;/code&gt; 生成技術計劃，&lt;code&gt;/speckit.tasks&lt;/code&gt; 拆任務，最後由 &lt;code&gt;/speckit.implement&lt;/code&gt; 執行實作。&lt;/p&gt;
&lt;p&gt;這和直接對 Agent 說「幫我做一個應用」差別很大。Spec Kit 要求你把「做什麼」和「怎麼驗收」先說清楚，再讓 Agent 動手。&lt;/p&gt;
&lt;h2 id=&#34;它改變了-ai-編程的入口&#34;&gt;它改變了 AI 編程的入口
&lt;/h2&gt;&lt;p&gt;傳統 AI 編程經常從代碼開始：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;我想做一個任務管理應用，幫我寫出來。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Spec Kit 更像這樣：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;先定義這個任務管理應用的使用者、場景、功能邊界、驗收標準和非目標；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;再根據這些規格選擇技術方案；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;然後拆成任務；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;最後逐步實作。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這個變化很重要。因為 AI 最擅長根據上下文執行，但如果上下文本身是鬆散的，執行速度越快，偏離方向也可能越快。Spec Kit 把上下文變成文件和模板，讓需求、計劃和任務都能被 review、修改和版本管理。&lt;/p&gt;
&lt;p&gt;換句話說，它不是讓 AI 更「自由」，而是讓 AI 在更清晰的工程軌道上自由發揮。&lt;/p&gt;
&lt;h2 id=&#34;核心命令怎麼理解&#34;&gt;核心命令怎麼理解？
&lt;/h2&gt;&lt;h3 id=&#34;speckitconstitution&#34;&gt;&lt;code&gt;/speckit.constitution&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;這是項目的「憲法」。它會生成或更新 &lt;code&gt;.specify/memory/constitution.md&lt;/code&gt;，用於記錄項目長期遵守的原則，例如代碼品質、測試標準、使用者體驗一致性、性能要求和技術決策規則。&lt;/p&gt;
&lt;p&gt;這一步適合寫團隊共識，而不是單個功能需求。&lt;/p&gt;
&lt;h3 id=&#34;speckitspecify&#34;&gt;&lt;code&gt;/speckit.specify&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;這是功能規格階段。你需要描述要構建什麼、使用者是誰、解決什麼問題、有哪些核心流程。&lt;/p&gt;
&lt;p&gt;官方特別強調：這一階段不要過早關注技術棧。先把 what 和 why 寫清楚，再討論 how。&lt;/p&gt;
&lt;h3 id=&#34;speckitclarify&#34;&gt;&lt;code&gt;/speckit.clarify&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;這是補問題的階段。很多需求第一次寫出來都會有空洞：權限怎麼處理？異常狀態是什麼？數據是否持久化？邊界條件如何驗收？&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/speckit.clarify&lt;/code&gt; 的價值，是讓 Agent 主動發現規格中的不確定點，並把回答記錄回規格文件，減少後面返工。&lt;/p&gt;
&lt;h3 id=&#34;speckitplan&#34;&gt;&lt;code&gt;/speckit.plan&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;這是技術計劃階段。到了這裡，才開始明確框架、數據庫、架構、API、測試策略和約束。&lt;/p&gt;
&lt;p&gt;如果說 &lt;code&gt;/speckit.specify&lt;/code&gt; 是產品語言，&lt;code&gt;/speckit.plan&lt;/code&gt; 就是工程語言。&lt;/p&gt;
&lt;h3 id=&#34;speckittasks&#34;&gt;&lt;code&gt;/speckit.tasks&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;這一步把計劃拆成可執行任務。好的任務清單應該能讓 Agent 逐步推進，也能讓人類看懂每一步的目的。&lt;/p&gt;
&lt;h3 id=&#34;speckitimplement&#34;&gt;&lt;code&gt;/speckit.implement&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;最後才進入實作。Agent 根據前面沉澱的規格、計劃和任務修改代碼。這時它不再是憑一段大 prompt 猜需求，而是在一組結構化文件裡執行。&lt;/p&gt;
&lt;h2 id=&#34;為什麼它適合-ai-編程&#34;&gt;為什麼它適合 AI 編程？
&lt;/h2&gt;&lt;p&gt;Spec Kit 的價值不在於某個神奇命令，而在於它把 AI 編程中最容易缺失的東西補了回來：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需求可審查；&lt;/li&gt;
&lt;li&gt;計劃可討論；&lt;/li&gt;
&lt;li&gt;任務可追蹤；&lt;/li&gt;
&lt;li&gt;決策有上下文；&lt;/li&gt;
&lt;li&gt;產物可以進入 Git 歷史；&lt;/li&gt;
&lt;li&gt;團隊可以複用模板和原則；&lt;/li&gt;
&lt;li&gt;Agent 的實作不再只依賴一次性聊天記錄。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這對複雜項目尤其有用。越是多人協作、長期維護、品質要求高的項目，越不能只靠臨時 prompt 驅動開發。&lt;/p&gt;
&lt;h2 id=&#34;擴展和-preset&#34;&gt;擴展和 Preset
&lt;/h2&gt;&lt;p&gt;Spec Kit 還提供了兩類自訂能力：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Extensions&lt;/strong&gt;：增加新命令、新模板或外部工具整合；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Presets&lt;/strong&gt;：改變現有規格、計劃、任務模板的格式和術語。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;簡單理解：如果要新增能力，用 Extension；如果要改造工作流風格，用 Preset。&lt;/p&gt;
&lt;p&gt;例如，團隊可以透過 Preset 強制加入安全審查、合規追蹤、領域術語或測試優先規則；也可以透過 Extension 增加 Jira 整合、代碼審查、項目健康檢查等新階段。&lt;/p&gt;
&lt;p&gt;這說明 Spec Kit 並不想把所有團隊鎖進同一種流程，而是提供一個可擴展的規格驅動骨架。&lt;/p&gt;
&lt;h2 id=&#34;適合誰用&#34;&gt;適合誰用？
&lt;/h2&gt;&lt;p&gt;Spec Kit 適合這些場景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用 AI coding agent 做新項目原型；&lt;/li&gt;
&lt;li&gt;想把 vibe coding 變成可複盤流程；&lt;/li&gt;
&lt;li&gt;團隊希望統一 AI 生成代碼前的需求和計劃格式；&lt;/li&gt;
&lt;li&gt;項目需要明確驗收標準和測試要求；&lt;/li&gt;
&lt;li&gt;希望把需求、計劃、任務和實作過程都納入版本管理；&lt;/li&gt;
&lt;li&gt;正在探索 GitHub Copilot、Claude Code、Codex CLI 等工具的團隊化用法。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它不一定適合非常小的一次性腳本。對於幾行代碼能解決的問題，完整規格流程可能顯得重。但只要任務開始涉及多個頁面、多個模組、狀態管理、權限、數據模型或長期維護，Spec Kit 的結構化收益就會變明顯。&lt;/p&gt;
&lt;h2 id=&#34;我的理解&#34;&gt;我的理解
&lt;/h2&gt;&lt;p&gt;Spec Kit 代表的是 AI 編程工具的一種重要轉向：從「讓 Agent 更快寫代碼」，轉向「讓 Agent 更可靠地參與軟件工程」。&lt;/p&gt;
&lt;p&gt;過去的 AI 編程關注提示詞和模型能力，Spec Kit 更關注流程、產物和約束。它提醒我們：AI 寫代碼越快，規格、計劃和驗收就越不能省。&lt;/p&gt;
&lt;p&gt;如果你已經習慣讓 AI 直接實作功能，可以嘗試用 Spec Kit 改變起手式：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;先讓 AI 幫你把需求寫成規格，再讓它寫代碼。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;這一步看似變慢，實際是在減少後面「代碼寫完了，但不是我想要的」的返工。&lt;/p&gt;
&lt;h2 id=&#34;參考連結&#34;&gt;參考連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/github/spec-kit&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;github/spec-kit&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
