Community生产力与协作github.com

Spec-Driven Development (SDD) 技能

指导用户使用 GitHub 的 Spec-Kit 进行规范驱动开发,将传统软件开发流程倒置,让规范变为可执行文件并直接生成工作实现。

Spec-Driven Development (SDD) 技能 是什么?

此技能指导用户使用 GitHub 的 Spec-Kit 进行规范驱动开发 (SDD),这是一种将传统软件开发流程倒置的方法论,强调规范应成为可执行的人工制品,而非仅作为文档。它适用于新项目(绿地开发)和现有代码库(棕地开发),并提供完整的 6 步流程或逆向工程指导。该技能强制要求每个用户故事都包含 Gherkin 格式的验收标准,并引入行为性验收标准 (Behavioural ACs) 来评估 LLM 参与环节的模型行为,确保可测试性。它支持 Claude Code、GitHub Copilot、Cursor 等多种 AI 代理,并在每次执行 SDD 命令后提供结构化的 10 点摘要反馈循环,包含关键决策、生成内容、待审项目和功能状态追踪,帮助用户保持参与并了解项目进展。该技能通过 `specify` CLI 工具(来自 `spec-kit` 仓库)驱动,可通过 `uv` 安装。

兼容平台✓Claude Code✓Codex CLI✓Cursor✓Gemini CLI✓OpenCode✓Windsurf
npx skills add https://github.com/GalRogozinski/skills/tree/HEAD/skills/sdd

Installed? Explore more 生产力与协作 skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

规范驱动开发 (SDD) 技能

引导用户使用 GitHub 的 Spec-Kit 进行规范驱动开发——这是一种将传统软件开发流程倒置的方法论,通过使规范可执行并直接生成可用的实现来工作。

核心理念

规范驱动开发强调:

  • 意图驱动开发:先定义“做什么”,再考虑“怎么做”
  • 丰富的规范创建:使用护栏和组织原则
  • 多步细化:非一次性代码生成
  • 原生 AI:高度依赖先进的 AI 能力

请记住:这是原生 AI 开发。规范不仅仅是文档——它们是可直接驱动实现的可执行人工制品。AI 代理使用它们生成与规范中定义的意图相匹配的工作代码。

验收标准:Gherkin 格式(必需)

每个 spec.md(或 specify.md)中的用户故事,除了其文字描述外,必须包含 Gherkin 风格的验收标准。 这适用于绿地开发和棕地开发,适用于每个用户故事,无论该人工制品是由 /speckit.specify 生成的,还是为不使用 CLI 生成模板的仓库手动编写的。文字描述说明故事内容;Gherkin 场景则精确说明如何验证——这正是使规范可执行而非描述性的关键。

格式——在每个用户故事下方直接使用围栏 gherkin 代码块,包含 1-4 个场景:首先是快乐路径,然后是针对该故事的重要边界/负面情况(而非规范中的所有边界情况——那些应属于规范自己的“边界情况”部分;仅包含与本故事相关的)。

Scenario: <简短、具体的名称——不要使用“快乐路径”>
  Given <前提条件 / 起始状态>
  When <参与者执行的单个操作>
  Then <可观察、可测试的结果>
  And <额外的结果,如果需要>

Scenario: <本故事的边界/负面情况>
  Given <前提条件>
  When <操作>
  Then <结果——“不应该发生什么”也是一个有效的 Then>

编写规则:

  • 每个场景只包含一个 When。 多个操作意味着多个场景——这确保每个场景对应一个测试。
  • Then 必须是可观察的,而不是内部状态:使用“用户看到确认提示”,而不是“状态正确更新”。如果你说不出如何检查它,那它就没准备好。
  • 重用规范自身的词汇。 Given/When/Then 步骤应使用与用户故事和功能需求相同的名词(资产名称、交易类型、字段名称),而不是意译。
  • 不要将功能需求重新表述为 Gherkin。 验收标准验证故事;FRs 被单独追踪。重叠是可以的,但将每个 FR 都作为场景复制则不可以。
  • 当一个故事有多个场景时,为场景编号以便追踪:Scenario: AC-1 — ...,Scenario: AC-2 — ...(对于单场景故事可选)。

总结时(10 点模板,“生成的内容”),需报告场景数量以及用户故事/成功标准数量,例如:“5 个用户故事(11 个 Gherkin 场景),8 个成功标准。”如果用户故事缺少验收标准,在移至 /speckit.plan 之前,需在“🔍 重要待审事项”下标记。基于没有验收标准的故事制定的计划往往会低估测试需求。

行为性 ACs:仅适用于 LLM 参与循环的故事

Gherkin 假设一次运行就能决定通过/失败。当模型输出决定结果时,这就不适用了:非确定性故事的一次成功运行几乎证明不了什么。对于这些故事,需在 Gherkin 块下添加一个行为性 ACs 块。

仅当故事的可观察结果依赖于模型输出时才生成它。 示例:提示词、系统提示词、任务、技能文件或工具描述发生变化;模型选择操作、判断或裁决某事,或编写面向用户的文本;模型或其参数发生变化。不要生成 对于确定性代码、已存储数据的 UI 渲染、管道,或故事中包含模型调用但其输出未被断言的情况。如有疑问,请先提一个问题;不要投机性地添加该块。没有 LLM 参与循环的故事的规范不应包含任何行为性 ACs,也不应包含空占位符。

格式:每个符合条件的故事一个块,直接放在其 Gherkin 块之后。

**行为性 ACs** (LLM 参与循环:<模型决定的内容>)
- **案例:** <N> 个案例,位于 `<案例集路径>`,来自 <真实失败 / 追踪 / 转录>;仅使用合成输入填补空白,绝不使用合成预期输出
- **运行次数:** k = <k> 每个案例(≈ 3 / 预期失败率;未知时为 20–30)
- **通过标准:** <指标> ≥ <阈值> 在 k 次运行中,优于基线的幅度超过噪声(与当前版本进行配对比较)
- **评分器:** 代码检查 | LLM 裁判(二元,每个失败模式一个)| 人类;裁判还需说明其验证:TPR/TNR ≥ 0.9(最低 0.8)基于保留的人类标签,或清楚标明“未验证”
- **命令:** `<运行该命令并打印通过率、成本和延迟的单个命令>`

规则:

  • 只有真正的模型运行才算数。 模拟、关键字仿真或预测分数都不是结果。如果无法运行(成本、密钥),则说明故事为未评估。不要伪造数字。
  • 优先使用代码评分器。 仅对代码无法检查的内容使用裁判。
  • Gherkin 仍然适用。 Gherkin 场景涵盖确定性外壳(创建了工件、保持了护栏)。行为性 ACs 则涵盖模型的行为。
  • plan.md 包含评估信息: 案例集位置、运行命令、每次运行的成本以及运行时机(每个 PR 运行,或者如果成本高昂则在合并前运行)。

总结时,需分别计数,例如:“5 个用户故事(11 个 Gherkin 场景,其中 2 个包含行为性 ACs)”。在“重要待审事项”下标记任何缺少该块的 LLM 参与循环故事,以及任何标记为“未验证”的裁判。

快速决策树

这是新项目吗(绿地开发)?

→ 请参阅 绿地开发工作流,了解完整的 6 步流程

这是现有代码库吗(棕地开发)?

→ 请参阅 棕地开发工作流,了解逆向工程和集成指南

需要安装帮助?

→ 请参阅 安装指南,了解设置和故障排除

安装快速开始

推荐(持久化安装):

uv tool install specify-cli --from git+https://github.com/github/spec-kit.git

一次性使用:

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

验证:

specify check

有关详细的安装选项、故障排除和环境变量,请参阅 安装指南。

支持的 AI 代理

适用于:

  • ✅ Claude Code
  • ✅ GitHub Copilot
  • ✅ Gemini CLI
  • ✅ Cursor
  • ✅ Qwen Code
  • ✅ opencode
  • ✅ Windsurf
  • ✅ Kilo Code
  • ✅ Auggie CLI
  • ✅ CodeBuddy CLI
  • ✅ Roo Code
  • ✅ Codex CLI
  • ✅ Amp
  • ⚠️ Amazon Q Developer CLI(不支持斜杠命令的自定义参数)

工件总结与反馈循环

关键工作流:在任何 SDD 命令生成或修改工件后,自动执行此反馈循环以保持用户参与:

每个命令完成后

  1. 检测工件变更

    • 识别被创建或修改的工件:
      • constitution.md(项目原则)
      • spec.md(需求规范)
      • plan.md(技术实现计划)
      • tasks.md(可执行的任务分解)
      • 棕地工作流的分析报告
  2. 读取并总结

    • 读取相关工件
    • 提取关键信息:
      • 对于 constitution.md:核心原则、编码标准、约束条件
      • 对于 spec.md:主要需求、用户故事(及其 Gherkin 验收标准)、成功标准
      • 对于 plan.md:技术栈选择、架构决策、里程碑
      • 对于 tasks.md:任务数量、主要任务类别、依赖关系
      • 对于分析报告:当前模式、技术债务、集成点
  3. 提供结构化总结(使用下方 10 点模板)

    • 展示生成的内容及其原因
    • 突出最重要的决策并提供理由
    • 包含质量指标和注意事项
    • 保持总结聚焦且可操作
    • 为每个部分使用清晰的标题
  4. 包含功能状态(混合方法)

    • 在每个总结中包含简短的状态行
    • 根据请求通过 /speckit.status 提供详细状态
    • 请参阅下面的“功能状态追踪”部分
  5. 提供反馈选项

    • 选项 A:“看起来不错,继续下一步”
    • 选项 B:“我想修改 [具体部分]”
    • 选项 C:“重新生成并进行以下更改:[用户输入]”
    • 选项 D:“解释为什么做出 [具体决策]”

10 点总结模板

在任何 SDD 命令完成后使用此结构化格式:

## ✅ [命令名称] 已完成 - 刚才发生了什么

### 🎯 关键决策(前 3 项)
1. [决策] - **理由:** [为何选择此项]
2. [决策] - **理由:** [为何选择此项]
3. [决策] - **理由:** [为何选择此项]

### 📋 生成的内容
- [工件 1]:[内容简要描述]
- [工件 2]:[内容简要描述]

### 🔍 重要待审事项(前 3 项)
1. [需要检查的关键项及其重要性]
2. [需要验证的重要细节及其潜在影响]
3. [需要考虑的边界情况及其对设计的影响]

### ⚠️ 注意事项(前 2 项)
- [潜在问题或陷阱] - **如何避免:** [指导]
- [常见错误] - **如何避免:** [指导]

### 🔄 下一步操作(2 个选项)
- **选项 1:** [下一步骤] - 最佳场景:[条件]
- **选项 2:** [替代步骤] - 最佳场景:[条件]

📊 **功能状态:** [当前功能名称]([阶段])→ 下一步:[下一个功能]
   进度:[●●●○○] [X]% | 已完成:[N] 个中的 [总计] 个功能 | 依赖关系:[状态]

**您的选项:** [A] 继续 [B] 修改 [C] 更多解释 [D] 显示完整状态

示例:执行 /speckit.specify 后的增强总结

## ✅ Specify 已完成 - 刚才发生了什么

### 🎯 关键决策
1. **身份验证:JWT 令牌** - 理由:无状态架构,可水平扩展,行业标准
2. **密码要求:12+ 字符且具有复杂度** - 理由:平衡安全(NIST 指南)与可用性
3. **会话超时:24 小时** - 理由:Web 应用的标准,平衡安全性与用户便利性

### 📋 生成的内容
- `.speckit/features/user-auth/specify.md`:完整需求,包含 5 个用户故事(12 个 Gherkin 验收标准场景)、8 个成功标准、3 个边界情况

### 🔍 重要待审事项
1. **密码重置流程** - 验证电子邮件需求与您的基础设施(SMTP 服务器、模板)匹配
2. **多因素身份验证** - 当前标记为“未来增强”;可能需要纳入 MVP
3. **速率限制** - 设置为每 15 分钟 5 次登录尝试;请考虑是否符合您的安全策略

### ⚠️ 注意事项
- **未指定电子邮件服务依赖** - 如何避免:将电子邮件服务添加到 plan.md 的依赖项中
- **用户数据的 GDPR 合规性** - 如何避免:审查数据保留和用户删除要求

### 🔄 下一步操作
- **选项 1:** 运行 `/speckit.plan` 来设计技术实现 - 最佳场景:需求看起来不错
- **选项 2:** 修改 specify.md - 最佳场景:您需要调整需求或添加功能

📊 **功能状态:** user-authentication(已指定)→ 下一步:profile-management
   进度:[●●○○○] 40% | 已完成:5 个功能中的 1 个 | 依赖关系:database-setup ✅

**您的选项:** [A] 继续规划 [B] 修改需求 [C] 解释 JWT 选择 [D] 显示完整状态

何时跳过总结

仅在以下情况下跳过总结步骤:

  • 用户明确要求“跳过总结”或“自动运行所有步骤”
  • 重新运行命令且没有工件变更
  • 命令失败或产生错误(此时应进行故障排除)

此工作流的好处

  • 消除“黑箱”感:清晰解释生成的内容及其原因
  • 实现早期反馈:在执行前发现误解
  • 保持敏捷性:使用结构化格式快速审查,而非冗长的审批流程
  • 建立信任:用户可以看到 AI 的推理和决策及其理由
  • 提供上下文:功能状态让用户始终了解项目的整体进展

功能状态追踪

混合方法

在每个 SDD 命令之后,在总结中包含一个简短的功能状态行。根据请求通过 /speckit.status 提供详细状态。

简短状态行格式

在每个总结末尾包含以下内容:

📊 **功能状态:** [当前功能名称]([阶段])→ 下一步:[下一个功能名称]
   进度:[●●●○○] [X]% | 已完成:[N] 个中的 [总计] 个功能 | 依赖关系:[Dep] ✅/⏸️

阶段值:

  • 指定中(完成 20%)
  • 规划中(完成 40%)
  • 任务分解中(完成 60%)
  • 进行中(完成 80%)
  • 已完成(完成 100%)

进度指示器:

  • 使用实心圆 (●) 表示已完成的阶段
  • 使用空心圆 (○) 表示待完成的阶段
  • 根据阶段计算百分比

详细状态仪表板

当用户请求完整状态(选项 D)或运行 /speckit.status 时,显示以下内容:

📊 项目功能状态仪表板

🎯 当前功能
├─ [功能名称]([阶段] - [X]% 完成)
│  ├─ ✅ 需求已指定
│  ├─ 🔄 实现计划进行中
│  ├─ ⏸️ 任务未开始
│  └─ ⏸️ 实现未开始
│  阻塞项:[无 | 描述]
│  依赖关系:[功能名称] ✅

✅ 已完成功能([N] 个)
├─ [功能 1](100% 完成)
└─ [功能 2](100% 完成)

📋 即将推出的功能([N] 个)
├─ [功能 3](依赖:[当前功能])
└─ [功能 4](依赖:[功能 3])

⚠️ 被阻塞的功能

…

[为翻译而截断]

工作流参考

由于文件空间限制,此技能参考以下工作流文件以获取详细的步骤指令:

这些工作流文件包含开发人员成功使用此技能所需的逐步骤说明。

相关技能