前言

随着 Agent 能力的不断提升,一种全新的 AI 原生开发范式正在兴起。这种范式强调以规范驱动开发,让 AI 从需求理解到代码实现全程参与,将开发者的角色从"写代码"转变为"定义规范"。Spec Kit 正是这一范式的典型代表,它通过规范驱动的开发流程,让 AI 助手能够更系统、更可靠地协助我们构建软件项目。

安装

https://github.com/github/spec-kit 参考第一部分,使用uv安装即可。

使用

安装和初始化完成后,Spec Kit 采用规范驱动的开发流程,主要通过 AI 助手中的 slash commands 执行。

核心执行流程

1. 建立项目原则

使用 /speckit.constitution 命令创建项目治理原则和开发指南:

/speckit.constitution 创建专注于代码质量、测试标准、用户体验一致性和性能要求的项目原则

2. 创建功能规范

使用 /speckit.specify 命令定义要构建的功能需求,重点关注"是什么"和"为什么",而不是技术栈,相当于功能需求。

/speckit.specify 构建一个能够帮助我将照片整理到不同相册中的应用

3. 异步澄清

在创建了基线规范之后,可以继续澄清在首轮中未充分捕捉到的需求。在创建技术计划之前,应先运行结构化澄清流程以减少下游返工。

推荐顺序:

  1. 使用 /speckit.clarify(结构化)——按顺序、基于覆盖的提问,并将回答记录在 Clarifications 小节中。
  2. 如仍有不清楚之处,可选地采用即兴自由格式细化。
/speckit.clarify

如果您有意跳过澄清(例如做 spike 或探索性原型),请明确指出,以免代理因缺少澄清而阻塞。

4. 制定技术实现计划

使用 /speckit.plan 命令提供技术栈和架构选择。

/speckit.plan 应用使用 Vite,并尽量减少库的使用。使用原生 HTML、CSS 和 JavaScript

5. 生成任务分解

使用 /speckit.tasks 命令从实现计划创建可执行的任务列表

/speckit.tasks

6. 执行实现

使用 /speckit.implement 命令执行所有任务并按计划构建功能:

/speckit.implement

可选命令

还有三个可选的增强命令:

  • /speckit.clarify - 澄清规范中不够明确的区域
  • /speckit.analyze - 跨工件一致性和覆盖率分析
  • /speckit.checklist - 生成自定义质量检查清单

项目结构

初始化后会在 .specify/ 目录下创建完整的开发环境,包含:

  • memory/constitution.md - 项目原则
  • scripts/ - 自动化脚本
  • templates/ - 规范模板
  • specs/NNN-feature-name/ - 功能特定的工件

整个流程强调规范驱动开发,让规范成为可执行的主要工件,代码则是规范的表达。

修改与更新

Spec Kit 支持通过迭代来完善已生成的工件。更新时应遵循 规范 → 计划 → 任务 → 实现 的依赖顺序。

1. 更新规范 (Specification)

  • 增量更新:使用 /speckit.clarify 进行结构化提问,并将答案集成到规范中。
  • 手动修改:直接编辑 specs/NNN-feature-name/spec.md 文件。

2. 更新计划 (Plan)

  • 重新生成:修改规范后,运行 /speckit.plan 基于新需求重新生成技术方案。
  • 手动调整:直接编辑 plan.md 调整架构决策或实现策略。

3. 更新任务 (Tasks)

  • 同步更新:计划变更后,运行 /speckit.tasks 重新分解任务列表和依赖关系。
  • 手动编辑:直接在 tasks.md 中调整任务优先级或添加特定任务。

4. 完整更新流程

  1. 需求变更/speckit.clarify -> /speckit.plan -> /speckit.tasks -> /speckit.implement
  2. 技术调整:直接运行 /speckit.plan [新要求] -> /speckit.tasks -> /speckit.implement

常见问题

Q:plan和task有什么区别

A:是工作流中两个不同阶段的命令,主要区别在于抽象层次输出内容,一个是做什么,一个怎么做

Q:clarify 步骤是否必须执行?

A:clarify 步骤不是强制性的,但强烈推荐在制定技术计划之前执行。它可以减少下游返工,确保需求清晰。

参考资源