规范驱动的 Vibe Coding:Spec-Kit 实践指南
用 GitHub 的官方工具,把 AI 代码生成从"氛围抽卡"变成可重复的规范驱动流程。
为什么 Vibe Coding 需要规范?
Vibe Coding 的问题是prompt 决定质量:模糊的 prompt 产生模糊的输出,明确的规范产生精准的结果。
Spec-Kit 的核心观点:不是 AI 不够好,是给你的上下文不够结构化。Spec-Kit 在需求和代码之间插入两个刻意步骤——规范(Spec)和规划(Plan),让 AI 拿着精确的上下文去实现,而不是对着自由格式的 prompt 猜测。
Spec-Kit 是什么?
Spec-Kit 是 GitHub 官方开源的 Spec-Driven Development(SDD) 工具包,通过结构化的 CLI 和 slash commands,让任何 AI 编码助手都能遵循规范驱动的开发流程。
- 官网:https://github.github.io/spec-kit/
- GitHub:https://github.com/github/spec-kit(100k+ stars,MIT License)
- 核心语言:Python
- 最新版本:v0.8.11(2026-05-15)
核心理念
"规格成为可执行的艺术品,不是用完即弃的脚手架"
SDD 翻转了传统软件开发:代码不再是事实来源,规范才是。修改规范,重新生成代码——就像编译语言中源代码是事实来源一样。
核心特性
- 规范优先:Spec → Plan → Tasks → Implement,每个阶段产出文档驱动下一个阶段
- 30+ AI 工具支持:Claude Code、Copilot、Cursor、Gemini CLI、Windsurf 等,开源社区最广
- 可扩展:91 个社区扩展、18 个预设,可以完全替换核心流程
- 离线可用:可在防火墙后运行,支持 Windows/macOS/Linux
Spec-Kit vs OpenSpec vs BMad
| 维度 | Spec-Kit | OpenSpec | BMad |
|---|---|---|---|
| 出品方 | GitHub | Fission AI | 社区 |
| stars | 100k+ | 48k+ | 43k+ |
| 工作流 | 6 阶段(Constitution → Specify → Clarify → Plan → Tasks → Implement) | 轻量(propose → apply) | 多 Agent 团队协作 |
| AI Agent 支持 | 30+ | 20+ | 12+ |
| 扩展性 | 预设 + 扩展 | 自定义 Schema | 自定义 Agent + Workflow |
| 适用场景 | 中等复杂度,单人/小团队 | Brownfield 项目 | 复杂产品,多角色 |
| 学习曲线 | 中等 | 低 | 较高 |
核心概念
1. Constitution(宪法)
项目层面的不变原则——编码标准、架构约束、团队规范。在任何代码生成之前建立,确保所有决策符合团队的规则。
# Constitution
## 不可变原则
- 所有 API 必须有版本控制(v1, v2)
- 数据库操作必须使用事务
- 禁止直接操作 DOM,使用框架抽象
## 代码风格
- TypeScript 严格模式
- 函数不超过 50 行
- 测试覆盖率不低于 80%
2. Specify(规范)
描述要构建什么——聚焦"做什么"和"为什么",不包括技术细节。
# Spec: 用户认证
## 用户故事
### Story: 用户注册
- **角色**:新用户
- **想要**:通过邮箱注册账户
- **原因**:成为系统用户并使用功能
### 验收标准
- **GIVEN** 邮箱未被占用
- **WHEN** 提交有效注册信息
- **THEN** 创建账户并返回 JWT
## 边界情况
- 邮箱格式验证
- 密码强度要求(8+ 字符,包含数字和特殊字符)
- 用户名唯一性检查
3. Clarify(澄清)
AI 主动识别规范中的模糊之处并提问。这是在实现前发现需求漏洞——成本最低的时候。
典型 AI 提问:
- "注册后是否需要邮箱验证?"
- "密码重置流程是什么?"
- "会话有效期是多久?"
4. Plan(规划)
技术方案阶段——在这里指定技术栈、架构、数据模型。AI 基于 Constitution 和 Spec 生成完整的技术计划。
# Plan: 用户认证
## 技术选型
- 后端:Node.js + Express
- 数据库:PostgreSQL
- 认证:JWT(jsonwebtoken)
- 验证:Zod
## 目录结构
```
src/
├── routes/auth.ts # 认证路由
├── middleware/auth.ts # JWT 验证中间件
├── models/user.ts # 用户模型
└── db/index.ts # 数据库初始化
```
## API 设计
| 方法 | 路径 | 描述 |
|------|------|------|
| POST | /auth/register | 用户注册 |
| POST | /auth/login | 用户登录 |
| POST | /auth/refresh | 刷新 Token |
## 数据模型
```typescript
interface User {
id: string;
email: string;
username: string;
passwordHash: string;
createdAt: Date;
}
```
5. Tasks(任务分解)
把 Plan 拆成小的、可独立实现的、有序的任务。每个任务足够小,可以在一个 AI session 内完成。
# Tasks: 用户认证
## 任务列表
### Task 1: 项目初始化
- [ ] 初始化 npm 项目
- [ ] 安装依赖(express, pg, jsonwebtoken, zod)
- [ ] 配置 TypeScript
### Task 2: 数据库层
- [ ] 创建 `src/db/index.ts`
- [ ] 实现 users 表迁移
- [ ] 创建 User 模型
### Task 3: 认证路由
- [ ] 实现 POST /auth/register
- [ ] 实现 POST /auth/login
- [ ] 实现 POST /auth/refresh
### Task 4: 中间件
- [ ] 实现 JWT 验证中间件
- [ ] 实现错误处理
### Task 5: 测试
- [ ] 单元测试:User 模型
- [ ] 集成测试:认证 API
6. Implement(实现)
执行所有任务——按照 Tasks 的顺序,一个一个实现。
工作流命令
初始化项目后,AI Agent 获得以下 slash commands:
| 命令 | 用途 |
|---|---|
/speckit.constitution |
建立项目宪法(首先运行一次) |
/speckit.specify |
定义要构建什么 |
/speckit.clarify |
识别并解决模糊点 |
/speckit.plan |
生成技术实现计划 |
/speckit.analyze |
跨工件一致性分析 |
/speckit.tasks |
产出有序任务列表 |
/speckit.implement |
执行所有任务 |
安装与初始化
# 安装(推荐方式)
uv tool install specify-cli --from git+https://github.com/github/spec-kit.git
# 或 pipx
pipx install git+https://github.com/github/spec-kit.git
初始化项目
# 指定 AI 代理
specify init my-project --ai claude
# 支持的 AI 代理
--ai claude # Claude Code
--ai copilot # GitHub Copilot
--ai cursor # Cursor
--ai gemini # Gemini CLI
--ai windsurf # Windsurf
--ai generic # 任何其他 AI 工具
# 当前目录初始化
specify init . --ai claude
# 跳过 git 初始化
specify init my-project --ai claude --no-git
初始化后项目结构:
my-project/
├── .specify/ # SDD 模板和脚本
│ ├── spec-template.md
│ ├── plan-template.md
│ ├── tasks-template.md
│ └── constitution.md
├── .github/ # AI Agent 特定的 prompt 定义
│ ├── specify.prompt.md
│ ├── plan.prompt.md
│ └── tasks.prompt.md
└── src/ # 你的代码
完整示例:构建一个任务管理 API
Step 1: 初始化
specify init task-api --ai claude
cd task-api
Step 2: 创建 Constitution
在 Claude Code 中运行:
/speckit.constitution
输入项目宪法:
## 项目宪法
## 不可变原则
- RESTful API 设计
- 所有端点需要认证(/auth 除外)
- 错误响应使用标准 HTTP 状态码
## 技术约束
- Node.js + Express
- TypeScript 严格模式
- 使用 Zod 做请求验证
- 单元测试覆盖率 ≥ 80%
## 代码风格
- 单一职责原则
- 函数不超过 40 行
- 所有文件名小写 + 连字符
Step 3: 创建 Spec
/speckit.specify
描述要构建的内容:
构建一个任务管理 API,支持:
- 用户注册和登录(JWT)
- CRUD 任务(创建、读取、更新、删除)
- 任务支持标记完成
- 任务列表支持分页和筛选
AI 生成完整规范,包含用户故事、验收标准、边界情况。
Step 4: 澄清
/speckit.clarify
AI 会问:
- "任务是否需要支持子任务?"
- "删除任务是否需要软删除?"
- "列表是否需要排序选项?"
回答后,Spec 更新为更完整的版本。
Step 5: 生成 Plan
/speckit.plan
AI 基于 Constitution 和 Spec 生成:
- 目录结构
- API 端点设计
- 数据模型
- 技术决策及理由
Step 6: 生成 Tasks
/speckit.tasks
Plan 被拆成有序任务列表:
- Task 1: 项目初始化 + 安装依赖
- Task 2: 数据库设置
- Task 3: 用户认证(注册/登录)
- Task 4: 任务 CRUD
- Task 5: 任务列表(分页/筛选)
- Task 6: 测试
Step 7: 实现
/speckit.implement
AI 按照 Tasks 顺序,一个一个实现,并在每个任务后标记 [x]。
扩展与预设
社区扩展(91 个)
| 扩展 | 用途 |
|---|---|
| CI Guard | 规范合规检查,进入 CI |
| Architecture Guard | 架构约束验证 |
预设(18 个)
可以替换默认的 SDD 流程:
| 预设 | 说明 |
|---|---|
| AIDE | 7 步 AI 驱动工程生命周期 |
| Canon | 基线驱动工作流(规范优先/代码优先/规范漂移) |
| Product Forge | 产品管理导向的 SDD |
| MAQA | 多 Agent 编排 + 质量保证门禁 |
为什么 Spec-Kit 能解决 Vibe Coding 的问题?
| Vibe Coding 的问题 | Spec-Kit 的解法 |
|---|---|
| prompt 模糊导致输出不确定 | 规范 + 澄清阶段,确保需求清晰 |
| 上下文在聊天中丢失 | 每个阶段产出文档,持久化在代码库 |
| 缺乏验收标准 | Clarify 阶段明确验收标准(Given/When/Then) |
| 技术决策临时性 | Plan 阶段记录技术选型及理由 |
| 任务分解主观 | Tasks 阶段自动生成有序任务列表 |
| 无法跨 Agent 保持一致 | Constitution 确保所有决策符合团队规则 |
何时用 Spec-Kit?
| 场景 | 推荐度 |
|---|---|
| 独立开发者,中小功能 | ⭐⭐⭐⭐ |
| 小团队,3-5 人项目 | ⭐⭐⭐⭐ |
| 已有代码库的功能迭代 | ⭐⭐⭐ |
| 复杂产品,多 Agent 协作 | ⭐⭐(用 BMad) |
| 快速原型验证 | ⭐⭐(用 OpenSpec) |
参考资源
- 官网:https://github.github.io/spec-kit/
- GitHub:https://github.com/github/spec-kit
- 最新版本:v0.8.11
- 支持的 AI 代理:30+(Claude Code, Copilot, Cursor, Gemini CLI, Windsurf 等)
- 社区扩展:91 个
- 预设:18 个
- RFC 2119:关键词含义