@deepstorm/cli 0.6.2 → 0.6.5

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.
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -178,6 +178,7 @@
178
178
  {
179
179
  "value": "primeng",
180
180
  "label": "PrimeNG",
181
+ "dependsOn": "angular",
181
182
  "template": {
182
183
  "styleRef": "→ 参考 [PrimeNG 规范](primeng.md)"
183
184
  },
@@ -191,6 +192,7 @@
191
192
  {
192
193
  "value": "antd",
193
194
  "label": "Ant Design (React)",
195
+ "dependsOn": "react",
194
196
  "template": {
195
197
  "styleRef": "→ 参考 [Ant Design 规范](antd.md)"
196
198
  },
@@ -204,6 +206,7 @@
204
206
  {
205
207
  "value": "antd-vue",
206
208
  "label": "Ant Design Vue",
209
+ "dependsOn": "vue",
207
210
  "template": {
208
211
  "styleRef": "→ 参考 [Ant Design Vue 规范](antd-vue.md)"
209
212
  },
@@ -76,30 +76,7 @@ flowchart TD
76
76
 
77
77
  ### 运行时 MCP 服务发现
78
78
 
79
- 进入 Stage 1 前,AI SHALL 读取 `.claude/settings.json` → `deepstorm.mcpCapabilities`,确定当前可用的 provider
80
-
81
- 能力映射结构说明:
82
-
83
- ```
84
- {
85
- "issue_tracker": {
86
- "available": true/false, // 是否有可用的 Issue 跟踪服务
87
- "providers": [ // 可用的 MCP 服务列表
88
- { "id": "jira", "label": "Jira" }
89
- ]
90
- },
91
- "knowledge_base": {
92
- "available": true/false, // 是否有可用的知识库服务
93
- "providers": [...]
94
- },
95
- "design_tools": {
96
- "available": true/false, // 是否有可用的设计工具服务
97
- "providers": [...]
98
- }
99
- }
100
- ```
101
-
102
- 每个 provider 的 MCP 操作指南按读写方向拆分,位于 `.claude/skills/deepstorm-mcp-{service}-{op}/SKILL.md`。AI 根据当前步骤所需的操作类型读取对应指南(读取 Issue → `deepstorm-mcp-jira-read`、读取文档 → `deepstorm-mcp-feishu-wiki-read`、读取设计稿 → `deepstorm-mcp-figma-read`)。AI 调用前可读取该文件了解工具使用方式。
79
+ 进入 Stage 1 前,AI SHALL 读取 `.claude/settings.json` → `deepstorm.mcpCapabilities`,确定当前可用的 provider。每个 provider 的 MCP 操作指南按读写方向拆分,位于 `.claude/skills/deepstorm-mcp-{service}-{op}/SKILL.md`。AI 根据当前步骤所需的操作类型读取对应指南(读取 Issue → `deepstorm-mcp-jira-read`、读取文档 → `deepstorm-mcp-feishu-wiki-read`、读取设计稿 → `deepstorm-mcp-figma-read`)。AI 调用前可读取该文件了解工具使用方式。
103
80
 
104
81
  如果 `deepstorm.mcpCapabilities` 读取失败(文件不存在/格式错误),AI SHALL 降级为"无 MCP 服务安装",按手动模式运行各子步骤。
105
82
 
@@ -184,6 +161,17 @@ PRD 上下文获取的详细操作方式见 `.claude/skills/deepstorm-mcp-feishu
184
161
 
185
162
  **降级处理:** `design_tools.available === false` 时,告知用户"未检测到设计工具服务,将不生成设计稿摘要"。
186
163
 
164
+ #### 1.6 更新上下文地图
165
+
166
+ 完成需求获取(Issue 详情、PRD、设计稿)后,AI SHALL 对比当前 `.deepstorm/context.md` 与阶段一采集的项目信息,仅在存在实质性变化时执行写入:
167
+
168
+ - **技术栈更新**:确认 Issue 中提到的框架、工具、版本是否与 context.md 一致
169
+ - **关键模块更新**:如果 Issue 涉及新模块或模块边界变化,更新模块表格
170
+ - **历史踩坑**:如果发现新的重要故障或架构决策,记录概要 + 引用路径
171
+ - **外部引用**:记录发现的外部 API 文档、设计系统或业务规范
172
+
173
+ 输出更新摘要供用户知晓。如无实质变化,跳过更新,避免无意义的 git 变动。
174
+
187
175
  ### 🅰️ Path A — 阶段二:创建分支
188
176
 
189
177
  分支命名流程:
@@ -254,6 +242,17 @@ _bmad-output/brainstorming/brainstorming-session-{date}-{seq}.md
254
242
 
255
243
  > **注意**:Path B 不在此处创建 git 分支。分支创建推迟到 superpowers 门禁通过后、TDD 实现开始前(见阶段四入口)。
256
244
 
245
+ #### B1.5 更新上下文地图
246
+
247
+ 产出 brainstorming 文件后,AI SHALL 检查 `.deepstorm/context.md` 是否存在,如不存在则创建模板:
248
+
249
+ ```bash
250
+ # 如果 context.md 不存在,创建模板
251
+ deepstorm init --name "$(basename $(pwd))" 2>/dev/null || true
252
+ ```
253
+
254
+ 如果 context.md 已存在,对比当前讨论中采集的项目信息(技术栈、关键模块、外部引用),有实质性变化时更新并输出摘要。
255
+
257
256
  ### 🅰️🅱️ 阶段三(共享):openspec SDD 文档生成
258
257
 
259
258
  使用 openspec CLI。Path A 的阶段二已创建分支,分支名即为 change 名。Path B 通过 B1.1 已创建 change:
@@ -396,56 +395,58 @@ openspec instructions tasks --change "$CHANGE" --json
396
395
  > - [纪律 2]
397
396
  > ```
398
397
 
399
- ### Rigid 技能声明模板(加载后立即执行)
398
+ ### 🧭 风险路由:选择执行模式
400
399
 
401
- 加载完所有 superpowers 后,按以下格式向用户声明:
400
+ 在加载 superpowers 并声明 rigid 纪律**之前**,先执行风险路由判断,确定当前变更使用 **plan mode**(直接实现 + 后置验证)还是 **tdd mode**(完整 RED→GREEN→REFACTOR)。
402
401
 
403
- ```
404
- ## ✅ Superpowers 门闸通过
402
+ #### 判断流程
403
+
404
+ 1. **分析变更特征** — 审视 tasks.md 中的变更范围
405
+ - 变更涉及哪些文件类型(代码 / 配置 / 文档)
406
+ - 是否涉及运行时行为改动
407
+ - 是否存在复杂的边界条件或异常路径
408
+ - 现有测试覆盖是否充分
409
+
410
+ 2. **查阅风险路由卡** — 以 `references/risk-routing-card.md` 为判断依据
411
+ - 根据变更类型在风险因子对照表中查找推荐模式
412
+ - 检查是否满足 plan mode 的四项决定性特征
413
+ - 如涉及多种变更类型,以最高风险特征为准
405
414
 
406
- ### 已加载的技能
415
+ 3. **输出风险判断表** — 按以下模板输出供用户确认:
407
416
 
408
- | 技能 | 类型 | 对本变更的要求 |
409
- |------|------|---------------|
410
- | test-driven-development | 🔴 **Rigid** | 每个代码行为改动必须先写测试、看失败、再写实现 |
417
+ ```
418
+ ### 🧭 风险路由判断
419
+
420
+ | 变更特征 | 判定 |
421
+ |---------|------|
422
+ | 变更类型 | {变更类型描述} |
423
+ | 涉及模块 | {模块列表} |
424
+ | 运行时代码 | {✅ 是 / ❌ 否} |
425
+ | 边界条件 | {有 / 无 / 描述} |
426
+ | 推荐模式 | {🟢 **plan mode** / 🔴 **tdd mode**} |
427
+
428
+ **理由:** {简要说明推荐依据}
429
+ **请确认是否按 {plan/tdd} mode 进入阶段四实现?**
430
+ ```
411
431
 
412
- ### Rigid 纪律确认
432
+ 4. **等待用户确认** — 用户确认前不得进入阶段四
413
433
 
414
- 进入实现前,以下 rigid 纪律将覆盖默认实现流程:
415
- - `test-driven-development` 的铁律:**NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST**
416
- - 配置文件、SKILL.md 模板、markdown 文件豁免 TDD
434
+ #### Mode 切换规则
417
435
 
418
- 用户确认后,才能进入阶段四。
419
- ```
436
+ - **plan → tdd 允许升级**:实现中发现复杂度超预期时,主动暂停并建议升级
437
+ - **tdd → plan 禁止降级**:一旦判定为 tdd mode,不得以降级为由跳过测试
420
438
 
421
- **声明后等待用户确认。用户未确认前不得进入实现阶段。**
439
+ ### 声明模板(按已确定的 mode 输出)
440
+
441
+ 加载完所有 superpowers、完成风险路由判断后,按 mode 选择对应模板输出:
422
442
 
423
- ### 安全检查清单(增强版)
424
-
425
- - [ ] proposal.md 已生成并通过 spec-hardener
426
- - [ ] specs/ 已生成并通过 spec-hardener
427
- - [ ] design.md 已生成
428
- - [ ] tasks.md 已生成
429
- - [ ] 📝 **实现计划已生成**(superpowers:writing-plans 完成,存于 `docs/superpowers/plans/`)
430
- - [ ] 用户已审阅并批准所有 SDD 文档及实现计划
431
- - [ ] 🔍 **Superpowers 技能已加载**(Skill 工具已调用)
432
- - [ ] 🚨 **Rigid 纪律已向用户声明并获得确认**
433
- - [ ] Path A 检查项:Git 分支已从 main 岔出
434
- - [ ] Path B 检查项:OpenSpec change 已创建,brainstorming 文件已产出
435
-
436
- ### 🚩 Red Flags — 你正在绕过 Superpowers 检查
437
-
438
- > 以下每一个想法都是一个危险信号。**任何一个出现 → 立即停止 → 回到本步骤执行 superpowers 检查。**
439
-
440
- | 想法 | 现实 |
441
- |------|------|
442
- | "tasks + plan 都完成了,直接实现吧" | ❌ 必须先走完 3.8 语言规范 → 3.9 用户确认 → Superpowers 门禁。plan 生成 ≠ 可以跳过后续步骤。 |
443
- | "tasks 完成了,直接进入实现吧" | ❌ 必须先检查 superpowers。顺序不可颠倒。 |
444
- | "这个变更很简单,不需要检查" | 只要有 1% 的可能性适用,就**必须**检查。 |
445
- | "我知道 TDD 是什么,不用加载技能" | 技能会更新。加载当前版本才有效。 |
446
- | "先搞快点,后面再补测试" | 补 = 不补。不可协商的纪律。 |
447
- | "子代理一次性写代码效率高,TDD 太慢" | TDD 铁律优先于效率。质量不可妥协。 |
448
- | "已经改了代码,回头补测试也一样" | 测试-after 和 TDD 不等价。测试-after 验证的是"代码做了什么",不是"代码应该做什么"。 |
443
+ 执行[门闸声明]时,SEE: references/superpowers-gate.md
444
+ - 声明模板 → 见该文件"Plan Mode / TDD Mode 声明模板"
445
+ - 安全检查清单 见该文件"安全检查清单"
446
+ - Red Flags 见该文件"Red Flags"
447
+ AI SHALL 在完成风险路由判断、输出 mode 声明前读取该文件。
448
+
449
+ **声明后等待用户确认。用户未确认前不得进入实现阶段。**
449
450
 
450
451
  ---
451
452
 
@@ -453,99 +454,74 @@ openspec instructions tasks --change "$CHANGE" --json
453
454
 
454
455
  ```mermaid
455
456
  flowchart TD
456
- CHK["⛔ 门闸通过"] --> BRANCH{"Path B 且<br/>分支未创建?"}
457
- BRANCH -->|"是(Path B)"| BR["创建 git 分支<br/>基于 change 名"]
458
- BRANCH -->|"否(Path A)"| NEXT{"还有未完成的 task "}
459
- BR --> NEXT
460
- NEXT -->|"有"| J{"涉及代码<br/>行为改动?"}
461
- J -->|"是"| RED["🔴 RED<br/>编写测试<br/>预期失败"]
462
- J -->|"否"| TT{"Task 具体类型?"}
463
- TT -->|"纯配置 / markdown /<br>SKILL.md / Shell"| DIR["直接实现"]
464
- TT -->|"测试框架<br>基础设施搭建"| FRAME["先创建框架<br>后续代码用 TDD"]
465
- RED --> GREEN["🟢 GREEN<br/>写最小实现<br/>通过测试"]
466
- GREEN --> REFACTOR["🔵 REFACTOR<br/>重构优化<br/>保持测试通过"]
467
- REFACTOR --> MARK["✅ 标记完成"]
468
- DIR --> MARK
469
- FRAME --> MARK
470
- MARK --> NEXT
471
- NEXT -->|""| CA["4.4 code-audit"]
472
- CA -->|"通过"| SYNC["openspec sync --change"]
457
+ CHK["⛔ 门闸通过"] --> MODE{"风险路由<br/>选择执行模式"}
458
+ MODE -->|"🟢 Plan Mode"| PLAN["plan mode 分支"]
459
+ MODE -->|"🔴 TDD Mode"| TDD["tdd mode 分支"]
460
+ MODE -->|"不确定"| CONFIRM["由用户确认模式"]
461
+ CONFIRM --> PLAN
462
+ CONFIRM --> TDD
463
+
464
+ subgraph PLAN["🟢 Plan Mode 路径"]
465
+ PLAN_ENTRY["plan mode 入口"] --> P_BRANCH{"Path B 且<br/>分支未创建?"}
466
+ P_BRANCH -->|"是"| P_BR["创建 git 分支"]
467
+ P_BRANCH -->|"否"| P_NEXT{"还有未完成的 task ?"}
468
+ P_BR --> P_NEXT
469
+ P_NEXT -->|"有"| P_DIR["直接实现"]
470
+ P_DIR --> P_VERIFY["后置验证<br/>build → lint → test"]
471
+ P_VERIFY -->|"通过"| P_MARK["✅ 标记完成"]
472
+ P_VERIFY -->|"失败"| P_FIX["修复后重验"]
473
+ P_FIX --> P_VERIFY
474
+ P_MARK --> P_NEXT
475
+ P_NEXT -->|"无"| OUT["→ code-audit"]
476
+ end
477
+
478
+ subgraph TDD["🔴 TDD Mode 路径"]
479
+ T_ENTRY["tdd mode 入口"] --> T_BRANCH{"Path B 且<br/>分支未创建?"}
480
+ T_BRANCH -->|"是"| T_BR["创建 git 分支"]
481
+ T_BRANCH -->|"否"| T_NEXT{"还有未完成的 task ?"}
482
+ T_BR --> T_NEXT
483
+ T_NEXT -->|"有"| T_J{"涉及代码<br/>行为改动?"}
484
+ T_J -->|"是"| RED["🔴 RED<br/>编写测试<br/>预期失败"]
485
+ T_J -->|"否"| TT{"Task 具体类型?"}
486
+ TT -->|"纯配置 / markdown /<br>SKILL.md / Shell"| T_DIR["直接实现"]
487
+ TT -->|"测试框架<br>基础设施搭建"| FRAME["先创建框架<br>后续代码用 TDD"]
488
+ RED --> GREEN["🟢 GREEN<br/>写最小实现<br/>通过测试"]
489
+ GREEN --> REFACTOR["🔵 REFACTOR<br/>重构优化<br/>保持测试通过"]
490
+ REFACTOR --> T_VERIFY["后置验证<br/>build → lint → test"]
491
+ T_DIR --> T_VERIFY
492
+ FRAME --> T_VERIFY
493
+ T_VERIFY -->|"通过"| T_MARK["✅ 标记完成"]
494
+ T_VERIFY -->|"失败"| T_FIX["修复后重验"]
495
+ T_FIX --> T_VERIFY
496
+ T_MARK --> T_NEXT
497
+ T_NEXT -->|"无"| T_OUT["→ code-audit"]
498
+ end
499
+
500
+ OUT --> CA["4.4 code-audit"]
501
+ T_OUT --> CA
502
+ CA -->|"通过"| VR["4.4 生成验证报告"]
473
503
  CA -->|"失败"| REPAIR["修复后重跑"]
474
504
  REPAIR --> CA
505
+ VR -->|"确认"| SYNC["openspec sync --change"]
475
506
  SYNC --> END["4.5 分支结束处理<br/>提交 / PR / 保留 / 丢弃"]
476
507
  ```
477
508
 
478
509
  ### 核心原则
479
510
 
480
- - **实现阶段必须遵循 TDD(Red → Green → Refactor)纪律**
481
- - 每个涉及代码行为改动的 task,第一步永远是写测试(RED),不是看实现细节
482
- - 配置文件、SKILL.md 模板、markdown 文件豁免 TDD
483
-
484
- #### 4.1 准备工作
485
-
486
- **Path A:**
487
-
488
- ```bash
489
- CHANGE=$(git branch --show-current)
490
- PLAN_FILE="docs/superpowers/plans/$(date +%Y-%m-%d)-$CHANGE.md"
491
- ```
492
-
493
- **Path B:** 超powers 门禁通过后,**先创建 git 分支**,再进入 TDD 循环:
494
-
495
- ```bash
496
- # 获取 change 名
497
- CHANGE=$(ls openspec/changes/ | sort -r | head -1)
498
- # 创建分支
499
- git stash push -m "reef-start-auto-stash" 2>/dev/null || true
500
- git checkout main && git fetch origin main && git reset --hard origin/main
501
- git checkout -b "$CHANGE"
502
- git stash pop 2>/dev/null || true
503
- # 记录计划文件路径
504
- PLAN_FILE="docs/superpowers/plans/$(date +%Y-%m-%d)-$CHANGE.md"
505
- ```
506
-
507
- 如果 `$PLAN_FILE` 存在,读取实现计划,按 plan 中的 task 分解顺序逐 task 实现。计划中的每个 task 已包含完整的文件路径、测试代码、实现代码和提交步骤。
508
-
509
- #### 4.2 逐 task TDD 实现
510
-
511
- **🔴 RED — 先写测试**
512
- - 根据 spec 的 Scenario 编写单元测试
513
- - 运行测试,确认失败(红)
514
- - 如果测试意外通过了,说明测试写的太弱,需改进
515
- - **不写实现代码**
516
-
517
- **🟢 GREEN — 最小实现**
518
- - 只写让当前测试通过的最小代码量
519
- - 不提前实现未测试的功能
520
- - 运行测试,确认全绿
521
- - 如果感觉"这段代码还没写完",那是正常的 — 下一个 task 会覆盖
522
-
523
- **🔵 REFACTOR — 保持测试通过的前提下重构**
524
- - 清理重复代码、提取函数、重命名
525
- - 保持测试运行通过
526
- - 不改变行为
527
-
528
- **完成一个 task 后:**
529
- 1. 标记 tasks.md 中对应项为 `- [x]`
530
- 2. 如 `$PLAN_FILE` 存在,同步标记 plan 中对应步骤为 `- [x]`
531
- 3. 运行完整测试套件确认没有回归
532
- 4. 进入下一个 task(参照 plan 中的步骤顺序)
533
- 5. 如遇到阻塞或模糊需求,暂停并询问用户
534
-
535
- #### 4.3 全部任务完成后的 code-audit
536
-
537
- 加载 `reef:reef-review` skill。检测变更范围,并行派发 agent。全部通过后执行 `openspec sync --change "$CHANGE"`。
538
-
539
- #### 4.4 分支结束处理
540
-
541
- 询问用户:**创建提交 / 创建 PR / 保留分支 / 丢弃分支**
542
-
543
- | 操作 | 说明 |
544
- |------|------|
545
- | 创建提交 | 中文 message + Issue URL(Path A 有则加,Path B 可选) + PRD 链接(如有) |
546
- | 创建 PR | `git push -u origin "$CHANGE"` → `gh pr create` |
547
- | 保留分支 | 报告分支名和变更位置 |
548
- | 丢弃分支 | 用户确认后删除 |
511
+ - **实现阶段根据风险路由确定的 mode 执行对应纪律**
512
+ - **TDD Mode 下**:遵循 RED → GREEN → REFACTOR 循环,每个涉及代码行为改动的 task 第一步永远是写测试(RED
513
+ - **Plan Mode 下**:先直接实现,再后置验证(build → lint → test),通过后才标完成
514
+ - **Plan Mode 中复杂度超预期时**:主动暂停并建议升级为 tdd mode(plan→tdd 升级允许,tdd→plan 禁止降级)
515
+ - 配置文件、SKILL.md 模板、markdown 文件豁免 TDD(在 plan mode 下豁免后置验证,但建议检查)
516
+
517
+ 执行阶段四时,SEE: references/stage-4-implementation.md
518
+ - 4.1 准备工作 → 见该文件"4.1 准备工作"
519
+ - 4.2 逐 task 实现 → 见该文件"4.2 逐 task 实现"
520
+ - 验证命令表 → 见该文件"框架自适应验证命令"
521
+ - 4.3 code-audit → 见该文件"4.3 全部任务完成后的 code-audit"
522
+ - 4.4 验证报告 → 见该文件"4.4 生成验证报告"
523
+ - 4.5 分支结束 → 见该文件"4.5 分支结束处理"
524
+ AI SHALL 在进入阶段四前读取 references/stage-4-implementation.md 了解实现细节。
549
525
 
550
526
  ## 关键原则
551
527
 
@@ -0,0 +1,108 @@
1
+ # 风险路由卡 — plan / tdd Mode 选择参考
2
+
3
+ > 在 superpowers 门禁阶段(阶段三→四之间)根据变更类型和风险级别,自动推荐 plan mode(直接实现 + 后置验证)或 tdd mode(完整 RED→GREEN→REFACTOR 循环)。
4
+
5
+ ---
6
+
7
+ ## 风险因子 → Mode 对照表
8
+
9
+ | 变更类型 | 示例 | 推荐 Mode | 依据 |
10
+ |---------|------|-----------|------|
11
+ | 文档修改 | `.md` 文件内容调整、注释修改 | **plan** | 无行为逻辑,直接可验证 |
12
+ | 配置文件 | `.json` / `.yaml` / `.toml` 配置项调整 | **plan** | 结构确定,验证成本低 |
13
+ | SKILL.md / 流程文档 | 流程描述修改、检查清单增删 | **plan** | 纯文档,无运行时行为 |
14
+ | 测试框架基础设施搭建 | 初始化 vitest / jest / pytest 配置 | **plan** | 脚手架性质,无业务逻辑 |
15
+ | 简单重构(测试覆盖充分) | 提取函数、重命名、移动文件 | **plan** | 已有测试覆盖(>80%)可验证 |
16
+ | 简单重构(测试覆盖不足) | 同上但测试覆盖 < 80% | **tdd** | 需先补测试再重构 |
17
+ | 新增业务逻辑 | Controller / Service / Repository 新增 | **tdd** | 行为变更需先写测试 |
18
+ | Bug 修复 | 功能缺陷修复 | **tdd** | 先写回归测试再修复 |
19
+ | 权限 / 安全变更 | 权限校验、鉴权逻辑、数据脱敏 | **tdd** | 高风险,需完整测试覆盖 |
20
+ | 资金 / 计费变更 | 金额计算、支付流程、账单生成 | **tdd** | 高风险,需完整测试覆盖,标记高优先级 |
21
+ | 幂等性 / 数据库迁移 | 数据库脚本、数据迁移、重入逻辑 | **tdd** | 幂等性需严格验证 |
22
+ | 状态机逻辑 | 状态流转、事件驱动 | **tdd** | 状态组合复杂,需全覆盖 |
23
+ | 并发 / 异步逻辑 | 线程、协程、消息队列消费 | **tdd** | 竞态条件需测试验证 |
24
+ | 不确定风险等级 | 无法明确归类 | **默认 auto** | Agent 推荐后人工确认 |
25
+
26
+ ## Plan Mode 决定性特征
27
+
28
+ 以下特征**同时**满足时,变更适合 plan mode:
29
+
30
+ 1. ✅ **无运行时行为变更** — 不改变程序的控制流、数据流或副作用
31
+ 2. ✅ **结果可目视验证** — 变更正确性可通过肉眼 / diff 确认
32
+ 3. ✅ **无隐藏边界条件** — 不存在需要测试才能发现的边缘情况
33
+ 4. ✅ **回滚成本低** — 出错后可以无风险回退
34
+
35
+ **缺少任何一个特征 → 推荐 tdd mode。**
36
+
37
+ ## Plan vs TDD 执行策略差异表
38
+
39
+ | 维度 | Plan Mode | TDD Mode |
40
+ |------|-----------|----------|
41
+ | **实现前** | 直接实现 | 🔴 先写测试(RED) |
42
+ | **实现中** | 持续关注复杂度超预期信号 | 🟢 写最小实现代码 |
43
+ | **后置验证** | build → lint → test **必须全过** | 🔵 重构 → build → lint → test |
44
+ | **验证失败处理** | 修复后重新验证,通过才标完成 | 同左 |
45
+ | **测试编写** | 后置验证阶段不要求新测试 | 前置 RED 阶段已完成 |
46
+ | **代码审查** | 同标准 code-audit | 同标准 code-audit |
47
+ | **复杂度超预期** | 主动升级为 tdd mode | 不允许降级 |
48
+
49
+ ## 模式选择规则
50
+
51
+ ### 规则 1:plan → tdd 允许升级
52
+
53
+ Agent 在 plan mode 实现过程中,如发现变更复杂度超出预期(涉及多模块联动、边界条件复杂、异常路径多),**SHALL 主动暂停**,向用户声明并建议升级为 tdd mode。用户确认后方可切换。
54
+
55
+ **升级信号:**
56
+ - 实现时发现需要修改 3+ 个模块
57
+ - 发现隐藏的边界条件或并发问题
58
+ - 发现现有测试覆盖率不足且无法目视确认正确性
59
+ - 实现过程中引入了新的控制流分支
60
+
61
+ ### 规则 2:tdd → plan 禁止降级
62
+
63
+ 一旦 superpowers 门禁判定为 tdd mode,Agent **SHALL NOT** 以任何理由降级为 plan mode。即使实现过程中发现变更比预期简单,也必须完成完整的 RED→GREEN→REFACTOR 循环。
64
+
65
+ **常见违规场景(禁止):**
66
+ - "这个 task 其实很简单,直接改吧" → ❌ 违规
67
+ - "测试已经覆盖了,不写新测试直接改" → ❌ 违规(对于 tdd mode task)
68
+ - "现在补测试太慢,先改后面再补" → ❌ 违规
69
+
70
+ ### 规则 3:默认 auto 模式
71
+
72
+ 风险路由**默认自动推荐**。Agent 在 superpowers 门禁中:
73
+ 1. 根据变更类型和风险因子,输出风险判断表 + 推荐模式 + 推荐理由
74
+ 2. **等待用户确认后**,方可进入阶段四
75
+
76
+ ### 规则 4:冲突时以高风险为准
77
+
78
+ 当变更同时涉及 plan 和 tdd 特征(如新增 API + 修改配置文件),**以最高风险特征为准**,推荐 tdd mode。
79
+
80
+ ---
81
+
82
+ ## 输出模板
83
+
84
+ 在 superpowers 门禁中输出以下内容供用户确认:
85
+
86
+ ```
87
+ ### 风险路由判断
88
+
89
+ | 变更特征 | 判定 |
90
+ |---------|------|
91
+ | 变更类型 | 新增用户注册 API(Controller + Service) |
92
+ | 涉及模块 | user-controller, user-service, user-repository |
93
+ | 运行时代码 | ✅ 是 |
94
+ | 边界条件 | 邮箱格式、密码强度、重复注册 |
95
+ | 推荐模式 | 🔴 **tdd mode** |
96
+
97
+ **理由:** 新增业务逻辑涉及多个模块联动(Controller/Service/Repository),
98
+ 且有明确的边界条件和异常路径,需要完整的 RED→GREEN→REFACTOR 循环确保质量。
99
+
100
+ **请确认是否按 tdd mode 进入阶段四实现?**
101
+ ```
102
+
103
+ ---
104
+
105
+ ## 参考
106
+
107
+ - 本卡与 spec-hardener、writing-plans 无冲突关系——风险路由在 superpowers 门禁中选择 mode,spec-hardener 和 writing-plans 在 mode 确定后按对应执行策略执行
108
+ - 本卡是参考文档,最终模式选择以用户确认为准