hookehuyr

docs: 添加SpecKit学习指南文档

添加SpecKit规范驱动开发工具包的详细学习指南文档,包含核心概念、四阶段工作流、命令参考、最佳实践和常见问题解答等内容。文档基于SpecKit v0.0.79版本整理,为开发者提供AI辅助编程的规范驱动开发指导。
1 +# Spec Kit 学习指南
2 +基于 GitHub Spec Kit v0.0.79 - 面向 AI 的规范驱动开发工具包
3 +
4 +## 📖 目录
5 +1. 快速概览
6 +2. 核心理念
7 +3. 四阶段工作流详解
8 +4. 命令参考手册
9 +5. 实战案例演练
10 +6. 最佳实践指南
11 +7. 常见问题解答
12 +
13 +## 🚀 快速概览
14 +### 什么是 Spec Kit?
15 +Spec Kit 是 GitHub 于 2025 年 9 月发布的开源工具包,专门为 AI 辅助编程设计的 **规范驱动开发(Spec-Driven Development, SDD)框架**
16 +
17 +### 解决的核心问题
18 +| ❌ 传统 AI 编程问题 | ✅ Spec Kit 解决方案 |
19 +|--------------------|---------------------|
20 +| 直接让 AI 写代码 → 不知道 AI 会生成什么 | 📋 先定义规范再写代码 → AI 知道要构建什么 |
21 +| 需求模糊 → AI 基于模式补全而非真正理解意图 | 🎯 分阶段验证 → 每个阶段都有明确的检查点 |
22 +| 缺少检查点 → 发现问题时已经写了大量代码 | ⚙️ 规范即文档 → 规范就是活文档,与代码同步演进 |
23 +| 文档滞后 → 代码写完才补文档 | 🏗️ 架构前置 → 技术决策在编码前确定 |
24 +
25 +## 🎯 核心理念
26 +### 三大核心原则
27 +1. 🔑 规范是唯一真相来源
28 + - 规范定义"是什么"和"为什么"
29 + - 计划定义"怎么做"
30 + - 任务定义"具体做什么"
31 +2. ✅ 明确检查点
32 + - 每个阶段完成后必须人工审核
33 + - 发现问题在当前阶段修正,而非继续前进
34 + - 避免"垃圾输入,垃圾输出"
35 +3. 🤖 AI 作为字面化搭档
36 + - 不要把 AI 当搜索引擎
37 + - 给 AI 清晰的指令和上下文
38 + - AI 擅长模式匹配,但不擅长读心术
39 +
40 +## 🔄 四阶段工作流详解
41 +Constitution(项目宪法)→ Specify(需求规范)→ Plan(技术方案)→ Tasks(任务分解)→ Implement(代码实现)
42 +
43 +### 🏛️ 阶段 0: Constitution(项目宪法)
44 +- 📍 目的:建立项目的不可协商原则
45 +- ⚡ 命令:`/speckit.constitution`
46 +- 📁 输出:`.specify/memory/constitution.md`
47 +- 📝 包含内容:
48 + - 核心开发原则(如:测试优先、模块化架构)
49 + - 技术栈约束(必须使用的框架/工具)
50 + - 质量门禁(部署前必须通过的检查)
51 + - 治理规则(如何修改宪法、代码审查标准)
52 +- ⏰ 使用时机:
53 + - ✅ 项目初始化时(只需要做一次)
54 + - ✅ 项目架构重大变更时
55 + - ❌ 每次开发新功能时(不需要重复)
56 +
57 +### 📋 阶段 1: Specify(需求规范)
58 +- 📍 目的:定义功能的"是什么"和"为什么",不涉及"怎么做"
59 +- ⚡ 命令:`/speckit.specify`
60 +- 📁 输出:`.specify/memory/spec.md`
61 +- 🎯 关注点:
62 + - 用户故事(谁、要做什么、为什么)
63 + - 验收标准(如何验证功能完成)
64 + - 用户旅程(用户如何与功能交互)
65 + - 成功指标(如何衡量功能成功)
66 +- 💡 示例输入:
67 +```
68 +我想添加一个用户积分系统:
69 +- 用户发布内容可以获得积分
70 +- 积分可以兑换特殊权益(如头像框、徽章)
71 +- 管理员可以手动调整用户积分
72 +- 需要有积分历史记录
73 +```
74 +- 🚫 规范中不包含(这些留给 Plan 阶段):
75 + - ❌ 使用 PostgreSQL 还是 MySQL
76 + - ❌ API 端点设计
77 + - ❌ 数据库表结构
78 +- ✅ 最佳实践:
79 + - 第一次输入尽可能详细(减少后续迭代)
80 + - 描述边界情况(如:积分不能为负)
81 + - 说明不做什么(明确范围)
82 +
83 +### 🛠️ 阶段 2: Plan(技术方案)
84 +- 📍 目的:定义"怎么做"——技术架构和实现策略
85 +- ⚡ 命令:`/speckit.plan`
86 +- 📁 输出:`.specify/memory/plan.md`
87 +- 🎯 关注点:
88 + - 技术栈选择(框架、库、数据库)
89 + - 架构决策(模块划分、API 设计)
90 + - 数据流(数据如何在系统中流动)
91 + - 外部依赖(第三方服务、API)
92 + - 安全考量(认证、授权、数据保护)
93 +- 💡 示例输入:
94 +```
95 +技术约束:
96 +- 必须使用 Cloudflare D1 数据库(项目标准)
97 +- 遵循项目的 Module-First 架构
98 +- 使用 Drizzle ORM + Zod 验证
99 +- API 遵循 REST 和 RPC 双模式
100 +```
101 +- 📝 输出示例:
102 +```markdown
103 +## 模块设计
104 +- 创建 `credits` 模块
105 + - `credits.table.ts` - 积分表和积分历史表
106 + - `credits.handlers.ts` - 积分逻辑(增加/扣减/兑换)
107 + - `credits.routes.ts` - REST API
108 + - `credits.rpc.ts` - RPC API
109 +
110 +## 数据库设计
111 +- `credits` 表:用户 ID、当前积分、更新时间
112 +- `credit_transactions` 表:交易历史、类型、金额、原因
113 +
114 +## API 端点
115 +- GET /credits/:userId - 获取用户积分
116 +- POST /credits/earn - 赚取积分
117 +- POST /credits/redeem - 兑换积分
118 +- GET /credits/history - 积分历史
119 +```
120 +- ✅ 最佳实践:
121 + - 引用项目 Constitution 中的原则
122 + - 说明为什么选择某技术(而非仅列举)
123 + - 识别潜在风险和缓解措施
124 +
125 +### 📝 阶段 3: Tasks(任务分解)
126 +- 📍 目的:将 Plan 拆解为可执行的原子任务
127 +- ⚡ 命令:`/speckit.tasks`
128 +- 📁 输出:`.specify/memory/tasks.md`
129 +- 🎯 关注点:
130 + - 任务粒度(每个任务 < 200 行代码)
131 + - 依赖关系(任务执行顺序)
132 + - 并行机会(哪些任务可以同时做)
133 + - 测试要求(每个任务的测试覆盖)
134 +- 📝 输出示例:
135 +```markdown
136 +## 任务列表
137 +
138 +### 数据库层 (可并行)
139 +- [ ] Task 1: 创建 credits 表结构
140 + - 文件: `src/server/modules/credits/credits.table.ts`
141 + - 测试: 表结构验证
142 +- [ ] Task 2: 创建 credit_transactions 表结构
143 + - 文件: `src/server/modules/credits/credits.table.ts`
144 + - 测试: 表结构验证
145 +
146 +### 业务逻辑层 (依赖数据库层)
147 +- [ ] Task 3: 实现积分增加逻辑
148 + - 文件: `src/server/modules/credits/credits.handlers.ts`
149 + - 依赖: Task 1, 2
150 + - 测试: 单元测试 + 集成测试
151 +- [ ] Task 4: 实现积分兑换逻辑
152 + - 文件: `src/server/modules/credits/credits.handlers.ts`
153 + - 依赖: Task 3
154 + - 测试: 边界情况测试(余额不足)
155 +
156 +### API 层 (依赖业务逻辑层)
157 +- [ ] Task 5: 创建 REST API 路由
158 + - 文件: `src/server/modules/credits/credits.routes.ts`
159 + - 依赖: Task 3, 4
160 + - 测试: API 集成测试
161 +```
162 +- ✅ 最佳实践:
163 + - 每个任务独立可测试
164 + - 明确文件路径(AI 知道写到哪里)
165 + - 标注依赖关系(避免顺序错误)
166 + - 遵循 TDD(先写测试,再实现)
167 +
168 +### 💻 阶段 4: Implement(代码实现)
169 +- 📍 目的:按任务逐个实现代码
170 +- ⚡ 命令:`/speckit.implement`
171 +- 🔄 工作方式:
172 + - AI 按照 Tasks 列表逐个实现
173 + - 每个任务实现完成后,开发者审核
174 + - 审核通过后,继续下一个任务
175 + - 如有问题,修改后再继续
176 +- 🤖 AI 的优势:
177 + - ✅ AI 知道要构建什么(Spec 告诉它)
178 + - ✅ AI 知道怎么构建(Plan 告诉它)
179 + - ✅ AI 知道当前做什么(Task 告诉它)
180 +- 🔍 审核要点:
181 + - 代码是否符合 Constitution 原则
182 + - 是否通过所有测试
183 + - 是否有未处理的边界情况
184 + - 代码可读性和可维护性
185 +
186 +## 📚 命令参考手册
187 +### 核心命令
188 +| 命令 | 作用 | 输出文件 | 使用时机 |
189 +|------|------|----------|----------|
190 +| `\speckit.constitution` | 建立项目原则 | `constitution.md` | 项目初始化(一次) |
191 +| `\speckit.specify` | 定义需求规范 | `spec.md` | 每个新功能开始 |
192 +| `\speckit.plan` | 创建技术方案 | `plan.md` | 规范审核通过后 |
193 +| `\speckit.tasks` | 分解任务列表 | `tasks.md` | 方案审核通过后 |
194 +| `\speckit.implement` | 执行代码实现 | 实际代码文件 | 任务列表审核通过后 |
195 +
196 +### 增强命令(可选)
197 +| 命令 | 作用 | 使用时机 |
198 +|------|------|----------|
199 +| `\speckit.clarify` | 澄清模糊需求 | Plan 前,需求不清晰时 |
200 +| `\speckit.analyze` | 检查一致性 | Tasks 和 Implement 之间 |
201 +| `\speckit.checklist` | 生成质量检查清单 | Plan 后,提高质量保证 |
202 +
203 +## 🎮 实战案例演练
204 +场景:为 itypol2 添加用户积分系统
205 +
206 +### 🏛️ Step 0: Constitution(已完成)
207 +```markdown
208 +✅ 已创建 itypol2 Constitution v1.0.0
209 +- Module-First 架构
210 +- Database-First 工作流
211 +- 端到端类型安全
212 +```
213 +
214 +### 📋 Step 1: Specify
215 +```markdown
216 +/speckit.specify
217 +我想为 itypol2 添加用户积分系统:
218 +
219 +【功能描述】
220 +- 用户通过以下行为获得积分:
221 + - 发布内容:+10 积分
222 + - 内容被点赞:+2 积分/次
223 + - 每日登录:+5 积分
224 +- 积分可以兑换权益:
225 + - 100 积分 → 专属头像框
226 + - 500 积分 → 作者徽章
227 + - 1000 积分 → VIP 标识
228 +- 管理员功能:
229 + - 手动调整任意用户积分(需审计日志)
230 + - 查看积分统计报表
231 +
232 +【边界条件】
233 +- 积分不能为负数
234 +- 兑换后积分扣除,但不可退款
235 +- 积分历史永久保留(用于审计)
236 +
237 +【不包含的功能】
238 +- 积分过期机制(v1 不做)
239 +- 积分转赠功能(v1 不做)
240 +- 积分商城(单独项目)
241 +```
242 +
243 +#### 🎯 AI 会生成详细的 `spec.md`,包含:
244 +- 用户故事(5-10 个)
245 +- 验收标准(明确的可测试条件)
246 +- 用户旅程(从获得积分到兑换的流程)
247 +- 成功指标(如:90% 用户完成首次兑换)
248 +
249 +#### 🔍 审核要点:
250 +- ✅ 是否覆盖所有场景
251 +- ✅ 是否有遗漏的边界情况
252 +- ✅ 验收标准是否可测试
253 +
254 +### 🛠️ Step 2: Plan
255 +```markdown
256 +/speckit.plan
257 +技术约束:
258 +- 遵循 itypol2 Constitution 原则
259 +- 使用 Cloudflare D1 + Drizzle ORM
260 +- 使用 bun run scaffold:module credits 生成模块
261 +- API 遵循 REST + RPC 双模式
262 +- 所有操作需要 Google OAuth 认证
263 +```
264 +
265 +#### 🎯 AI 会生成 `plan.md`,包含:
266 +- 模块结构(符合 Module-First)
267 +- 数据库设计(credits 表 + credit_transactions 表)
268 +- API 设计(6 个端点)
269 +- 认证策略(Better Auth 中间件)
270 +- 迁移计划(如何从现有系统集成)
271 +
272 +#### 🔍 审核要点:
273 +- ✅ 是否符合 Constitution 原则
274 +- ✅ 数据库设计是否规范
275 +- ✅ API 设计是否 RESTful
276 +
277 +### 📝 Step 3: Tasks
278 +```markdown
279 +/speckit.tasks
280 +```
281 +
282 +#### 🎯 AI 会生成 `tasks.md`,包含:
283 +```markdown
284 +## Phase 1: 数据库层(可并行)
285 +- [ ] Task 1.1: 定义 credits 表
286 +- [ ] Task 1.2: 定义 credit_transactions 表
287 +- [ ] Task 1.3: 生成并应用迁移
288 +
289 +## Phase 2: 业务逻辑层(依赖 Phase 1)
290 +- [ ] Task 2.1: 实现积分增加 handler
291 +- [ ] Task 2.2: 实现积分兑换 handler
292 +- [ ] Task 2.3: 实现积分历史查询 handler
293 +- [ ] Task 2.4: 实现管理员调整 handler
294 +
295 +## Phase 3: API 层(依赖 Phase 2)
296 +- [ ] Task 3.1: 创建 REST routes
297 +- [ ] Task 3.2: 创建 RPC routes
298 +- [ ] Task 3.3: 添加 OpenAPI 文档
299 +
300 +## Phase 4: 测试(与 Phase 2-3 并行)
301 +- [ ] Task 4.1: 单元测试 - handlers
302 +- [ ] Task 4.2: 集成测试 - API
303 +- [ ] Task 4.3: 边界测试 - 余额不足等
304 +```
305 +
306 +#### 🔍 审核要点:
307 +- ✅ 任务粒度是否合理
308 +- ✅ 依赖关系是否正确
309 +- ✅ 是否包含测试任务
310 +
311 +### 💻 Step 4: Implement
312 +```markdown
313 +/speckit.implement
314 +```
315 +
316 +#### 🚀 AI 会按顺序执行:
317 +创建数据库表 → 等待审核 → 实现业务逻辑 → 等待审核 → 创建 API 路由 → 等待审核 → 编写测试 → 等待审核
318 +
319 +#### ⚠️ 每步审核后才继续下一步
320 +
321 +## ✨ 最佳实践指南
322 +### ✅ DO(推荐做法)
323 +1. 📝 详细的初始输入
324 + - 第一次 `/speckit.specify` 时,尽可能详细描述需求
325 + - 包含边界条件、不做什么、优先级
326 + - 减少后续来回修改
327 +2. ✅ 遵循检查点
328 + - 每个阶段完成后必须审核
329 + - 发现问题立即修正,不要带到下一阶段
330 + - 审核通过才运行下一个命令
331 +3. 📜 引用 Constitution
332 + - 在 Plan 中明确引用项目原则
333 + - 让 AI 理解项目的约束和标准
334 + - 保持代码风格一致
335 +4. 🔧 小任务优于大任务
336 + - 每个任务 < 200 行代码
337 + - 任务独立可测试
338 + - 便于审核和调试
339 +5. 📚 活文档思维
340 + - 规范随代码演进
341 + - 修改代码时同步更新规范
342 + - 规范即文档
343 +
344 +### ❌ DON’T(避免做法)
345 +1. 🚫 跳过阶段
346 + - ❌ 不要直接从 Specify 跳到 Implement
347 + - ❌ 不要省略 Plan(会导致架构混乱)
348 +2. 🌫️ 模糊输入
349 + - ❌ “帮我做一个用户系统”(太宽泛)
350 + - ✅ “用户系统包含注册、登录、个人资料编辑,使用 Google OAuth”
351 +3. 🚫 忽略 Constitution
352 + - ❌ 不要在 Plan 中使用未批准的技术栈
353 + - ❌ 不要违反项目原则(如跳过测试)
354 +4. 🦾 过大的任务
355 + - ❌ “实现整个积分系统”(太大)
356 + - ✅ “实现积分增加逻辑”(合理)
357 +5. 📉 文档滞后
358 + - ❌ 代码改了但规范不更新
359 + - ❌ 规范与实际代码不一致
360 +
361 +## ❓ 常见问题解答
362 +### Q1: 什么时候适合用 Spec Kit?
363 +🎯 适合场景:
364 +- ✅ 绿地项目(全新项目)
365 +- ✅ 大型功能开发(需要多个模块配合)
366 +- ✅ 遗留系统现代化(需要清晰的架构决策)
367 +- ✅ 团队协作项目(需要统一标准)
368 +
369 +🚫 不适合场景:
370 +- ❌ 简单 bug 修复(几行代码)
371 +- ❌ 紧急热修复(时间紧迫)
372 +- ❌ 实验性原型(需求不明确)
373 +
374 +### Q2: 每次都要从 Constitution 开始吗?
375 +📝 不需要!
376 +- Constitution 只在项目初始化时创建一次
377 +- 后续每个功能从 Specify 开始即可
378 +- 只有在项目架构重大变更时才更新 Constitution
379 +
380 +### Q3: 如果 AI 生成的内容不符合预期怎么办?
381 +🛠️ 解决方案:
382 +- 当前阶段修正 - 直接修改生成的文件(如 `spec.md`
383 +- 重新运行命令 - 提供更详细的输入重新生成
384 +- 使用 `/speckit.clarify` - 让 AI 提问澄清需求
385 +- 不要继续前进 - 当前阶段不满意就不要进入下一阶段
386 +
387 +### Q4: Tasks 太多怎么办?
388 +📊 策略:
389 +- 分批实现 - 不需要一次完成所有任务
390 +- MVP 优先 - 先实现核心功能,再扩展
391 +- 并行开发 - 标记可并行的任务,提高效率
392 +
393 +### Q5: 如何处理需求变更?
394 +🔄 流程:
395 +- 更新 Spec - 修改 `spec.md` 反映新需求
396 +- 重新 Plan - 运行 `/speckit.plan`(如果架构变化)
397 +- 调整 Tasks - 更新或新增任务
398 +- 版本控制 - 提交规范变更到 Git
399 +
400 +### Q6: Spec Kit 和传统开发流程的区别?
401 +| 传统流程 | Spec Kit 流程 |
402 +|----------|---------------|
403 +| 需求 → 代码 → 文档 | 需求 → 规范 → 方案 → 任务 → 代码 |
404 +| 文档滞后 | 规范即文档 |
405 +| 架构临时决策 | 架构前置决策 |
406 +| 大块代码审核 | 小任务逐步审核 |
407 +| AI 不知道上下文 | AI 有清晰上下文 |
408 +
409 +## 🎯 核心价值总结
410 +### 💡 五大核心价值
411 +1. 🧠 降低认知负荷 - 每次只关注一个阶段
412 +2. ⚡ 提高代码质量 - 架构前置,避免返工
413 +3. 🎯 改善 AI 输出 - 清晰上下文 → 准确代码
414 +4. 📚 活文档系统 - 规范与代码同步演进
415 +5. 👥 团队协作 - 统一标准和流程
416 +
417 +## 🚀 快速开始
418 +```markdown
419 +# 1. 已完成:初始化 Spec Kit
420 +✅ itypol2 已配置好 Spec Kit
421 +
422 +# 2. 开始第一个功能
423 +/speckit.specify [详细描述你的功能需求]
424 +
425 +# 3. 后续按流程
426 +/speckit.plan → /speckit.tasks → /speckit.implement
427 +```
428 +
429 +🎉 祝你使用 Spec Kit 愉快!
430 +💫 这份学习指南基于 Spec Kit 官方文档整理,结合了最佳实践和实战经验。建议收藏并在实际项目中反复参考。
431 +
432 +---
433 +
434 +## 补充信息
435 +- 项目地址:[GitHub 仓库](https://github.com/github/speckit)(假设地址,原文未提供具体链接)
436 +- 许可证:MIT(完全开源,欢迎贡献)
437 +- 核心定位:Spec Kit 代表了 GitHub 对 AI 原生开发(AI-Native Development)的理解——AI 不应替代开发者,而应放大开发者的意图。
438 +
439 +> 本文基于 Spec Kit v0.0.79 版本整理,若后续版本有功能更新,请参考官方文档。