Spec-kit 使用总结

Spec-Kit 是 GitHub 开源的规格驱动开发工具包,通过与 AI 编码工具(GitHub Copilot、Claude Code 等)深度集成,以「规格优先」为核心思想,帮助开发者规范开发流程、提升代码质量,尤其适合需求明确的中小型项目快速落地。

源码地址:https://github.com/github/spec-kit

主要功能与核心流程

核心功能

  1. 规格优先开发要求先明确需求规格(What/Why),再进入技术实现(How),避免过早陷入技术细节。
  2. 四阶段闭环工作流
    • Specify(规格化):定义用户需求、业务逻辑、成功标准
    • Plan(规划):基于规格设计技术方案(架构、技术栈、依赖等)
    • Tasks(任务分解):将规划拆解为可执行的具体任务(含优先级与依赖)
    • Implement(实现):基于 TDD 原则生成测试用例与业务代码
  3. AI 工具深度集成支持 Claude Code、GitHub Copilot 等工具自动生成文档、测试和代码,并可通过自然语言交互调整输出。
  4. 测试驱动约束强制先生成测试用例,再实现业务代码,确保代码符合规格且可验证。

环境准备与安装

以Claude Code + Windows为例

  • Claude Code
  • Python:Python 3.8+

安装步骤

  1. 安装uv包管理器

    pip install uv
    
  2. 验证Claude Code安装

    claude doctor
    
  3. 从零开始构建项目

    uvx --from git+https://github.com/github/spec-kit.git specify init <PROJECT_NAME>
    

    (若已有项目)集成Spec-Kit

    cd <现有项目目录>
    uvx --from git+https://github.com/github/spec-kit.git specify init --here
    

    image-20251119150031817

  4. 启动Claude Code

    cd <PROJECT_NAME>
    
    # 启动claude
    claude
    
  5. 验证安装

    再claude code 中检查是否有/specify命令可以用

    关键命令

    命令功能使用时机输出文件
    /specify描述功能需求项目开始时spec.md
    /plan技术规划需求明确后plan.md
    /tasks任务分解规划完成后tasks.md

完整工作流程

  1. Build(构建)

    按照上述安装步骤完成环境配置,确认所有命令可用,准备开始规格驱动开发

  2. Specify(规格化)

    • 专注于什么为什么,而不是技术栈
    • 清晰描述用户需求

    示例

    /speckit.specify 我需要构建一个智能人机五子棋对战系统,支持人和电脑进行五子棋博弈
    

    image-20251119151326302

    执行/specify命令后,Claude Code会生成详细的规格文档(spec.md)。你需要审查并修改:

    重点关注:

    • 业务逻辑准确性:是否符合你的业务需求
    • 功能完整性:是否遗漏重要功能
    • 边界条件:错误处理、异常情况
    • 性能要求:响应时间、并发用户数等
    • 安全要求:认证、授权、数据保护
  3. Plan(规化)

    • 基于规格制定技术方案,明确技术栈与架构。

    示例

    /speckit.plan 开发环境为windows,使用语言为C++,项目五子棋算法可以采用五元组算法,使用easyx辅助画图
    

    image-20251119152544422

    Claude Code会生成详细的技术计划plan.md,包括:

    • 架构设计:系统整体架构
    • 技术栈选择:前后端技术栈
    • 数据库设计:数据模型和关系
    • API端点规划:RESTful API设计
    • 部署策略:部署和运维方案
  4. Tasks(任务分解)

    • 将规划拆解为可执行的具体任务,明确优先级与依赖。

    示例

    /speckit.tasks 将上述规格和计划分解为可执行的开发任务
    

    image-20251119155724821

    生成的任务列表需要你:

    • 优先级排序:调整任务执行顺序
    • 任务细化:对复杂任务进一步分解
    • 依赖关系:确认任务间的依赖关系
  5. Implement(实现)

    • 基于 TDD 原则,先生成测试用例,再实现代码。

    示例

    /speckit.implement
    

    image-20251119160226381
    让Claude生成代码时遵循:

    • 必须先写测试(TDD原则)
    • 获得测试批准后再生成实现代码
    • 通过迭代测试和审查完善代码

生成项目编译运行效果如下,虽然刚生成的项目代码编译可能会出现报错,但是将报错信息给AI之后能够很快解决

image-20251119190004273

项目目录结构一般如下:

my-project/
├── spec.md              # 需求规格文档(用户视角:功能、场景、标准)
├── plan.md              # 技术规划文档(开发者视角:架构、技术栈、接口)
├── tasks.md             # 任务分解列表(含优先级、依赖、耗时)
├── tests/               # 测试目录
│   ├── unit/            # 单元测试(如单个函数:落子校验、胜负判定)
│   ├── integration/     # 集成测试(如模块交互:UI 层调用逻辑层)
│   └── e2e/             # 端到端测试(如完整对战流程)
├── src/                 # 源代码目录
│   ├── core/            # 核心逻辑(如算法、数据结构)
│   ├── ui/              # 界面相关(如 EasyX 绘图代码)
│   └── main.cpp         # 程序入口
├── docs/                # 辅助文档(如接口说明、算法流程图)
└── README.md            # 项目说明(安装、运行、注意事项)

常见问题与解决方案

  1. AI生成的规格/计划不符合需求
    • 解决:在命令中补充更具体的约束(如 “必须支持悔棋功能,最多悔棋 3 步”),或手动修改 spec.md/plan.md 后重新执行后续命令。
  2. 代码编译报错
    • 解决:将完整错误信息反馈给 AI,明确请求 “修复编译错误”,AI 通常会定位语法问题或依赖缺失。
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐