sdd-workflow 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +226 -0
  2. package/bin/sdd-init.js +59 -0
  3. package/package.json +30 -0
  4. package/src/installer.js +558 -0
  5. package/templates/skills/sdd-constitution/SKILL.md +128 -0
  6. package/templates/skills/sdd-implement/SKILL.md +153 -0
  7. package/templates/skills/sdd-init/SKILL.md +302 -0
  8. package/templates/skills/sdd-plan/SKILL.md +226 -0
  9. package/templates/skills/sdd-review/SKILL.md +498 -0
  10. package/templates/skills/sdd-run/SKILL.md +439 -0
  11. package/templates/skills/sdd-specify/SKILL.md +280 -0
  12. package/templates/skills/sdd-split/SKILL.md +432 -0
  13. package/templates/skills/sdd-tasks/SKILL.md +199 -0
  14. package/templates/skills/sdd-testcases/SKILL.md +235 -0
  15. package/templates/specify/README.md +179 -0
  16. package/templates/specify/scripts/create-feature.sh +144 -0
  17. package/templates/specify/templates/constitution-template.md +74 -0
  18. package/templates/specify/templates/plan-modular-template/README.md +98 -0
  19. package/templates/specify/templates/plan-modular-template/architecture.md +127 -0
  20. package/templates/specify/templates/plan-modular-template/backend-api.md +191 -0
  21. package/templates/specify/templates/plan-modular-template/backend-impl.md +134 -0
  22. package/templates/specify/templates/plan-modular-template/changelog.md +34 -0
  23. package/templates/specify/templates/plan-modular-template/data-model.md +130 -0
  24. package/templates/specify/templates/plan-modular-template/frontend-api.md +126 -0
  25. package/templates/specify/templates/plan-modular-template/frontend-impl.md +108 -0
  26. package/templates/specify/templates/plan-modular-template/performance.md +112 -0
  27. package/templates/specify/templates/plan-modular-template/security.md +85 -0
  28. package/templates/specify/templates/plan-template.md +190 -0
  29. package/templates/specify/templates/requirements/metadata-template.json +12 -0
  30. package/templates/specify/templates/requirements/original-template.md +26 -0
  31. package/templates/specify/templates/spec-modular-template/README.md +69 -0
  32. package/templates/specify/templates/spec-modular-template/acceptance-criteria.md +49 -0
  33. package/templates/specify/templates/spec-modular-template/changelog.md +27 -0
  34. package/templates/specify/templates/spec-modular-template/constraints.md +125 -0
  35. package/templates/specify/templates/spec-modular-template/overview.md +60 -0
  36. package/templates/specify/templates/spec-modular-template/user-stories.md +59 -0
  37. package/templates/specify/templates/spec-template.md +214 -0
  38. package/templates/specify/templates/tasks-modular-template/README.md +79 -0
  39. package/templates/specify/templates/tasks-template.md +232 -0
  40. package/templates/specify/templates/testcases-template.md +434 -0
  41. package/templates/teams/sdd-development-team.md +318 -0
@@ -0,0 +1,153 @@
1
+ ---
2
+ name: sdd-implement
3
+ description: 执行SDD任务分解中的开发任务 - 遵循红-绿-重构流程,测试优先实现
4
+ invocable: true
5
+ ---
6
+
7
+ # SDD Implement - 任务执行器
8
+
9
+ 按顺序执行SDD任务分解中的开发任务,遵循测试优先的红-绿-重构流程。
10
+
11
+ ## 核心定位
12
+
13
+ > Implement 是 SDD 流程的最终执行阶段,可以包含完整的代码、SQL、文件操作。
14
+ > 实现过程中发现的上游问题,**必须按自循环机制反向纠正**,不允许带病绕过。
15
+
16
+ ## 前置条件
17
+
18
+ - spec.md 或 spec/README.md ✓
19
+ - testcases.md ✓
20
+ - plan.md 或 plan/README.md ✓
21
+ - tasks.md 或 tasks/README.md ✓
22
+
23
+ ## 执行流程
24
+
25
+ ### 1. 加载任务文档(渐进式)
26
+
27
+ 检测 tasks 文档结构:
28
+ - **模块化结构** (`tasks/README.md` 存在): 先加载 README 获取概览,按需加载单个 Phase 文件
29
+ - **单文件结构** (`tasks.md`): 直接加载完整文件
30
+
31
+ ### 2. 展示任务概览,让用户选择执行哪个 Phase
32
+
33
+ 展示各 Phase 状态(任务数/工时/完成情况),用户选择后只加载对应 Phase 文档。
34
+
35
+ ### 3. 执行模式
36
+
37
+ - **交互式(默认)**: 逐任务执行,每完成一个等待确认
38
+ - **自动**: 按顺序执行,遇错暂停
39
+ - **指定任务**: 只执行用户指定的任务
40
+
41
+ ### 4. 每个任务的执行步骤(红-绿-重构)
42
+
43
+ 1. **确认测试用例映射** - 如 Task 1.4 → UT-001~015
44
+ 2. **🔴 红阶段** - 根据testcases.md写测试,运行确认失败
45
+ 3. **🟢 绿阶段** - 写最小实现使测试通过
46
+ 4. **🔵 重构阶段** - 在测试通过前提下优化代码
47
+ 5. **反馈扫描** - 检查是否触发自循环反馈(见第5节)
48
+ 6. **更新 tasks.md** - 标记状态,记录实现差异
49
+
50
+ ### 5. 自循环反馈(核心!)
51
+
52
+ 实现阶段是反馈最密集的阶段。**每个任务完成后,必须进行反馈扫描:**
53
+
54
+ #### 5.1 反馈触发条件
55
+
56
+ | 发现的问题 | 反馈目标 | 级别 | 处理方式 |
57
+ |-----------|---------|------|---------|
58
+ | API 路径/参数需要调整 | plan.md | L1 | 直接修改 plan + tasks,记录 CR |
59
+ | 可复用现有模块,无需新建 | plan.md | L1 | 简化 plan,更新 tasks,记录 CR |
60
+ | 实现逻辑与 plan 设计不一致 | plan.md | L2 | 暂停,向用户说明差异,确认后修改 |
61
+ | 边界条件 plan 未覆盖 | plan.md + testcases.md | L2 | 补充设计 + 补充测试用例 |
62
+ | bug 暴露设计缺陷 | plan.md | L2 | 分析根因,修正设计,记录 CR |
63
+ | bug 暴露需求逻辑漏洞 | spec.md | L2 | 暂停,向用户说明,确认后修正 spec + 级联更新 |
64
+ | 性能问题需架构调整 | plan.md | L3 | 暂停全部,输出影响分析,等用户决策 |
65
+ | 发现需求方向性错误 | spec.md | L3 | 暂停全部,输出影响分析,等用户决策 |
66
+
67
+ #### 5.2 反馈执行流程
68
+
69
+ ```
70
+ 发现问题时:
71
+ 1. 创建 CR 记录(在当前文档的变更记录中)
72
+ 2. 按 L1/L2/L3 级别处理
73
+ L1: 直接修正源头 → 级联更新下游 → 继续执行
74
+ L2: 暂停 → 向用户说明 → 用户确认 → 修正源头 → 级联更新 → 继续执行
75
+ L3: 暂停全部 → 输出影响报告 → 等用户决策
76
+ 3. 修正完成后,从修正点重新验证到当前阶段
77
+ ```
78
+
79
+ #### 5.3 级联更新检查清单
80
+
81
+ 修正源头文档后,检查下游是否需要同步更新:
82
+
83
+ - [ ] spec 修正 → testcases 是否需要补充?
84
+ - [ ] spec 修正 → plan 的设计是否仍然适用?
85
+ - [ ] plan 修正 → tasks 的任务分解是否需要调整?
86
+ - [ ] plan 修正 → 已完成的代码是否需要返工?
87
+ - [ ] testcases 修正 → plan 的测试覆盖是否完整?
88
+
89
+ ### 6. 阶段合约自检(SDD v2 新增)
90
+
91
+ > **受 Harness Sprint Contract 启发**: 每个 Phase 完成后,对照 plan.md 中的"阶段合约"进行自检。
92
+
93
+ 每个 Phase 完成后(在检查点之前),执行合约自检:
94
+
95
+ #### 6.1 自检流程
96
+
97
+ 1. 读取 plan.md 中当前 Phase 的阶段合约
98
+ 2. 逐项检查交付物清单(是否都已实现)
99
+ 3. 逐项检查验证标准(是否都满足)
100
+ 4. 检查质量阈值(是否都达到)
101
+
102
+ #### 6.2 自检输出
103
+
104
+ ```
105
+ 📋 Phase {N} 合约自检
106
+
107
+ 交付物清单:
108
+ ✅ 数据模型层:对应实体和服务
109
+ ✅ 数据访问层:仓储 + 映射
110
+ ❌ API层:控制器(未实现分页参数)
111
+
112
+ 验证标准:
113
+ ✅ #1 创建 API 返回正确数据格式
114
+ ✅ #2 查询支持筛选条件
115
+ ❌ #3 查询支持分页(缺少分页参数)
116
+
117
+ 质量阈值:
118
+ ✅ 所有 API 端点可访问
119
+ ✅ 无 N+1 查询
120
+ ✅ 架构分层正确
121
+
122
+ 自检结论: FAIL - 2 项未通过,需修复后重新自检
123
+ ```
124
+
125
+ #### 6.3 自检规则
126
+
127
+ - 自检全部 PASS → 进入步骤 7(检查点)
128
+ - 自检存在 FAIL → 修复问题 → 重新自检(最多 3 轮)
129
+ - 超过 3 轮仍未通过 → 暂停,向用户报告阻塞项
130
+
131
+ ### 7. 检查点与评审触发(SDD v2 增强)
132
+
133
+ - **Checkpoint 1**: 后端完成 + 合约自检通过 + API可访问
134
+ - → **建议运行 `/sdd-review {feature_id}` 进行后端独立评审**
135
+ - **Checkpoint 2**: 前端完成 + 合约自检通过 + 页面可访问
136
+ - → **建议运行 `/sdd-review {feature_id}` 进行前端独立评审**
137
+ - **Checkpoint 3**: 全部测试通过 + Code Review通过
138
+ - → **建议运行 `/sdd-review {feature_id}` 进行最终评审**
139
+ - **最终检查**: 检查所有 CR 记录是否已闭环,L2+ 的反馈是否已沉淀到宪法
140
+
141
+ > **评审是可选的但强烈建议**。小功能可以跳过评审直接提交,大功能务必经过评审。
142
+
143
+ ### 7. 完成后生成执行报告
144
+
145
+ 汇总:任务统计、变更文件列表、CR 反馈统计、待处理事项、下一步操作。
146
+
147
+ ## 注意事项
148
+
149
+ - 不跳过单元测试,不忽略 lint/checkstyle 警告
150
+ - 注意 N+1 查询问题,注意 SQL 注入和 XSS 防护
151
+ - API 变更时同步更新文档
152
+ - **L2+ 级别的反馈经验,必须提炼为经验教训追加到宪法**
153
+ - 文件路径使用项目实际目录结构(参考 CLAUDE.md)
@@ -0,0 +1,302 @@
1
+ ---
2
+ name: sdd-init
3
+ description: 初始化 SDD 工作流 - 分析项目结构,生成项目宪法,适配 SDD 配置
4
+ invocable: true
5
+ ---
6
+
7
+ # SDD Init - 项目初始化
8
+
9
+ > 首次在项目中使用 SDD 时运行此命令,自动分析项目并生成项目宪法。
10
+
11
+ ## 核心定位
12
+
13
+ > SDD Init 是 SDD 工作流的入口点。它分析项目结构、技术栈、架构模式,
14
+ > 生成一份项目宪法(constitution.md),作为后续所有 SDD 命令的上下文基础。
15
+
16
+ ## 执行步骤
17
+
18
+ ### 1. 项目结构探测
19
+
20
+ #### 1.1 探测项目类型
21
+
22
+ 扫描项目根目录,识别项目类型:
23
+
24
+ | 文件标识 | 项目类型 |
25
+ |---------|---------|
26
+ | `package.json` | Node.js / 前端 |
27
+ | `pom.xml` | Java Maven |
28
+ | `build.gradle` / `build.gradle.kts` | Java Gradle / Kotlin |
29
+ | `go.mod` | Go |
30
+ | `Cargo.toml` | Rust |
31
+ | `requirements.txt` / `pyproject.toml` | Python |
32
+ | `.csproj` / `.sln` | .NET |
33
+ | 以上都有 | 全栈 / Monorepo |
34
+
35
+ #### 1.2 探测技术栈
36
+
37
+ **前端技术栈**(如果有 package.json):
38
+ - 框架:React / Vue / Angular / Svelte / Next.js / Nuxt
39
+ - UI 库:Ant Design / Material UI / Element UI / Tailwind
40
+ - 状态管理:Redux / MobX / Vuex / Pinia / Zustand
41
+ - 构建工具:Webpack / Vite / Rspack / Rollup
42
+
43
+ **后端技术栈**(如果有 pom.xml / build.gradle 等):
44
+ - 语言:Java / Kotlin / Go / Python / Rust / C#
45
+ - 框架:Spring Boot / Express / FastAPI / Gin / Actix
46
+ - ORM:MyBatis / JPA / Hibernate / Sequelize / Prisma
47
+ - 数据库:PostgreSQL / MySQL / MongoDB / SQLite
48
+
49
+ #### 1.3 探测架构模式
50
+
51
+ 扫描目录结构推断架构模式:
52
+
53
+ | 目录特征 | 架构模式 |
54
+ |---------|---------|
55
+ | `domain/`, `application/`, `infrastructure/` | DDD 分层 |
56
+ | `controllers/`, `services/`, `models/` | MVC |
57
+ | `src/modules/`, `src/features/` | 模块化/特性驱动 |
58
+ | `cmd/`, `internal/` | Go 标准布局 |
59
+ | `pages/`, `components/`, `stores/` | 前端 SPA |
60
+ | 无明显分层 | 简单/待定 |
61
+
62
+ #### 1.4 探测测试框架
63
+
64
+ | 文件特征 | 测试框架 |
65
+ |---------|---------|
66
+ | `jest.config.*`, `*.test.js` | Jest |
67
+ | `vitest.config.*` | Vitest |
68
+ | `pytest.ini`, `conftest.py` | pytest |
69
+ | `*_test.go` | Go testing |
70
+ | `*Test.java`, `*Tests.java` | JUnit |
71
+ | `playwright.config.*` | Playwright (E2E) |
72
+ | `cypress.config.*` | Cypress (E2E) |
73
+
74
+ ### 2. 展示探测结果并确认
75
+
76
+ 向用户展示探测到的一切信息,询问是否需要修正:
77
+
78
+ ```
79
+ ━━━ 项目探测结果 ━━━
80
+
81
+ 📁 项目类型: 全栈 (前端 + 后端)
82
+
83
+ 🔧 前端技术栈:
84
+ - 框架: React 17
85
+ - UI 库: Ant Design 4
86
+ - 状态管理: MobX 5
87
+ - 构建工具: Webpack 5
88
+
89
+ 🔧 后端技术栈:
90
+ - 语言: Java 8
91
+ - 框架: Spring Boot 2.1.7
92
+ - ORM: MyBatis
93
+ - 数据库: PostgreSQL
94
+
95
+ 🏗️ 架构模式: DDD 分层 (后端) + SPA (前端)
96
+
97
+ 🧪 测试框架: Jest (前端) + JUnit (后端)
98
+
99
+ ❓ 以上信息是否正确?如有需要修正的地方请告诉我。
100
+ ```
101
+
102
+ ### 3. 交互式补充信息
103
+
104
+ 基于探测结果,补充以下信息(只问探测不到的):
105
+
106
+ 1. **API 响应格式**:`{ status: "0", message: "", data: {} }` 或其他格式
107
+ 2. **是否使用知识库 MCP**(如 Confluence):是/否
108
+ 3. **开发原则补充**:是否有团队特有的开发规范
109
+ 4. **项目特殊约束**:如 Java 版本限制、浏览器兼容性等
110
+
111
+ ### 4. 生成项目宪法
112
+
113
+ 基于确认的探测结果和补充信息,生成 `.specify/memory/constitution.md`。
114
+
115
+ 使用模板:`.specify/templates/constitution-template.md`
116
+
117
+ 如果模板不存在,则使用以下内置模板结构。
118
+
119
+ #### 自动填充的变量:
120
+
121
+ - `{frontend_stack}`: 前端技术栈详情
122
+ - `{backend_stack}`: 后端技术栈详情
123
+ - `{database}`: 数据库类型
124
+ - `{architecture_pattern}`: 架构模式描述
125
+ - `{test_frameworks}`: 测试框架列表
126
+ - `{api_response_format}`: API 响应格式
127
+
128
+ #### 必须包含的章节:
129
+
130
+ 1. **绝对铁律** - 数据字段不可凭猜测、禁止 N+1 查询等通用铁律
131
+ 2. **开发原则** - 简单性原则、代码质量、测试标准
132
+ 3. **架构约束** - 基于探测到的架构模式
133
+ 4. **SDD 文档职责边界** - spec/plan/tasks 的 What/How/When 分工
134
+ 5. **SDD 阶段合约与评审标准** - 评审维度、权重、硬阈值
135
+ 6. **经验教训** - 空白模板,供后续积累
136
+
137
+ #### 宪法内容模板
138
+
139
+ 当 `.specify/templates/constitution-template.md` 不存在时,使用以下结构生成:
140
+
141
+ ```markdown
142
+ # 项目宪法 (Constitution)
143
+
144
+ > 自动生成于 {date},由 SDD Init 分析项目结构后创建。
145
+ > 可随时通过 /sdd-constitution 命令更新。
146
+
147
+ ---
148
+
149
+ ## 1. 技术栈
150
+
151
+ {frontend_stack_section}
152
+
153
+ {backend_stack_section}
154
+
155
+ ### 数据库
156
+ - 类型: {database}
157
+
158
+ ### 测试框架
159
+ - {test_frameworks}
160
+
161
+ ---
162
+
163
+ ## 2. 绝对铁律
164
+
165
+ > 违反以下任何规则等同于生产事故。
166
+
167
+ ### 2.1 数据完整性
168
+ - **数据字段不可凭猜测**:所有字段名、类型、约束必须从数据库或 API 文档确认
169
+ - **禁止假设数据格式**:日期格式、枚举值、ID 规则必须验证
170
+ - **修改前先读取**:任何修改操作前,先读取当前数据状态
171
+
172
+ ### 2.2 查询性能
173
+ - **禁止 N+1 查询**:循环中不可有数据库查询,必须使用批量查询
174
+ - **新增查询必须有索引支持**:WHERE 条件字段必须有对应索引
175
+ - **分页必须带 LIMIT**:列表查询必须有上限保护
176
+
177
+ ### 2.3 安全底线
178
+ - **SQL 参数化**:禁止字符串拼接 SQL
179
+ - **权限校验**:所有 API 入口必须有权限验证
180
+ - **敏感数据**:密码、密钥等不可出现在日志或响应中
181
+
182
+ ---
183
+
184
+ ## 3. 开发原则
185
+
186
+ ### 3.1 简单性原则(Simplicity Principle)
187
+ 1. **复用优先**:新增方法前先查找现有方法是否可复用
188
+ 2. **最小改动**:只改必须改的,不做"顺便"的重构
189
+ 3. **渐进式**:优先选择最简单的实现路径
190
+
191
+ ### 3.2 代码质量标准
192
+ - 函数长度不超过 50 行
193
+ - 嵌套不超过 3 层
194
+ - 新增公共方法必须有注释说明用途
195
+ - 遵循项目已有的命名风格
196
+
197
+ ### 3.3 测试标准
198
+ - 核心逻辑必须有测试覆盖
199
+ - 测试用例在实现之前编写(TDD / 红-绿-重构)
200
+ - 边界条件和异常路径必须测试
201
+
202
+ ---
203
+
204
+ ## 4. 架构约束
205
+
206
+ {architecture_constraint_section}
207
+
208
+ ---
209
+
210
+ ## 5. API 规范
211
+
212
+ ### 响应格式
213
+ {api_response_format}
214
+
215
+ ### 错误处理
216
+ - 所有异常必须有对应的错误码和用户友好提示
217
+ - 未知异常统一返回 500,不暴露内部细节
218
+
219
+ ---
220
+
221
+ ## 6. SDD 文档职责边界
222
+
223
+ | 阶段 | 文档 | 回答的问题 | 不包含 |
224
+ |------|------|-----------|--------|
225
+ | Specify | spec.md | What — 做什么?为什么? | 技术实现细节 |
226
+ | Test Cases | testcases.md | How to verify — 怎么验证? | 实现代码 |
227
+ | Plan | plan.md | How — 怎么实现?技术方案 | 具体代码 |
228
+ | Tasks | tasks.md | When — 什么时候做?任务拆分 | 实现细节 |
229
+
230
+ ---
231
+
232
+ ## 7. SDD 阶段合约与评审标准
233
+
234
+ ### 评审维度与权重
235
+
236
+ | 维度 | 权重 | 硬阈值 |
237
+ |------|------|--------|
238
+ | 功能完整性 | 30% | 所有 spec 定义的场景已覆盖 |
239
+ | 代码质量 | 20% | 无 lint 错误,无重复代码 |
240
+ | 测试覆盖 | 20% | 核心逻辑测试通过率 100% |
241
+ | 架构合规 | 15% | 符合架构约束,分层正确 |
242
+ | 性能安全 | 15% | 无 N+1 查询,无安全漏洞 |
243
+
244
+ ### 评审流程
245
+ 1. 自动检查:lint、测试、类型检查
246
+ 2. AI 审查:对照 spec + plan 合约逐项验证
247
+ 3. 评分:满分 100,低于 70 分不通过
248
+ 4. 不通过时:自动修复 → 重新评审(最多 3 轮)
249
+
250
+ ---
251
+
252
+ ## 8. 经验教训
253
+
254
+ > 开发过程中积累的经验,持续更新。
255
+
256
+ <!-- 在此添加项目中遇到的实际问题和解决方案 -->
257
+ ```
258
+
259
+ ### 5. 创建目录结构
260
+
261
+ 确保以下目录存在:
262
+
263
+ ```
264
+ .specify/
265
+ ├── memory/
266
+ │ └── constitution.md ← 刚生成的宪法
267
+ ├── specs/ ← 功能规格目录
268
+ ├── templates/ ← 模板文件(已安装)
269
+ └── scripts/ ← 工具脚本(已安装)
270
+ ```
271
+
272
+ 使用 bash 命令创建不存在的目录:
273
+ ```bash
274
+ mkdir -p .specify/memory .specify/specs
275
+ ```
276
+
277
+ ### 6. 输出初始化报告
278
+
279
+ ```
280
+ ━━━ SDD 初始化完成 ━━━
281
+
282
+ ✅ 项目宪法已生成: .specify/memory/constitution.md
283
+
284
+ 📋 项目配置摘要:
285
+ - 项目类型: {type}
286
+ - 前端: {frontend_stack}
287
+ - 后端: {backend_stack}
288
+ - 数据库: {database}
289
+ - 架构: {architecture}
290
+ - 测试: {test_frameworks}
291
+
292
+ 🚀 开始使用 SDD:
293
+ /sdd-specify <功能名称> 创建功能规格
294
+ /sdd-run <id> <功能描述> 全自动流水线(推荐)
295
+ ```
296
+
297
+ ## 注意事项
298
+
299
+ 1. **不修改 CLAUDE.md**:只输出建议追加的内容,由用户决定是否添加
300
+ 2. **幂等性**:重复运行时检测已有宪法,询问是更新还是重新生成
301
+ 3. **渐进式**:探测不到的信息不强制要求,可后续通过 `/sdd-constitution` 补充
302
+ 4. **最小化提问**:只问真正探测不到的关键信息,不超过 5 个问题
@@ -0,0 +1,226 @@
1
+ ---
2
+ name: sdd-plan
3
+ description: 创建技术实现计划(Implementation Plan)- 基于测试用例设计技术方案、数据模型、API设计
4
+ invocable: true
5
+ ---
6
+
7
+ # SDD Plan - 技术计划生成器
8
+
9
+ 基于测试用例设计技术实现计划,确保实现有据可依。
10
+
11
+ ## ⚠️ 核心定位:Plan 是 Spec 的技术承接
12
+
13
+ > **Plan 描述 How(怎么做)**,承接 Spec 中的 What(做什么)。
14
+ > 所有 Spec 中故意省略的技术细节,都应该在 Plan 中详细展开。
15
+
16
+ ### Plan 中应该包含的内容(Spec 中不允许出现的)
17
+ - **具体文件路径**:需要新增/修改的文件清单
18
+ - **SQL / DDL**:数据库表设计、查询语句
19
+ - **代码片段**:关键实现的代码骨架
20
+ - **类名、方法名**:具体的命名设计
21
+ - **架构图**:带代码级细节的架构图
22
+ - **API 详细设计**:完整的 URL path、参数、响应格式
23
+ - **调用链路**:完整的模块间调用链路
24
+ - **修改清单**:所有需要变更的文件及变更类型
25
+
26
+ ### SDD 文档职责分工
27
+
28
+ ```
29
+ spec.md → What(做什么):业务需求、用户故事、验收标准
30
+ plan.md → How(怎么做):技术方案、架构设计、代码设计 ← 你在这里
31
+ tasks.md → When(何时做):任务分解、执行顺序、进度跟踪
32
+ ```
33
+
34
+ ## 核心理念
35
+
36
+ > **测试驱动设计**
37
+
38
+ 技术计划必须能够:
39
+ 1. 通过所有已定义的测试用例
40
+ 2. 覆盖测试用例中的边界条件
41
+ 3. 满足测试用例中的验收标准
42
+
43
+ ## 前置条件
44
+ - 必须已有功能规格文档: `.specify/specs/{feature_id}/spec.md`
45
+ - **必须已有测试用例设计: `.specify/specs/{feature_id}/testcases.md`** ← 测试优先
46
+ - 推荐已有项目宪法: `.specify/memory/constitution.md`
47
+
48
+ ## 执行步骤
49
+
50
+ ### 1. 读取规格文档
51
+ 读取关联的功能规格: `.specify/specs/{feature_id}/spec.md`
52
+
53
+ ### 2. 读取测试用例(重要!)
54
+ 读取测试用例设计: `.specify/specs/{feature_id}/testcases.md`
55
+
56
+ **重点关注**:
57
+ - 单元测试场景 → 驱动业务逻辑层设计
58
+ - 集成测试场景 → 驱动数据访问层设计
59
+ - API测试场景 → 驱动接口设计
60
+ - 前端测试场景 → 驱动组件设计
61
+ - 边界条件 → 驱动异常处理设计
62
+
63
+ ### 3. 读取项目上下文
64
+ - `.specify/memory/constitution.md` - 技术栈约束和架构模式
65
+ - `CLAUDE.md` - 项目配置和目录结构
66
+ - 相关模块的现有代码
67
+
68
+ ### 3. 技术调研(如需要)
69
+ - 查找项目中类似功能的实现
70
+ - 分析现有API模式
71
+ - 检查数据库表结构
72
+
73
+ ### 4. 生成技术计划
74
+
75
+ 基于模板 `.specify/templates/plan-template.md` 生成文档,包括:
76
+
77
+ #### 核心内容:
78
+
79
+ ##### 4.1 架构设计
80
+ - 整体架构图(ASCII或描述)
81
+ - 模块划分
82
+ - 技术栈确认(从 constitution.md 读取)
83
+
84
+ ##### 4.2 数据模型
85
+ - 数据库表设计(DDL)
86
+ - 实体类设计
87
+ - 数据流向
88
+
89
+ ##### 4.3 API设计
90
+ - API列表
91
+ - 请求/响应格式
92
+ - API契约文件
93
+
94
+ ##### 4.4 前端实现
95
+ - 页面结构
96
+ - 组件设计
97
+ - 状态管理方案(参考 constitution.md)
98
+ - 路由配置
99
+
100
+ ##### 4.5 后端实现
101
+ - 架构分层设计(参考 constitution.md 中的架构模式)
102
+ - 核心类设计
103
+ - 业务流程
104
+
105
+ ##### 4.6 阶段合约(SDD v2 新增)
106
+
107
+ > **受 Harness Sprint Contract 启发**: 在写代码之前,为每个 Phase 定义明确的"完成"标准。
108
+ > 合约来源于 spec 的完成定义和 testcases 的行为验证,将两者对接为可检查的交付物清单。
109
+
110
+ 为每个实现 Phase 生成阶段合约:
111
+
112
+ ```markdown
113
+ ### Phase 1 合约(后端)
114
+
115
+ #### 交付物清单
116
+ - [ ] 数据模型层:对应实体和服务
117
+ - [ ] 数据访问层:仓储/Repository + 映射
118
+ - [ ] 应用/服务层:业务逻辑
119
+ - [ ] API层:控制器/路由
120
+ - [ ] 数据库变更:新增/修改的表
121
+
122
+ #### 验证标准
123
+ | # | 验证项 | 验证方式 | 关联 |
124
+ |---|--------|----------|------|
125
+ | 1 | 创建 API 返回正确数据格式 | API调用验证 | spec Group A 完成定义 #1 |
126
+ | 2 | 查询支持分页和筛选 | 参数测试 | spec Group A 完成定义 #2, #3 |
127
+ | 3 | 数据访问层无 N+1 查询 | 代码审查 | constitution 相关章节 |
128
+ | 4 | 架构分层正确 | 代码审查 | constitution 架构约束 |
129
+
130
+ #### 质量阈值
131
+ - 所有 API 端点可访问且返回项目约定的响应格式
132
+ - 无 N+1 查询
133
+ - 架构分层正确(参考 constitution.md 中的架构约束)
134
+ ```
135
+
136
+ **合约设计原则**:
137
+ - 交付物清单:列出该 Phase 应产出的所有代码文件/数据库变更
138
+ - 验证标准:每项关联到 spec 的完成定义和/或 constitution 的约束
139
+ - 质量阈值:该 Phase 的最低通过标准,评审时对照检查
140
+ - 合约是 plan.md 的一部分,不是独立文件
141
+ - 合约条目数量:每个 Phase 5-15 项验证标准
142
+
143
+ ##### 4.7 其他
144
+ - 安全设计
145
+ - 性能优化
146
+ - 测试计划
147
+ - 部署计划
148
+
149
+ ### 5. 生成API契约(可选)
150
+ 如果API较复杂,生成OpenAPI格式的契约文件:
151
+ ```json
152
+ // .specify/specs/{feature_id}/contracts/api-spec.json
153
+ {
154
+ "openapi": "3.0.0",
155
+ "info": { ... },
156
+ "paths": { ... }
157
+ }
158
+ ```
159
+
160
+ ### 6. 保存文档
161
+ 保存到: `.specify/specs/{feature_id}/plan.md`
162
+
163
+ ### 7. 检测文档大小
164
+
165
+ plan.md 超过 1000 行时,自动执行 `/sdd-split plan {feature_id} --auto` 拆分(在 sdd-run 中)或提示用户使用 `/sdd-split plan {feature_id}`(手动模式下)。
166
+
167
+ ### 8. 交互确认
168
+ 向用户展示技术计划要点,询问是否需要调整。
169
+
170
+ ## 输出示例
171
+
172
+ ```
173
+ ✅ 技术计划已生成: .specify/specs/001-user-authentication/plan.md
174
+
175
+ 📋 技术方案要点:
176
+
177
+ 1. 架构设计
178
+ - 前端: 项目前端技术栈 + 状态管理方案(参考 constitution.md)
179
+ - 后端: 项目架构模式(参考 constitution.md)
180
+ - 数据库: 使用项目数据库
181
+
182
+ 2. 数据模型
183
+ - 无新增表,使用现有用户表
184
+ - 新增Token缓存表
185
+
186
+ 3. API设计
187
+ - POST /api/auth/login - 登录
188
+ - POST /api/auth/logout - 登出
189
+ - POST /api/auth/refresh - 刷新Token
190
+
191
+ 4. 前端实现
192
+ - 页面: 登录页面组件
193
+ - 状态管理: 认证状态
194
+ - API: 认证接口调用
195
+
196
+ 5. 后端实现
197
+ - 核心业务逻辑: 认证服务
198
+ - API层: 认证路由/控制器
199
+ - 数据访问: 认证数据仓储
200
+
201
+ 请检查技术方案,如需调整请告诉我。
202
+ ```
203
+
204
+ ## 分层模板参考
205
+
206
+ 架构分层模板见 CLAUDE.md 和 constitution.md 中的架构约束。不同架构模式(DDD、传统三层、Clean Architecture 等)对应不同的分层方式。
207
+
208
+ ## 反馈触发点
209
+
210
+ 设计技术方案时,以下情况**必须触发向上反馈**:
211
+
212
+ 1. **需求技术上不可行** → 业务规则与现有架构冲突,反馈回 spec 重新定义
213
+ 2. **需求遗漏关联模块** → 发现依赖未在 spec 中说明,补充到 spec
214
+ 3. **测试用例无法通过当前设计覆盖** → 反馈回 testcases 确认是否遗漏场景
215
+ 4. **发现可复用现有模块,无需新建** → 简化 plan 并记录 CR
216
+
217
+ 反馈流程:在 plan.md 中创建 CR 记录 → 修正源头文档 → 同步更新 plan.md → 继续设计
218
+
219
+ ## 注意事项
220
+
221
+ 1. **遵循宪法**: 技术方案必须符合项目宪法的约束
222
+ 2. **架构一致**: 遵循项目既定的架构模式(参考 constitution.md)
223
+ 3. **数据库规范**: 注意使用项目正确的数据库 schema 和命名规范
224
+ 4. **API规范**: 遵循项目既定的 API 设计风格和响应格式
225
+ 5. **复用优先**: 优先考虑复用现有组件和服务
226
+ 6. **性能考量**: 设计阶段考虑索引、缓存等优化