Spec Kit 实操指南:在 Cursor 中进行规约驱动开发
引言
Spec Kit 是 GitHub 开源的 规约驱动开发(SDD,Spec-Driven Development) 工具链。核心思路是:先把「做什么、为什么做」写进结构化文档,再让 AI Coding Agent 按文档实现——而不是写完代码再补文档。
本指南基于 SendSoon 官网项目 的实际配置:使用 Cursor Agent + Skills 模式 进行日常功能开发。
它解决什么问题?
纯对话式 AI 编程容易跳过「想清楚」这一步。Spec Kit 通过固定流程补上这一环:
- `specs/` 下统一的功能目录结构
- spec / plan / tasks 模板
- 项目 宪法(constitution) 约束 Agent 不可妥协的原则
- 每个阶段对应可重复的 Skill 命令
适合: 多页面功能、登录注册、数据模型、RAG 知识库、CI/CD 改造等中等以上复杂度需求。
不适合: 改一行配置、修个别名——走完整 SDD 反而增加负担。
四个核心产物
| 产物 | 路径 | 回答的问题 | | --- | --- | --- | | 宪法 Constitution | `.specify/memory/constitution.md` | 项目不可妥协的原则(安全、测试、部署等) | | 规约 Spec | `specs/<编号>-<功能名>/spec.md` | 做什么、为什么(不谈技术栈) | | 方案 Plan | `specs/.../plan.md` 等 | 用什么技术、怎么实现 | | 任务 Tasks | `specs/.../tasks.md` | 可执行、有依赖顺序的任务清单 |
每个功能对应一个 Git 分支(如 `001-user-profile`)和同名的 `specs/` 目录。Spec Kit 会根据当前分支识别正在处理的功能。
SendSoon 项目中的配置
本仓库初始化命令:
```powershell specify init sendsoon_website --here --integration cursor-agent --integration-options="--skills" ```
关键目录:
- `.cursor/skills/speckit-*/SKILL.md` — 11 个 Skill(specify、plan、tasks、implement 等)
- `.specify/templates/` — 规约 / 方案 / 任务模板
- `.specify/memory/constitution.md` — SendSoon 宪法(安全、Docker、RAG 等约束)
- `.cursor/rules/specify-rules.mdc` — 动态指向当前功能的 plan
优先级: 宪法 > 领域规范(`frontend.mdc`、`backend.mdc` 等)> 单次对话里的临时约定。
推荐工作流(六步)
```text 1. /speckit.constitution — 项目级,通常只做一次(或原则变更时) 2. /speckit.specify — 用自然语言描述功能(只讲做什么、为什么) 3. /speckit.clarify — 澄清歧义(正式功能建议在 plan 前必做) 4. /speckit.plan — 锁定技术栈:Next.js、FastAPI、PostgreSQL、Milvus 5. /speckit.tasks — 把方案拆成有依赖顺序的任务 6. /speckit.implement — 按 tasks.md 逐项实现 ```
可选但很有价值:
- `/speckit.analyze` — 检查 spec / plan / tasks 是否一致、有无遗漏
- `/speckit.checklist` — 生成功能验收清单
- `/speckit.converge` — 对照代码库找出尚未写入 tasks 的剩余工作
- `/speckit.agent-context.update` — 把当前 plan 同步进 Agent 上下文
命令速查表
| Skill | 使用时机 | | --- | --- | | `speckit.constitution` | 首次定稿或修订项目原则 | | `speckit.specify` | 从新需求开始一个功能 | | `speckit.clarify` | plan 之前,结构化问答写入 spec | | `speckit.plan` | spec 稳定后,输出架构与文件路径 | | `speckit.tasks` | plan 人工审阅通过后 | | `speckit.implement` | 执行 tasks 中的全部任务 | | `speckit.analyze` | implement 前的质量门禁 | | `speckit.checklist` | 生成自定义验收项 |
实操技巧(SendSoon 专用)
写 spec 时: 用用户故事和验收标准描述;不要写「用 Redis」「用 Prisma」这类技术选型。
写 plan 时: 明确引用本项目栈——Next.js App Router、FastAPI、开发/生产 compose 分离、密钥走 `.env`。
implement 时: 在 `tasks.md` 里勾选已完成项;前端改动跑 `npm run lint`;若改了 `backend/resources/*.md`,须重建 RAG:
```bash docker compose exec sds-backend python -m app.rag ```
宪法中的硬约束(摘要):
- 禁止硬编码密钥
- SQL 必须参数化
- 最小改动范围(YAGNI)
- 部署 / compose / CI 变更须同步文档
在其他项目安装 Spec Kit
```bash uv tool install specify-cli --from git+https://github.com/github/spec-kit.git@v0.11.5 specify version ```
然后执行 `specify init <项目名> --integration cursor-agent --integration-options="--skills"`。
官方仓库:[github.com/github/spec-kit](https://github.com/github/spec-kit)
仓库内另有更完整的《Spec-Kit-Specify-实战指南.md》,包含安装细节、模板说明与 SendSoon 宪法草案核对清单。
结语
Spec Kit 不能替代工程判断,但能把「对齐」前置到写代码之前。在 SendSoon 上配合 Cursor Skills,可以把 AI 辅助开发变成可审查的流水线:spec → plan → tasks → implement,全程纳入 Git 版本管理。
建议从一个中等规模功能开始,完整跑通一遍流程,再根据实际情况微调宪法与模板。