Spec Kit 把先想清楚再动手拆成一串固定的步骤:先写要什么,再写怎么做,再拆任务,最后才写代码。
规格驱动开发(Spec-Driven Development,简称 SDD)把顺序倒过来:传统做法以代码为主,规格文档写完就扔;SDD 里规格是主角,代码从规格生成。
Spec Kit 是 GitHub 官方出品的规格驱动工具包,MIT 许可,写作时 GitHub 上有十几万 Star。它不绑定某一个 Agent:Claude Code、Copilot、Gemini CLI、Cursor、Codex 等很多工具都支持,你在初始化时选一个。
它和前两节不同的地方在于:先用一个命令行工具(CLI)在项目里搭好脚手架,再给 Agent 装上一组命令。每一步做什么、文件放哪、模板长什么样,都由它规定。
一、安装
Spec Kit 的 CLI 叫 specify,用 Python 写的,推荐用 uv(一个 Python 包管理工具)安装。需要 Python 3.11 以上。
uv tool install specify-cli然后在项目里初始化,指定用 Claude Code:
specify init my-project --integration claude已有项目就进入项目目录,用 specify init .。目录不是空的时,它会先提醒你:模板文件会和现有内容合并,可能覆盖同名文件,问你要不要继续。

初始化之后,项目里会多出两个目录:
.specify/ ← Spec Kit 自己的东西
memory/
constitution.md ← 项目宪法(下面讲)
templates/ ← 各种文档模板
scripts/ ← 创建目录、生成文件的脚本
.claude/
skills/ ← speckit-specify、speckit-plan …… 每一步一个 Skill以后要升级,运行 specify self upgrade。
💡 命令名在 Claude Code 里是
/speckit-specify、/speckit-plan这样的形式,因为 Spec Kit 的命令是以 Skill 形式装的。官方文档里常写成
/speckit.specify(带点),那是其他 Agent 的写法。以你的 Agent 补全菜单里实际出现的为准,下文统一写短横线形式。
二、整体概览
Spec Kit 的流程是一次宪法,加上每个功能的一串步骤。
| 步骤 | 命令 | 必须吗 | 交出什么 |
|---|---|---|---|
| 0 | /speckit-constitution |
项目只做一次 | .specify/memory/constitution.md |
| 1 | /speckit-specify |
必须 | spec.md:要什么、为什么 |
| 2 | /speckit-clarify |
可选,推荐 | 把问答写回 spec.md |
| 3 | /speckit-plan |
必须 | plan.md、research.md、data-model.md、contracts/、quickstart.md |
| 4 | /speckit-checklist |
可选 | checklists/*.md:需求质量检查单 |
| 5 | /speckit-tasks |
必须 | tasks.md |
| 6 | /speckit-analyze |
可选,推荐 | 一份只读的一致性报告 |
| 7 | /speckit-implement |
必须 | 代码 |
| 8 | /speckit-converge |
必须 | 对比代码和规格,补上遗漏的任务 |
最短路径是 specify → plan → tasks → implement → converge。需求越模糊、风险越高,就越该把可选的步骤加上。
同一个功能的所有文件都放在 specs/<功能名>/ 下,订单导出走完一遍大概是这样:
specs/001-order-export/
├── spec.md ← 要什么
├── plan.md ← 怎么做
├── research.md ← 技术选型的结论
├── data-model.md ← 数据结构
├── contracts/ ← 接口定义
├── quickstart.md ← 怎么验证它真的能用
├── checklists/
│ └── requirements.md ← 需求质量检查单
└── tasks.md ← 任务清单这个结构在 plan 的模板里就有,连每个文件由哪一步生成都写着:

Spec Kit 的每一步都要你手动调用:上一步的产出审完、满意了,才运行下一步。关卡就是你自己,你不运行下一条命令,流程不会往下走。
三、精读:宪法和要什么
1. 宪法:项目的不可违背原则
/speckit-constitution 是第一步,每个项目只做一次。它写的是这个项目无论做什么功能都要遵守的原则,比如:
/speckit-constitution 本项目所有新接口必须沿用现有鉴权中间件;
任何导出功能必须流式处理,禁止一次性把结果集读入内存;
新功能必须先写集成测试。