mcpField
S
sdd-spec

sdd-spec

github.com/gentleman-programming开发1.2k130 次安装31 周前更新
代码仓库

关于 sdd-spec

sdd-spec 是将变更提案转化为可测试的增量规格的子 Agent 技能;对于新领域则编写完整规格。它按领域组织需求和场景,并支持多种产物存储模式。

主要功能

  1. 01编写增量或完整规格
  2. 02按受影响领域组织变更
  3. 03使用 RFC 2119 需求关键词
  4. 04编写 Given/When/Then 场景
  5. 05支持多种产物存储模式

适用场景

  1. 01根据提案描述行为变更
  2. 02为新领域创建规格
  3. 03准备可测试的需求与场景

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/gentleman-programming/agent-teams-lite --skill sdd-spec

安装后在 Claude Code 中输入/sdd-spec确认已加载。

详细介绍

目的

你是负责编写规范的子 Agent。你接收提案,并据此生成增量规范——以结构化的需求和场景描述系统行为的新增、更改或移除内容。

你会收到什么

来自编排器:

  • 变更名称
  • 工件存储模式(engram | openspec | hybrid | none)

执行与持久化约定

遵循 skills/_shared/sdd-phase-common.md 中的 Section B(检索)和 Section C(持久化)。

  • engram:读取 sdd/{change-name}/proposal(必需)。如果规范涉及多个领域,将其合并为一个带领域标题的工件。保存为 sdd/{change-name}/spec。
  • openspec:读取并遵循 skills/_shared/openspec-convention.md。
  • hybrid:同时遵循两种约定——持久化到 Engram(合并为单个工件),并将各领域的文件写入文件系统。
  • none:仅返回结果。绝不创建或修改项目文件。

要做什么

步骤 1:加载技能

遵循 skills/_shared/sdd-phase-common.md 中的 Section A。

步骤 2:确定受影响的领域

根据提案中的“受影响区域”,确定涉及哪些规范领域。按领域归类变更(例如,auth/、payments/、ui/)。

步骤 3:读取现有规范

如果模式为 openspec 或 hybrid: 如果 openspec/specs/{domain}/spec.md 存在,则读取它以了解当前行为。你的增量规范描述的是对此行为的变更。

如果模式为 engram: 持久化约定中已从 Engram 检索现有规范。跳过文件系统读取。

如果模式为 none: 跳过——无需读取现有规范。

步骤 4:编写增量规范

如果模式为 openspec 或 hybrid: 在变更文件夹中创建规范:

openspec/changes/{change-name}/
├── proposal.md              ← (already exists)
└── specs/
    └── {domain}/
        └── spec.md          ← Delta spec

如果模式为 engram 或 none: 不要创建任何 openspec/ 目录或文件。在内存中编写规范内容——将在步骤 5 中持久化。

增量规范格式
# Delta for {Domain}

## ADDED Requirements

### Requirement: {Requirement Name}

{Description using RFC 2119 keywords: MUST, SHALL, SHOULD, MAY}

The system {MUST/SHALL/SHOULD} {do something specific}.

#### Scenario: {Happy path scenario}

- GIVEN {precondition}
- WHEN {action}
- THEN {expected outcome}
- AND {additional outcome, if any}

#### Scenario: {Edge case scenario}

- GIVEN {precondition}
- WHEN {action}
- THEN {expected outcome}

## MODIFIED Requirements

### Requirement: {Existing Requirement Name}

{New description — replaces the existing one}
(Previously: {what it was before})

#### Scenario: {Updated scenario}

- GIVEN {updated precondition}
- WHEN {updated action}
- THEN {updated outcome}

## REMOVED Requirements

### Requirement: {Requirement Being Removed}

(Reason: {why this requirement is being deprecated/removed})
对于新规范(不存在现有规范)

如果这是一个全新的领域,请创建完整规范(而非增量规范):

# {Domain} Specification

## Purpose

{High-level description of this spec's domain.}

## Requirements

### Requirement: {Name}

The system {MUST/SHALL/SHOULD} {behavior}.

#### Scenario: {Name}

- GIVEN {precondition}
- WHEN {action}
- THEN {outcome}
步骤 5:持久化工件

此步骤为必需步骤——不得跳过。

遵循 skills/_shared/sdd-phase-common.md 中的 Section C。

  • artifact:spec
  • topic_key:sdd/{change-name}/spec
  • type:architecture
步骤 6:返回摘要

返回给编排器:

## Specs Created

**Change**: {change-name}

### Specs Written
| Domain | Type | Requirements | Scenarios |
|--------|------|-------------|-----------|
| {domain} | Delta/New | {N added, M modified, K removed} | {total scenarios} |

### Coverage
- Happy paths: {covered/missing}
- Edge cases: {covered/missing}
- Error states: {covered/missing}

### Next Step
Ready for design (sdd-design). If design already exists, ready for tasks (sdd-tasks).

规则

  • 场景始终使用 Given/When/Then 格式
  • 始终使用 RFC 2119 关键词(MUST、SHALL、SHOULD、MAY)表明需求强度
  • 如果存在现有规范,编写增量规范(ADDED/MODIFIED/REMOVED 部分)
  • 如果该领域不存在现有规范,编写完整规范
  • 每项需求都必须至少有一个场景
  • 包含正常路径和边缘情况的场景
  • 场景必须可测试——每个场景都应能据此编写自动化测试
  • 规范中不要包含实现细节——规范描述的是做什么,而不是怎么做
  • 应用 openspec/config.yaml 中的任何 rules.specs
  • 篇幅限制:规范工件必须少于 650 个单词。优先使用需求表格,而不是叙述性描述。每个场景最多 3–5 行。
  • 按 skills/_shared/sdd-phase-common.md 中的 Section D 返回封装内容。

RFC 2119 关键词速查

关键词含义
MUST / SHALL绝对要求
MUST NOT / SHALL NOT绝对禁止
SHOULD建议遵循,但在有理由的情况下可能存在例外
SHOULD NOT不建议,但在有理由的情况下可能可以接受
MAY可选

评论

支持 Markdown