完整教程:GitHub Spec-Kit:AI 时代的规范驱动开发工具
<style>pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-size: 14px !important; line-height: 1.6 !important; padding: 16px !important; margin: 16px 0 !important; background-color: rgba(248, 248, 248, 1) !important; border: 1px solid rgba(225, 228, 232, 1) !important; border-radius: 6px !important; tab-size: 4 !important; -moz-tab-size: 4 !important; max-width: 100% !important; box-sizing: border-box !important }code { font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-size: 14px !important; white-space: pre !important; word-wrap: normal !important; word-break: normal !important; overflow-wrap: normal !important; display: inline !important; background: rgba(0, 0, 0, 0) !important; border: none !important; padding: 0 !important; margin: 0 !important; line-height: inherit !important }
pre code { background: rgba(0, 0, 0, 0) !important; border: 0 !important; border-radius: 0 !important; display: block !important; line-height: 1.6 !important; margin: 0 !important; max-width: none !important; overflow: visible !important; padding: 0 !important; white-space: pre !important; word-wrap: normal !important; word-break: normal !important; color: inherit !important }
.token.comment, .token.prolog, .token.doctype, .token.cdata { color: rgba(112, 128, 144, 1) !important; font-style: italic !important }
.token.punctuation { color: rgba(153, 153, 153, 1) !important }
.token.atrule, .token.attr-value, .token.keyword { color: rgba(0, 119, 170, 1) !important; font-weight: bold !important }
.token.function, .token.class-name { color: rgba(221, 74, 104, 1) !important; font-weight: bold !important }
.token.selector, .token.attr-name, .token.string, .token.char, .token.builtin, .token.inserted { color: rgba(102, 153, 0, 1) !important }
.token.property, .token.tag, .token.boolean, .token.number, .token.constant, .token.symbol, .token.deleted { color: rgba(153, 0, 85, 1) !important }
.cnblogs-markdown pre, .cnblogs-post-body pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; background-color: rgba(248, 248, 248, 1) !important; border: 1px solid rgba(225, 228, 232, 1) !important; border-radius: 6px !important; padding: 16px !important; margin: 16px 0 !important }
pre, pre, pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important }</style>
<div class="markdown_views prism-atom-one-light" id="content_views"><svg style="display: none" xmlns="http://www.w3.org/2000/svg"><path d="M5,0 0,2.5 5,5z" id="raphael-marker-block" stroke-linecap="round" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0)"></path></svg><p>在 AI 编程时代,很多团队已经能用 Claude、Copilot 或 GPT 辅助写代码,但大多数项目仍停留在「prompt + 生成 + 调整」的模式上——快,但缺乏结构,难以复用,也难追踪。</p><p>GitHub 推出的 <strong>Spec-Kit</strong> 尝试解决这个问题。它不是新的框架或语言,而是一套 <strong>“规范驱动开发(Spec-Driven Development, SDD)” 工具链</strong>:让开发流程从 <em>需求意图</em> 出发,经由可执行的 <em>规格(spec)</em>、<em>计划(plan)</em>、<em>任务(tasks)</em>,再进入具体实现。</p><p>简而言之,Spec-Kit 让 “规范” 不再只是文档,而成为 <strong>驱动代码生成、任务拆解和一致性校验的中枢</strong>。<br> 它通过一套 CLI 工具和 AI 指令流(如 <code>/speckit.specify</code>、<code>/speckit.plan</code>、<code>/speckit.implement</code>)将整个开发过程结构化、可追溯、可协作。</p><hr><h3>一、Spec-Kit 的核心理念</h3><p>Spec-Kit 的出发点是:<strong>代码只是实现,规范才是源头。</strong><br> 传统开发往往是「需求 → 架构 → 编码 → 测试」,而在 AI 驱动的时代,这种线性流程容易被 prompt 打乱。<br> Spec-Kit 希望用工具和约定,让团队重新把“规格”放到流程中心。</p><p>核心原则包括:</p><ul><li><strong>意图驱动</strong>:先表达“要做什么 / 为什么做”,而非技术实现。</li><li><strong>多步细化</strong>:通过多阶段命令逐步澄清、计划、实现,而不是一条 prompt 出代码。</li><li><strong>宪法机制(Constitution)</strong>:可设定项目规则、代码风格、测试标准,AI 在执行时会遵守。</li><li><strong>技术中立</strong>:支持任意语言和框架。</li><li><strong>AI 协作</strong>:可与 GitHub Copilot、Claude、Gemini 等 AI 代理协同工作。</li></ul><hr><h3>二、安装与基本使用</h3><p>Spec-Kit 提供了命令行工具(CLI),可通过 uv 安装使用。</p>
<pre style="white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important"><code class="prism language-bash">uv tool <span class="token function">install</span> specify-cli --from git+https://github.com/github/spec-kit.git
specify init <span class="token operator"><</span>PROJECT_NAME<span class="token operator">></span>
specify check</code></pre>
<p>或者使用一次性运行方式:</p>
<pre style="white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important"><code class="prism language-bash">uvx --from git+https://github.com/github/spec-kit.git specify init <span class="token operator"><</span>PROJECT_NAME<span class="token operator">></span></code></pre>
<hr><p>如果提示没有安装 <code>uv</code> 命令,Linux 下用</p>
<pre style="white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important"><code class="prism language-bash"><span class="token comment"># 添加官方仓库</span>
<span class="token function">curl</span> -fsSL https://astral.sh/uv/install.deb.sh <span class="token operator">|</span> <span class="token function">sudo</span> <span class="token function">bash</span>
<span class="token comment"># 安装 uv</span>
<span class="token function">sudo</span> <span class="token function">apt</span> <span class="token function">install</span> uv</code></pre>
<p>或</p>
<pre style="white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important"><code class="prism language-bash"><span class="token function">curl</span> -LsSf https://astral.sh/uv/install.sh <span class="token operator">|</span> <span class="token function">sh</span></code></pre>
<p>Windows 下</p>
<pre style="white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important"><code class="prism language-bash">winget <span class="token function">install</span> --id<span class="token operator">=</span>astral-sh.uv -e</code></pre>
<p>Mac 下</p>
<pre style="white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important"><code class="prism language-bash">brew <span class="token function">install</span> uv</code></pre>
<hr><p><img alt="在这里插入图片描述" src="https://i-blog.csdnimg.cn/direct/c1ebf03d279d48888271d78e4df2a088.png"></p><p><img alt="在这里插入图片描述" src="https://i-blog.csdnimg.cn/direct/6b8c61ddb9b643a2a3c6baab78c02541.png"><br> 进入到目录后,发现新建了 <code>.claude</code> 和 <code>.specify</code> 两个目录和一些文件。<br><img alt="在这里插入图片描述" src="https://i-blog.csdnimg.cn/direct/4326a1d08c504345adc0a1ae3f95381c.png"></p><p>初始化后,项目结构会包含以下关键部分:</p><ul><li><code>constitution/</code>:项目“宪法”,定义团队开发规范</li><li><code>spec/</code>:功能规格描述</li><li><code>plan/</code>:AI 生成的技术实现方案</li><li><code>tasks/</code>:任务拆分与执行计划</li></ul><p>执行 <code>claude</code> 命令,也会看到多了很多自定义命令</p><p><img alt="在这里插入图片描述" src="https://i-blog.csdnimg.cn/direct/fed0275b45f549c8849c41f054bd6e3e.png"></p><h3>三、完整开发流程示例</h3><p>以开发一个 “待办事项(Todo) 应用” 为例,完整流程如下:</p><ol><li><p><strong>定义宪法(/speckit.constitution)</strong></p> <pre style="white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important"><code class="prism language-yaml">一个用来管理 不同大模型平台 使用 claude code 工具要配置的参数,
如ANTHROPIC_API_KEY,ANTHROPIC_BASE_URL 这些的PC端网站,
使用浅色主题。页面简洁、美观,代码清晰易读,不要过度优化。</code></pre> </li><li><p><strong>撰写规格(/speckit.specify)</strong></p> <pre style="white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important"><code>用户可以创建、查看、删除 Todo 项目,
每个项目包含 title、description、due_date,
支持在项目下创建任务并标记完成状态。</code></pre> </li><li><p><strong>澄清规范(/speckit.clarify)</strong><br> 工具会自动生成澄清问题:</p><ul><li>是否支持项目优先级?</li><li>删除项目时是否级联删除任务?</li><li>权限与错误返回如何定义?</li></ul></li><li><p><strong>生成技术方案(/speckit.plan)</strong><br> 输出结构化实现方案:</p><ul><li>后端:Node.js + Express + PostgreSQL</li><li>模块划分:ProjectService、TaskService、Controller 层</li><li>API 列表、数据模型、错误返回规范</li></ul></li><li><p><strong>任务拆解(/speckit.tasks)</strong><br> 自动拆分为:</p><ul><li>创建数据库模型</li><li>编写 API 控制器</li><li>添加单元测试与异常测试</li><li>部署与集成验证</li></ul></li><li><p><strong>实现(/speckit.implement)</strong><br> 工具可按任务顺序自动生成初始代码、测试桩及基本文件结构,供开发者进一步完善。</p></li></ol><p>通过这套流程,整个项目从「业务意图 → 可执行规格 → 实现」形成闭环。</p><hr><p><img alt="在这里插入图片描述" src="https://i-blog.csdnimg.cn/direct/e99e45dced2f48eb8f3b3fb15d742f8a.png"></p><p><img alt="在这里插入图片描述" src="https://i-blog.csdnimg.cn/direct/861cb2a9a0184a15aea79fbb462ca681.png"></p><h3>四、与传统开发的区别</h3><table><thead><tr><th>模式</th><th>关注点</th><th>规格作用</th><th>特点</th></tr></thead><tbody><tr><td><strong>传统开发</strong></td><td>技术架构、实现</td><td>辅助文档</td><td>快但易偏离需求</td></tr><tr><td><strong>TDD(测试驱动)</strong></td><td>代码正确性</td><td>体现在测试中</td><td>聚焦质量,规格弱化</td></tr><tr><td><strong>BDD(行为驱动)</strong></td><td>用户行为</td><td>用例描述</td><td>业务友好</td></tr><tr><td><strong>Spec-Kit(SDD)</strong></td><td>业务意图、一致性</td><td>核心产物、可执行</td><td>与 AI 协作、结构化、可追溯</td></tr></tbody></table><p>Spec-Kit 不是替代 TDD / BDD,而是更高一层的“元规范层”:<br> 它让测试、实现、文档都从同一个“规格源头”出发。</p><hr><h3>五、优势与挑战</h3><h4>✅ 优势</h4><ul><li><strong>让 AI 开发结构化、有章可循</strong></li><li><strong>规范与代码保持一致,可追踪来源</strong></li><li><strong>提升团队协作效率</strong></li><li><strong>减少反复生成与沟通成本</strong></li></ul><h4>⚠️ 挑战</h4><ul><li>学习曲线:团队需要适应新流程</li><li>对 AI 能力依赖较高</li><li>变更与版本控制成本上升</li><li>代码仍需人工复审与优化</li></ul><hr><h3>六、适用场景</h3><p><strong>推荐使用:</strong></p><ul><li>新项目或重构项目</li><li>多人协作、规格要求高的团队</li><li>AI 驱动开发团队(使用 Copilot / Claude 等)</li><li>需要审计与一致性的企业级项目</li></ul><p><strong>不建议使用:</strong></p><ul><li>小型快速原型项目</li><li>团队对 AI 工具不熟悉</li><li>对性能和底层优化要求极高的系统</li></ul><hr><h3>七、总结与展望</h3><p>GitHub <strong>Spec-Kit</strong> 是一次结构化 AI 辅助开发的探索。<br> 它让 “规格” 从被动文档变成了 <strong>可执行的开发中枢</strong>,让 AI 编程不再只是“生成代码”,而是能在规范、计划、任务到实现的全链路中发挥作用。</p><p>对于追求更系统化、可追踪、可复用开发流程的团队来说,Spec-Kit 值得试用。<br> 这也许就是下一代软件工程的雏形——<strong>从 prompt 到 process</strong> 的转变。</p></div><br><br>
来源:https://www.cnblogs.com/yangykaifa/p/19604862
頁:
[1]