一、spec-kit 简介
spec-kit 是 github 开源的一个工具包,用于实现规格驱动开发(Spec-Driven Development)。它与 AI 编码工具(如GitHub Copilot、Claude Code、Gemini CLI)集成,帮助开发者构建更高质量的软件。
解决的核心痛点:
1)"氛围编码"问题:传统 AI 编码中,你描述目标,得到代码块,但往往"看起来对,但实际不工作"
2)缺乏结构化流程:从想法到实现缺乏清晰的步骤和检查点
3)质量不一致:生成的代码缺乏统一的质量标准和测试覆盖
主要功能:
1)规格优先开发:先写规格说明,再生成代码
2)四阶段工作流:Specify(规格化) → Plan(规划) → Tasks(任务分解) → Implement(实现)
3)强制测试驱动开发(TDD):必须先生成测试,再生成实现代码
4)与 AI 工具无缝集成:支持 Claude Code、GitHub Copilot 等
二、安装 spec-kit
spec-kit 的安装通过 uv 工具完成,在 powershell 执行以下命令:
# 安装 uv,需要魔法访问到 GitHub,需要外网环境,不然会报错
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
# 验证 uv
uv --version
# 安装 spec-kit
uv tool install specify-cli --from git+https://github.com/github/spec-kit.git
# 验证安装
specify --help
通过 uv 直接安装时,可能会遇到 git 网络连接失败失败的问题
可以先手动克隆仓库,再本地安装:
1)在 git bash 执行以下命令
# 克隆仓库到E盘(路径可自定义)
git clone https://github.com/github/spec-kit.git E:\spec-kit
2)从本地仓库安装 specify-cli,在 powershell 执行以下命令,仓库路径要准确
uv tool install specify-cli --from E:\spec-kit\spec-kit
安装后执行specify --help出现各种信息,即表示安装成功
三、构建项目地基
项目初始化
spec-kit 支持新项目和现有项目两种初始化方式:
- 新项目初始化
若从零开始创建项目,执行以下命令:specify init <PROJECT_NAME> --ai <AI_AGENT>
- 示例:
specify init my-task --ai claude,创建名为 my-task 的项目,使用 Claude Code 作为 AI 代理) - 效果:在当前目录生成 spec-kit 项目结构,如 .specify/、specs/ 等目录
- 现有项目初始化
若在已有项目中集成 spec-kit,进入项目根目录执行:specify init . --ai <AI_AGENT>
- 使用
.表示在当前目录初始化,不会创建新子文件夹;建议先备份项目或使用 Git 版本控制,以防覆盖已有文件
初始化完成后,项目目录中会生成 .specify 目录,包含以下结构:
memory/:存储项目级原则和规范scripts/bash/:spec-kit 的调用脚本template/: 执行命令时使用的模板文件
制定项目宪章(/speckit.constitution)
在当前项目目录 claude 下,输入:
/speckit.constitution 阅读当前项目,根据以下要求和目前项目技术栈,创建一个中文的项目宪章
- 技术栈约定:语言版本、框架、数据库、ORM、测试框架、Lint 工具等
- 代码结构:目录划分(domain/application/infrastructure/presentation 等)
- 命名规则:类、接口、函数、常量、文件命名约定
- 错误处理规范:自定义错误类型、日志要求、禁止静默失败等
- 测试策略:单元/集成/E2E 测试要求及覆盖率门槛
- 安全基线:输入验证、认证、授权、密码存储、密钥管理、速率限制、CORS 等
- Git 工作流:分支策略、提交规范、PR 与评审要求
- AI 使用指引:模糊规范必须先澄清、遵守 TDD、优先可读性、标注 TODO 等
- MCP 使用指南:有哪些团队希望使用的MCP,什么场景使用什么MCP工具等
执行完成后自动创建中文的项目宪章,如果生成的内容中有不满意或者想修改的部分,可以指挥 AI 继续修改或者手动改一改。 PS:constitution.md 是spec 里最重要的内容之一,它是让后续迭代符合基本要求的保证。
核心命令参考
所有 spec-kit 命令都以/speckit.开头:
| 命令 | 用途描述 | 使用时机 |
|---|---|---|
| /speckit.constitution | 制定或更新项目级开发原则和指南 | 项目初始化或引入新规范时 |
| /speckit.specify | 明确需求范围和用户故事 | 开始新功能开发时 |
| /speckit.plan | 基于技术栈创建实施方案 | 需求明确后 |
| /speckit.tasks | 生成可执行的任务清单 | 方案确定后 |
| /speckit.implement | 按计划执行所有开发任务 | 任务分解完成后 |
| /speckit.clarify | 澄清需求中的模糊领域 | 制定计划前 |
| /speckit.analyze | 跨工件一致性和覆盖率分析 | 任务生成后,实施前 |
| /speckit.checklist | 生成质量检查清单 | 需求验证阶段 |
常用的核心命令包括:specify、plan、tasks、implement
constitution主要用于项目初始化阶段或引入新的技术规范时,clarify用于补充说明需求中的边界条件,checklist生成验证清单,类似于文本形式的测试用例。
四、核心工作流
1.定义功能需求(/speckit.specify)
描述需要实现的需求:
/speckit.specify 构建一个任务管理页面,任务列表展示的字段有任务名称、任务创建人、紧急程度、任务状态、创建时间,任务可以通过下拉框按紧急程度和任务状态过滤。
执行完成后,可以看到项目已经新建了 1-task-list 分支,并且已经有了 spec.md 和预生成的 checklist 文件夹。
spec.md 将模糊的用户需求转化为可测试、无歧义的功能规格,包含用户故事、功能需求、成功标准等。spec.md 是 AI 整理后对需求的理解,如果觉得描述有不完善的地方,可以使用/speckit.clarify着重阐述。
2.生成技术方案(/speckit.plan)
描述想要如何实现需求:
/speckit.plan 过滤下拉框在上,列表在下。列表使用el-table实现,支持分页器分页,默认填充10条静态数据。
执行完成后多了以下一些产物,基于功能规范,AI 自动生成详细的技术实现计划,包括数据模型、接口契约、外部依赖、性能/安全要求
plan.md plan.md 是 AI 整理后对如何实现的计划(技术方案规格书)
research.md 记录“为什么不这么做”和“为什么选择这个”
data-model.md # [规划] 数据模型
quickstart.md # [规划] 快速开始指南,让人/AI-agent快速明白该做什么
此时可以查看 plan.md 中的规划与设想是否相同
3.分解任务列表(/speckit.tasks)
输入:
/speckit.tasks
产物是 tasks.md,它将技术方案(Plan)拆解为 AI 和开发者可以一步步执行、可跟踪、可闭环的任务单元,每个任务包含前置条件、执行步骤、依赖关系。
4.执行任务生成代码(/speckit.implement)
输入:
/speckit.implement
AI 逐一执行任务列表中的任务,自动编写代码、创建文件、运行测试,并实时报告进度。开发者只需审查代码是否符合规范,一般通过测试就没什么问题。