Spec Kit使用经验总结
1. 什么是 Spec Kit?
Spec Kit 是 GitHub 官方推出的一套「规范驱动开发(Spec-Driven Development, SDD)」工具包。它的目标是:
让“规范”成为事实来源,让代码变成规范的“表达层”,而不是相反。(GitHub)
简单说两句,它解决的是现在很常见的一种尴尬:
- 你和 AI 聊得很开心,vibe coding 式地一顿生成
- 代码能跑,但:
- 和真正需求有偏差
- 质量、安全性难保证
- 文档缺失、架构混乱、后续接手困难(腾讯云)
Spec Kit 给出的答案是:用一套结构化的规范—计划—任务—实现工作流,把 AI 从“灵感玩具”变成“工程化生产力工具”。(Lilys AI)
其核心价值可以总结为四个短语:(博客园)
- 规范即代码:规范是第一公民,代码只是规范的某种实现
- AI 驱动开发:人写规范和原则,AI 负责生成计划、任务和代码
- 多技术栈支持:前后端、多语言、多框架都可以用
- 企业级就绪:强调治理、约束、可追溯、可审计
2. 规范驱动开发(SDD)简介
2.1 核心理念
Spec-Driven Development 做了一件“角色互换”的事:
传统:代码是唯一真理,规范只是脚手架;
SDD:规范才是源头,代码是规范的实现结果。(GitHub)
关键思想:
- 规范是事实来源(Source of Truth)
- 产品需求、架构决策、非功能性要求都写在规范里
- 代码只是一种“投影”,随时可以从更新后的规范重新生成(GitHub)
- 规范是可执行的
- 规范 + 实施计划是足够精确的描述
- AI 根据它们可以稳定生成代码、测试和文档(GitHub)
- 工作流变成:规范 → 计划 → 任务 → 实现
- 不是“聊几句就让 AI 写代码”
- 而是多步约束、逐层收敛,减少幻觉和跑偏(GitHub)
- 团队协作围绕规范进行
- 分支、评审、回滚都围绕
specs/里的规范文档 - 代码只是规范的产物,可以按需重生成或重构(GitHub)
- 分支、评审、回滚都围绕
2.2 与传统开发对比
传统流程(简化版):
需求 → 设计 → 手写代码 → 测试 → 上线
SDD 流程:
需求 → 详细规范 → AI 生成计划与代码 → 系统化验证
差异点:(腾讯云)
- 先规范、后代码,代码永远不能和规范脱节
- AI 成为“执行层”,人更多关注需求、架构和校验
- 变更先改规范,再由 AI 帮你更新实现,而不是在代码里“打补丁”
3. Spec Kit 由哪些部分组成?
Spec Kit 主要包含两大核心组件:(Microsoft Developer)
- Specify CLI(命令行工具)
- 帮你在本地项目里一键拉起 SDD 脚手架
- 下载模板、创建目录、生成脚本、配置 Agent 等
- 模板 + 脚本 + Agent 集成
- 模板:规范模板、计划模板、任务模板等
- 脚本:用于自动创建分支、检查前置条件、更新 Agent 上下文
- Agent 集成与 Slash 命令:给 Claude Code、Copilot、Gemini 等 AI 编码工具注入
/speckit.*命令,让它按 SDD 流程工作
初始化后,典型目录大致是这样:(Microsoft Developer)
1 | .github/ |
4. 安装与初始化
4.1 前置条件(典型)
- 已安装 Python + uv 工具链
- Git 仓库(如果不是,Specify 也可以帮你初始化)(Microsoft Developer)
- 你常用的 AI 编码助手(Claude Code / Copilot / Gemini CLI / Cursor 等)
4.2 安装 Specify CLI
方式一:持久安装(推荐)(GitHub)
1 | # 安装 |
方式二:一次性使用
1 | uvx --from git+https://github.com/github/spec-kit.git specify init <PROJECT_NAME> |
4.3 初始化项目
典型命令:(GitHub)
1 | # 交互式选择 AI Agent |
执行后,Spec Kit 会自动完成:
- 检查环境与版本
- 下载最新模板与脚本
- 生成
.specify/、.github/等目录 - 为你的 Agent 注入
/speckit.*命令
5. Spec Kit 的开发流程(详细)
整体工作流可以概括为四个阶段:规范(Specify)→ 计划(Plan)→ 任务(Tasks)→ 实现(Implement)。(GitHub)
5.1 Step 0:定义项目宪法 /speckit.constitution
目的:定义这个项目不可动摇的原则,例如:
- 测试要求(必须有端到端测试、覆盖率门槛等)
- 性能与安全约束
- 架构原则(例如 API 设计风格、日志规范)
- 团队约定(如“所有应用默认 CLI-first”)(Microsoft Developer)
示例命令(在 Agent 里):
1 | /speckit.constitution |
结果:
- 创建或更新
.specify/memory/constitution.md - 后续
/speckit.specify、/speckit.plan、/speckit.tasks都会自动参照这些原则(GitHub)
5.2 Step 1:生成功能规范 /speckit.specify
作用:把一句话需求,变成结构化的功能规范(spec.md)。(GitHub)
例如在 Agent 中输入:
1 | /speckit.specify |
Spec Kit 会自动做的事情包括:(GitHub)
- 扫描现有规范,自动分配特性编号(比如
001) - 自动创建分支
001-photo-albums(名称可读) - 基于模板生成
specs/001-photo-albums/spec.md - 用统一结构填充:
- 用户故事 & 场景
- 功能需求 & 非功能需求
- 验收标准 & 边界情况
[NEEDS CLARIFICATION: ...]的疑问位
模板明确要求:只写 WHAT / WHY,不写 HOW(技术栈、实现细节),防止过早陷入实现。(GitHub)
可选的下一步:
/speckit.clarify:驱动 AI 自动对规范中的模糊点提问,帮助你补全不清晰的地方,并把回答记录在规范中专门的 Clarifications 区域。(GitHub)
5.3 Step 2:生成技术方案 /speckit.plan
当规范比较稳定后,使用:
1 | /speckit.plan |
该命令会:(GitHub)
- 分析
spec.md中的用户故事、验收标准 - 校验是否符合
constitution.md中的原则(如架构、安全标准) - 生成技术实施计划,包括:
plan.md—— 高层架构、技术选型、组件拆分data-model.md—— 实体和数据模型contracts/—— API / 事件 / 协议规范(如 OpenAPI / WebSocket 事件等)research.md—— 对比不同框架/库的调研结论quickstart.md—— 项目启动指南与验证场景(GitHub)
模板中会强制通过一些“门”:(GitHub)
- Simplicity Gate:控制项目和模块数量,防止过度设计
- Anti-Abstraction Gate:禁止无意义抽象与“未来可能用到”的臃肿设计
- Test-First 指引:优先产出契约、测试,再写实现代码
任何违反简洁与可维护性的地方都要在文档中说明理由(有点像“架构决策 ADR”)。
5.4 Step 3:生成任务列表 /speckit.tasks
在有了 plan 之后,使用:
1 | /speckit.tasks |
它会:(GitHub)
- 读取
plan.md、data-model.md、contracts/、research.md - 把数据模型、接口、场景,拆成一条条可执行任务
- 自动标记哪些任务可并行执行(加
[P]标签) - 输出
specs/<feature>/tasks.md,供 Task agent 或人工执行
任务列表通常会按阶段组织,例如:
- 环境与基础设施
- 核心业务流程
- 边界与错误处理
- 测试与验收
- 文档与运维
5.5 Step 4:执行实现 /speckit.implement
最后,使用:
1 | /speckit.implement |
让 Agent 根据 tasks.md 按步骤实现:(GitHub)
- 逐步创建代码文件
- 按文件/模块粒度提交
- 与规范和计划保持对齐
- 出问题时,你只需要回到规范/计划/任务层做调整,再重新生成相关部分
6. 模板如何“管住” AI ?
Spec Kit 的一个精髓是:它没有靠“更聪明的模型”,而是靠更强的结构化模板和校验来约束 LLM 行为。(GitHub)
模板里做了几件关键的事情:
- 强制分离 WHAT / WHY 与 HOW
- 功能规范模板写死:
- ✅ 描述需求、场景、用户价值
- ❌ 禁止写具体技术栈和 API 设计
- 只有在计划阶段才讨论技术细节
- 功能规范模板写死:
- 显式不确定性标记
[NEEDS CLARIFICATION]- 模板要求:对任何不确定项不要乱猜,用
[NEEDS CLARIFICATION: 具体问题]标出 - 避免 LLM 自作聪明,写出“看着合理但错得离谱”的内容
- 模板要求:对任何不确定项不要乱猜,用
- 自检清单(Checklist)
- 类似单元测试,但测试的是“规范质量”
- 例如:
- 是否还有未解决的
[NEEDS CLARIFICATION] - 需求是否可测量、可验证
- 成功标准是否量化
- 是否还有未解决的
- “宪法门”(Constitution Gates)
- 在计划模板中,对照
constitution.md做结构化检查 - 比如有“简单性门”、“反过度抽象门”等,要求对任何复杂性做显式记录和说明
- 在计划模板中,对照
- Test-First 与文件生成顺序
- Template 要求先生成契约与测试,再写实现
- 鼓励“契约优先”的思路(类似 API-First + TDD)(GitHub)
- 禁止“功能脑补”
- 模板里有“禁止 speculative features”的检查项
- 任何不在需求中的功能都不会自动往里加,防止项目膨胀
效果:
- 人和 AI 都被“框”在合理的工程流程里
- 每一步输出都有结构化检查,防止遗漏与跑偏
- 文档天然是“活文档”,和实现高度同步(GitHub)
7. 适用场景与收益
比较典型的适用场景:(GitHub)
- 从 0 到 1 搭建新应用(Greenfield)
- 先从高层需求开始
- 生成完整规范 → 计划 → 实现
- 探索多种实现方案
- 同一份规范,用不同技术栈/架构生成多个版本
- 对比性能、可维护性、成本等
- 改造/扩展旧系统(Brownfield)
- 用规范描述现有系统 + 新需求
- 帮助 AI 做有约束的重构或功能扩展
- 有较高治理要求的团队/组织
- 需要审计、可追溯、符合合规要求
- 多团队协作、多人维护的复杂项目
带来的收益可以简单列一下:
- AI 生成代码的可控性和可预测性大幅提高
- 团队有一套统一的、可以审查和演化的开发规范
- 重构或换栈时,只需更新规范/计划,再生成实现
- 新同事上手快,看
specs/就能理解系统
8. 与其他实践的关系
- 与敏捷/迭代开发
- 完全兼容,规范、计划和任务本身就适合小步快跑
- 每个 Sprint 可以对应若干个 feature spec 分支(腾讯云)
- 与 TDD / BDD
- SDD 范围更大:从需求、架构到测试、实现全部覆盖
- TDD 可以被看作“测试层面的规范驱动”,而 SDD 是“全栈规范驱动”
- 与传统文档驱动开发
- 核心差异在于:
- 传统文档写完就“吃灰”,与代码慢慢脱节
- SDD 的规范是可执行的,直接驱动代码生成 & 校验
- 核心差异在于:
9. 使用 Spec Kit 的实战建议
结合上面几篇文章和官方文档,落地时可以注意这些点:(Microsoft Developer)
- 第一步一定是
constitution.md- 把团队的一致性要求写清楚
- 尤其是测试、日志、安全、错误处理这些“非功能性需求”
- 写规范时,不要纠结技术栈
/speckit.specify阶段只谈业务,避免提前锁死架构- 技术偏好放到
/speckit.plan中,由 AI 帮你权衡
- 认真处理
[NEEDS CLARIFICATION]- 把它当成“必修清单”,不用急着写代码
- 真正的坑,往往藏在这些模糊点里
- 把
specs/当成评审入口- Code Review 前先做 Spec Review
- 对于变更和回滚,参考的是规范版本,而不是散落在 PR 描述里的口头说明
- 从一个小项目练手
- 比如简单的 Todo / Chat / 报表工具
- 先熟悉整套流程,再上大项目
- 团队达成共识:不再“直接让 AI 写一堆代码”
- 所有非 trivial 功能都走“规范→计划→任务→实现”路径
- 把 vibe coding 留给快速原型或个人小脚本
10. 小结
如果用一句话概括:
Spec Kit = 把“规范驱动开发(SDD)”落地到日常 AI 编程的工程化工具包。
它帮你:
- 在项目里一键搭起 SDD 脚手架(Specify CLI)
- 用结构化模板把“想法”变成可执行的规范与计划
- 通过
/speckit.*命令驱动 AI 按步骤完成规范 → 计划 → 任务 → 实现 - 让规范成为可以评审、可以演化、可以重放的“活文件”