@namewta/speculo 0.1.19 → 0.1.21

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 (61) hide show
  1. package/package.json +1 -1
  2. package/template/commands/archive.md +1 -1
  3. package/template/commands/config-prune.md +5 -26
  4. package/template/commands/handoff.md +1 -1
  5. package/template/commands/status.md +1 -1
  6. package/template/skills/config-prune/SKILL.md +44 -0
  7. package/template/skills/config-prune/references/audit-rules.md +38 -0
  8. package/template/skills/github-npm-ops/references/failure-recovery.md +2 -2
  9. package/template/skills/github-npm-ops/references/issue-pr-triage.md +1 -1
  10. package/template/skills/github-npm-ops/references/preflight-checklist.md +3 -3
  11. package/template/skills/github-npm-ops/references/release-pipeline.md +3 -3
  12. package/template/skills/handoff/SKILL.md +34 -11
  13. package/template/skills/speculo-write/references/persistence-contract-sop.md +86 -7
  14. package/template/skills/speculo-write/references/workflow-authoring-sop.md +34 -1
  15. package/template/workflows/dev/02-prd/02-prd.md +1 -1
  16. package/template/workflows/dev/02-prd/prd-zoom-out.md +1 -1
  17. package/template/workflows/dev/03-tdd/03-tdd.md +22 -125
  18. package/template/workflows/dev/03-tdd/agents/tdd-finish-agent.md +34 -0
  19. package/template/workflows/dev/03-tdd/agents/tdd-implement-agent.md +34 -0
  20. package/template/workflows/dev/03-tdd/agents/tdd-plan-agent.md +34 -0
  21. package/template/workflows/dev/04-finalize/04-finalize.md +28 -108
  22. package/template/workflows/dev/04-finalize/agents/completion-gate-agent.md +35 -0
  23. package/template/workflows/dev/A-improve-architecture/A-improve-architecture.md +25 -108
  24. package/template/workflows/dev/A-improve-architecture/architecture-grill.md +30 -0
  25. package/template/workflows/dev/A-improve-architecture/architecture-review.md +29 -0
  26. package/template/workflows/dev/A-improve-architecture/architecture-scan.md +37 -0
  27. package/template/workflows/dev/AGENTS.md +10 -2
  28. package/template/workflows/dev/D-docs-sync/D-docs-sync.md +14 -1
  29. package/template/workflows/dev/D-docs-sync/agents/docs-diff-agent.md +34 -0
  30. package/template/workflows/dev/D-docs-sync/agents/docs-update-agent.md +34 -0
  31. package/template/workflows/dev/D-docs-sync/config-contract.md +1 -1
  32. package/template/workflows/dev/D-docs-sync/docs-sync-update.md +1 -1
  33. package/template/workflows/dev/H-diagnose/H-diagnose.md +12 -23
  34. package/template/workflows/dev/H-diagnose/agents/diagnose-agent.md +33 -0
  35. package/template/workflows/dev/H-diagnose/agents/fix-agent.md +34 -0
  36. package/template/workflows/dev/I-to-issues/I-to-issues.md +29 -90
  37. package/template/workflows/dev/I-to-issues/issues-slices.md +3 -3
  38. package/template/workflows/dev/M-domain-modeling/M-domain-modeling.md +6 -22
  39. package/template/workflows/dev/R-review/R-review.md +33 -121
  40. package/template/workflows/dev/R-review/agents/engineering-review-agent.md +33 -0
  41. package/template/workflows/dev/R-review/agents/spec-review-agent.md +34 -0
  42. package/template/workflows/dev/R-review/agents/standards-review-agent.md +34 -0
  43. package/template/workflows/dev/R-review/review-setup.md +39 -1
  44. package/template/workflows/dev/_templates/issues-slices-template.md +1 -1
  45. package/template/workflows/dev/_templates/{prd-overview-template.md → overview-template.md} +0 -1
  46. package/template/workflows/doc/AGENTS.md +10 -2
  47. package/template/workflows/doc/B-writing-beats/B-writing-beats.md +1 -1
  48. package/template/workflows/doc/E-edit-article/E-edit-article.md +1 -1
  49. package/template/workflows/doc/S-writing-shape/S-writing-shape.md +1 -1
  50. package/template/workflows/doc/T-teach/T-teach.md +30 -113
  51. package/template/workflows/doc/_templates/teach-learning-record-template.md +1 -1
  52. package/template/workflows/doc/_templates/teach-lesson-html-template.md +24 -0
  53. package/template/workflows/person/AGENTS.md +14 -2
  54. package/template/workflows/person/M-mao-zedong-cognitive-os/M-mao-zedong-cognitive-os.md +32 -158
  55. package/template/workflows/person/M-mao-zedong-cognitive-os/activate.md +2 -1
  56. package/template/workflows/person/M-mao-zedong-cognitive-os/books/README.md +12 -238
  57. package/template/workflows/person/M-mao-zedong-cognitive-os/deliver.md +1 -0
  58. package/template/workflows/person/M-mao-zedong-cognitive-os/diagnose.md +3 -61
  59. package/template/workflows/person/M-mao-zedong-cognitive-os/mobilize.md +3 -50
  60. package/template/workflows/person/M-mao-zedong-cognitive-os/references/research/15-quote-bank.md +10 -10
  61. package/template/workflows/person/M-mao-zedong-cognitive-os/strategize.md +3 -69
@@ -8,151 +8,48 @@ keywords: [tdd, implement, red-green-refactor, 实现, 测试]
8
8
 
9
9
  # TDD Implementation 工作流执行指引
10
10
 
11
- 本工作流用于把 PRD、issue、诊断结论或用户明确任务实现为经过验证的代码变更。TDD 红绿重构、测试、mock 与重构指引内置在本 workflow 目录中;**深模块、接口、接缝、适配器的设计词汇与原则统一引用 `vendor/codebase-design`,本工作流不再复制**(见下「渐进披露」)。
11
+ 本工作流用于把 PRD、issue、诊断结论或用户明确任务实现为经过验证的代码变更。TDD 细节见同目录 phase 文件;设计词汇统一引用 `../../../vendor/codebase-design/SKILL.md`。
12
12
 
13
- ## 执行前 Git 基线
14
-
15
- 开始 TDD 计划或写代码前,必须先查看当前目录所在仓库和分支的 git 情况:
16
-
17
- ```bash
18
- git branch --show-current
19
- git status --short --branch
20
- git diff --stat
21
- git diff --cached --stat
22
- ```
23
-
24
- - 把当前分支、dirty/staged/untracked 摘要记录到 `tdd/<phase-id>/tdd-plan.md`;进入实现循环后如状态变化,记录到 `implementation-log.md`。
25
- - 默认把已有改动视为用户或上一阶段留下的工作,不回退、不覆盖、不格式化无关文件。
26
- - 如果本阶段需要修改的文件已存在未知改动,先核对 diff;无法判断归属或改动会重叠时,停止并询问用户。
27
- - 若仓库不是 git 仓库或命令无法运行,记录失败原因和可见文件状态,再继续后续判断。
28
-
29
- ## 内置指引
30
-
31
- ### 核心原则
32
-
33
- 测试应通过公共接口验证行为,而不是实现细节。代码可以完全重写;测试不应该。
34
-
35
- 好的测试是集成式的:它们通过公共 API 运行真实的代码路径,描述系统“做什么”,不描述“怎么做”。坏的测试与实现耦合:mock 内部协作者、测试私有方法,或通过外部手段验证内部状态。
36
-
37
- ### 反模式:水平切片
38
-
39
- 不要先写全部测试,再写全部实现。正确做法是追踪弹式垂直切片:一个测试 -> 一个实现 -> 重复。每个测试都基于上一轮学到的东西做出响应。
40
-
41
- ### 渐进披露
42
-
43
- 测试与重构相关指引内置在同目录:
44
-
45
- - `tests.md`:设计测试方式(好测试 vs 坏测试)时读取。
46
- - `mocking.md`:考虑 mock 边界、为可 mock 性设计接口时读取。
47
- - `refactoring.md`:进入重构阶段、识别重构候选时读取。
48
-
49
- 深模块 / 接口 / 接缝 / 适配器 / 杠杆 / 局部性的设计词汇与原则统一由 `vendor/codebase-design` 承载(**单一事实源,本工作流不复制**),按需直接引用:
50
-
51
- - `../../../vendor/codebase-design/SKILL.md`:设计深模块、判断深 vs 浅、为可测试性设计接口(接受依赖而非创建、返回结果而非副作用、小表面积)时读取——deep module 与可测试接口设计的权威来源。
52
- - `../../../vendor/codebase-design/DEEPENING.md`:判定依赖类别(进程内 / 本地可替换 / 端口与适配器 / mock)与「替换而非叠加」的测试策略时读取。
53
- - `../../../vendor/codebase-design/DESIGN-IT-TWICE.md`:需要为深化候选并行探索多个备选接口时读取。
54
-
55
- ### 消费 slices 切片契约
56
-
57
- 多阶段 change 从 `slices.md` 接手时,每个 TDD 阶段对应一个切片,须读取并守护该切片契约(见 `../I-to-issues/issues-slices.md`):
58
-
59
- - **保留/不动**:把切片的「保留/不动」清单当作实现硬约束——冻结常量 / 共享依赖 / 邻近功能一律不碰。
60
- - **关键核实结论与行号现场核对**:切片记录的行号为*近似*,实现时一律以现场代码为准、不照搬。
61
- - **验收切片**:Finish 阶段运行切片的「验收切片」;删除型切片须含残留扫描(`grep` 0 命中)并留证。
62
- - **横切铁律**:遵守 §4 横切关注点(契约先行、删缓存可重建、数据安全冻结等)。
63
- - **存疑即问**:计划阶段遇未决分支,按 `../I-to-issues/issues-slices.md`「存疑时的提问协议」一次一问、带推荐、逐步锁定。
13
+ > **产物目录:** `speculo/.speculo/dev/<change>/tdd/<phase-id>/`。`<change>` 必须为 `YYYY-MM-DD-<kebab-name>`。
64
14
 
65
15
  ## 阶段
66
16
 
67
- > **产物目录:** 本工作流所有产物写入 `speculo/.speculo/dev/<change>/tdd/<phase-id>/`(见下「TDD 产物目录与阶段标识」)。下文产物路径均相对该 change 目录。**`<change>` 必须为 `YYYY-MM-DD-<kebab-name>`**(例:`2026-06-12-user-auth`)。
17
+ | Phase | id | agent | 规范 | 模板 | 产物 |
18
+ |-------|-----|-------|------|------|------|
19
+ | 1. TDD Plan | `tdd-plan` | `agents/tdd-plan-agent.md` | `tdd-plan.md` | `../_templates/tdd-plan-template.md` | `tdd/<phase-id>/tdd-plan.md` |
20
+ | 2. Slice Loop | `slice-loop` | `agents/tdd-implement-agent.md` | `tdd-loop.md` | `../_templates/tdd-log-template.md` | `tdd/<phase-id>/implementation-log.md` |
21
+ | 3. Finish | `tdd-finish` | `agents/tdd-finish-agent.md` | `tdd-finish.md` | `../_templates/tdd-verification-template.md` | `tdd/<phase-id>/verification.md` |
68
22
 
69
23
  ### 1. TDD Plan — 行为与接口计划
70
- - 规范:`tdd-plan.md`
71
- - 模板:`../_templates/tdd-plan-template.md`
72
- - 产物:`tdd/<phase-id>/tdd-plan.md`
73
- - 完成准则:
74
- - 已确认公共接口、关键行为和测试优先级
75
- - 已在产物顶部「阶段标识」段填写 `<phase-id>`
76
- - `tdd-plan.md` 无残留 `[TODO:]`
24
+ - id:`tdd-plan`
25
+ - 完成准则:公共接口与测试优先级已确认;`tdd-plan.md` 无残留 `[TODO:]`
77
26
 
78
27
  ### 2. Slice Loop — 红绿重构循环
79
- - 规范:`tdd-loop.md`
80
- - 模板:`../_templates/tdd-log-template.md`
81
- - 产物:`tdd/<phase-id>/implementation-log.md`
82
- - 完成准则:
83
- - 每个切片都有 RED、GREEN、REFACTOR 和验证记录
84
- - `implementation-log.md` 无残留 `[TODO:]`
28
+ - id:`slice-loop`
29
+ - 完成准则:每切片有 RED/GREEN/REFACTOR 记录;`implementation-log.md` 无残留 `[TODO:]`
85
30
 
86
31
  ### 3. Finish — 验证与收尾
87
- - 规范:`tdd-finish.md`
88
- - 模板:`../_templates/tdd-verification-template.md`
89
- - 产物:`tdd/<phase-id>/verification.md`
90
- - 完成准则:
91
- - 已运行相关测试或明确记录无法运行原因
92
- - 无调试残留和推测性功能
93
- - 已把 slices 中该阶段 `<phase>` 状态由 `未开始` 置为 `已实现`(无 slices 则跳过,见「phase 阶段状态(XML 契约)」)
94
- - `verification.md` 无残留 `[TODO:]`
95
-
96
- ## TDD 产物目录与阶段标识
97
-
98
- - 本工作流所有产物集中在 `speculo/.speculo/dev/<change>/tdd/<phase-id>/`,与 change 根目录的 PRD / slices 等产物分离,便于多阶段并行与回溯。
99
- - `<change>` 为当前 change 目录名(`YYYY-MM-DD-<kebab-name>`)。
100
- - `<phase-id>` 标识:
101
- - change 来自**多阶段 slices** 时,用 slices 阶段标识(与 slices `<phase id="...">` 的 `id` 严格一致),如 `phase0-node-base`、`phase1-templates`。
102
- - change 为**单阶段**(无 slices 分期)时,用一个描述性切片 slug,如 `phase0-<slug>`。
103
- - 每个阶段独立一套 `tdd-plan.md` / `implementation-log.md` / `verification.md`,互不覆盖;模板顶部「阶段标识」段记录该 `<phase-id>`。
104
- - 目录形如:
32
+ - id:`tdd-finish`
33
+ - 完成准则:验证已运行;slices 状态已翻转(若有);`verification.md` 无残留 `[TODO:]`
105
34
 
106
- ```text
107
- speculo/.speculo/dev/<change>/tdd/
108
- ├── phase0-node-base/
109
- │ ├── tdd-plan.md
110
- │ ├── implementation-log.md
111
- │ └── verification.md
112
- └── phase1-templates/
113
- ├── tdd-plan.md
114
- ├── implementation-log.md
115
- └── verification.md
116
- ```
117
-
118
- ## phase 阶段状态(XML 契约)
119
-
120
- 多阶段 change(`speculo/.speculo/dev/<change>/slices.md`)中,每个阶段标题下紧跟一个状态标记,作为该阶段在三段生命周期中的单一事实源:
121
-
122
- ```xml
123
- <phase id="phase0-node-base" status="未开始"><!-- 未开始 → 已实现(dev/03) → 已验证(dev/04) --></phase>
124
- ```
125
-
126
- - `id`:阶段稳定标识,与 TDD 产物目录 `tdd/<phase-id>/` 同名。
127
- - `status` 枚举与责任方:
128
- - `未开始` —— 创建 slices 文档时由作者初始化(所有阶段默认 `未开始`)。
129
- - `已实现` —— 本工作流(`dev/03`)该阶段 Finish 验证通过后置入。
130
- - `已验证` —— `dev/04`(`../04-finalize/04-finalize.md`)完成前验证通过后置入。
131
- - 本工作流只负责 `未开始 → 已实现` 这一跳;`dev/04` 负责 `已实现 → 已验证`。状态只前进不回退,除非该阶段被显式重做。
132
- - change 无 slices(单阶段直接任务)时本契约不适用,跳过状态翻转。
35
+ slices 消费契约、Git 基线、XML 阶段状态见 `tdd-plan.md` 与 `tdd-finish.md`。
133
36
 
134
37
  ## 依赖
135
38
 
136
39
  - 软依赖:`../02-prd/02-prd.md` 或 `../I-to-issues/I-to-issues.md`,scope: same-change
137
- - 硬依赖:无;若用户提供明确修复或实现任务,可直接进入
40
+ - 硬依赖:无
138
41
 
139
42
  ## 状态扩展字段
140
43
 
141
- 本工作流需在同 change 的 `.status.json` 追加:
142
-
143
44
  - `dev_entry` (string) — 固定为 `dev/03`
144
- - `embedded_guides` (array) — 包含 `tdd`
145
- - `tdd_phase_id` (string) 当前 TDD 阶段标识,与产物目录 `tdd/<phase-id>/` 及 slices `<phase>` 的 `id` 一致
146
- - `slice_source` (prd | issues | diagnosis | user-request) — 切片来源
147
- - `red_green_refactor_cycles` (array) — 每轮 TDD 循环摘要
148
- - `verification_commands` (array) 已运行或应运行的验证命令
149
- - `implementation_status` (planned | in-progress | verified | blocked) — 实现状态
150
-
151
- > 多阶段 change:上述自治字段按阶段命名空间记录在 `tdd_runs[<phase-id>]` 下(各含 `scope` / `artifacts`(指向 `tdd/<phase-id>/*.md`) / `red_green_refactor_cycles` / `verification_commands` / `implementation_status`),避免跨阶段互相覆盖。单阶段 change 可直接用平铺字段。
45
+ - `tdd_phase_id` (string)
46
+ - `slice_source` (prd | issues | diagnosis | user-request)
47
+ - `red_green_refactor_cycles` (array)
48
+ - `verification_commands` (array)
49
+ - `implementation_status` (planned | in-progress | verified | blocked)
152
50
 
153
51
  ## 完成与状态更新
154
52
 
155
53
  - 进入每个 phase 时更新 `current_phase` 和 `phase_history`。
156
- - 每完成一个切片,追加 `red_green_refactor_cycles`(多阶段时写入 `tdd_runs[<phase-id>]`)。
157
- - Finish 验证通过后,把 slices 中该阶段 `<phase id="<phase-id>">` `status` 由 `未开始` 置为 `已实现`(无 slices 则跳过)。
158
- - 全部用户要求的实现边界完成并验证后,可把 `change_status` 置为 `completed`,或移交 review/handoff command。
54
+ - Finish 验证通过后把 slices 中该阶段 `status` 由 `未开始` 置为 `已实现`(无 slices 则跳过)。
55
+ - 全部实现边界完成并验证后,移交 `../04-finalize/04-finalize.md` `../R-review/R-review.md`;不得自行写入 `change_status: completed`。
@@ -0,0 +1,34 @@
1
+ ---
2
+ id: dev/03-tdd/tdd-finish-agent
3
+ type: agent
4
+ name: TDD Finish Agent
5
+ description: 隔离执行 Finish phase:验证收尾与 slices 状态翻转
6
+ ---
7
+
8
+ ## 使命
9
+
10
+ 完成 TDD 收尾验证,产出 `verification.md`,并将 slices 中对应阶段标记为 `已实现`。
11
+
12
+ ## 输入契约
13
+
14
+ - change 路径:`speculo/.speculo/dev/<change>/`
15
+ - `current_phase` / phase-id:`tdd-finish`
16
+ - 上游产物:`tdd/<phase-id>/implementation-log.md`、`tdd/<phase-id>/tdd-plan.md`、`slices.md`(若存在)
17
+ - 模板:`../_templates/tdd-verification-template.md`
18
+
19
+ ## 执行规范
20
+
21
+ - 按 `../tdd-finish.md` 运行验证命令,记录完整输出。
22
+ - 运行 slices 验收切片;删除型切片须含残留扫描证据。
23
+ - 验证通过后把 `slices.md` 中 `<phase id="<phase-id>">` 的 `status` 由 `未开始` 置为 `已实现`(无 slices 则跳过)。
24
+ - 产物写入 `speculo/.speculo/dev/<change>/tdd/<phase-id>/verification.md`。
25
+
26
+ ## 产物与状态
27
+
28
+ - 产物:`tdd/<phase-id>/verification.md`
29
+ - `.status.json`:更新 `current_phase: tdd-finish`、`verification_commands`、`implementation_status: verified`
30
+
31
+ ## 边界
32
+
33
+ - 不越过本 phase;不把 slices 置为 `已验证`(属 `dev/04`)。
34
+ - 不写 `change_status`;完成后移交 `../../04-finalize/04-finalize.md` 或 `../../R-review/R-review.md`。
@@ -0,0 +1,34 @@
1
+ ---
2
+ id: dev/03-tdd/tdd-implement-agent
3
+ type: agent
4
+ name: TDD Implement Agent
5
+ description: 隔离执行 Slice Loop phase:红绿重构循环与测试实现
6
+ ---
7
+
8
+ ## 使命
9
+
10
+ 在当前 change 的 `<phase-id>` 下执行红绿重构循环,产出 `implementation-log.md` 与对应代码变更。
11
+
12
+ ## 输入契约
13
+
14
+ - change 路径:`speculo/.speculo/dev/<change>/`
15
+ - `current_phase` / phase-id:`slice-loop`
16
+ - 上游产物:`tdd/<phase-id>/tdd-plan.md`、`slices.md`(若存在)
17
+ - 模板:`../_templates/tdd-log-template.md`
18
+
19
+ ## 执行规范
20
+
21
+ - 按 `../tdd-loop.md` 执行 RED → GREEN → REFACTOR 循环。
22
+ - 测试设计读 `../tests.md`;mock 边界读 `../mocking.md`;重构读 `../refactoring.md`。
23
+ - 守护 slices 契约:保留/不动清单、现场核对行号、横切铁律见 `../../I-to-issues/issues-slices.md`。
24
+ - 产物写入 `speculo/.speculo/dev/<change>/tdd/<phase-id>/implementation-log.md`。
25
+
26
+ ## 产物与状态
27
+
28
+ - 产物:`tdd/<phase-id>/implementation-log.md`、对应源代码与测试
29
+ - `.status.json`:更新 `current_phase: slice-loop`、`red_green_refactor_cycles`、`implementation_status: in-progress`
30
+
31
+ ## 边界
32
+
33
+ - 不越过本 phase;不执行 Finish 验证或 slices 状态翻转。
34
+ - 不写 `change_status`。
@@ -0,0 +1,34 @@
1
+ ---
2
+ id: dev/03-tdd/tdd-plan-agent
3
+ type: agent
4
+ name: TDD Plan Agent
5
+ description: 隔离执行 TDD Plan phase:确认公共接口、行为与测试优先级
6
+ ---
7
+
8
+ ## 使命
9
+
10
+ 为当前 change 的单个 `<phase-id>` 产出 `tdd-plan.md`,不进入实现循环。
11
+
12
+ ## 输入契约
13
+
14
+ - change 路径:`speculo/.speculo/dev/<change>/`
15
+ - `current_phase` / phase-id:`tdd-plan`
16
+ - 上游产物:`slices.md`(若存在)、`prd.md` / `overview.md`、诊断结论或用户任务描述
17
+ - 模板:`../_templates/tdd-plan-template.md`
18
+
19
+ ## 执行规范
20
+
21
+ - 读取 `../03-tdd.md` 的 Git 基线要求,先记录分支与 dirty 状态。
22
+ - 按 `../tdd-plan.md` 填写行为与接口计划;slices 消费契约见 `../tdd-plan.md` 与 `../../I-to-issues/issues-slices.md`。
23
+ - 设计词汇引用 `../../../../vendor/codebase-design/SKILL.md`,不复制正文。
24
+ - 产物写入 `speculo/.speculo/dev/<change>/tdd/<phase-id>/tdd-plan.md`。
25
+
26
+ ## 产物与状态
27
+
28
+ - 产物:`tdd/<phase-id>/tdd-plan.md`
29
+ - `.status.json`:更新 `current_phase: tdd-plan`、`tdd_phase_id`、`implementation_status: planned`
30
+
31
+ ## 边界
32
+
33
+ - 不越过本 phase;不写测试实现、不修改源代码。
34
+ - 不写 `change_status`;不执行 Slice Loop 或 Finish。
@@ -8,130 +8,50 @@ keywords: [finalize, verify, complete, archive, 归档, 收尾, 完成验证]
8
8
 
9
9
  # Finalize & Archive 工作流执行指引
10
10
 
11
- 本工作流是 `dev/04` 入口,是开发主线的收尾环节(`dev/01` → `dev/02` → `dev/I` → `dev/03` → `dev/04`)。它在 change 的实现完成后,**先用证据证明"真的完成了",再改变状态并归档**。
11
+ 本工作流是 `dev/04` 入口:先用证据证明"真的完成了",再改变状态并归档。
12
12
 
13
- > **目录命名:** `<change>` 必须为 `YYYY-MM-DD-<kebab-name>`(例:`2026-06-12-user-auth`)。归档目标为 `speculo/.speculo/archive/dev/<YYYY-MM>/<change>/`,`<YYYY-MM>` 从 change 目录名中的日期提取。
13
+ > **铁律:** 没有新鲜的验证证据,不许宣称完成。门控函数全文见 `completion-gate.md`。
14
14
 
15
- ## 内置指引
16
-
17
- ### 核心原则
18
-
19
- > 在没有验证的情况下宣称工作完成,这不是高效,而是不诚实。**始终用证据支撑结论。**
20
-
21
- ### 铁律
22
-
23
- ```
24
- 没有新鲜的验证证据,不许宣称完成
25
- ```
26
-
27
- 如果你在本次推进中没有运行验证命令,就不能声称测试通过、构建成功或需求满足。对这条规则敷衍了事,就等于违背了它的精神。
28
-
29
- ### 门控函数
30
-
31
- 在把 change 标记为 completed 之前,对每个结论执行:
32
-
33
- ```
34
- 1. 确定:什么命令能证明这个结论?
35
- 2. 运行:执行完整命令(重新运行,完整执行)
36
- 3. 阅读:完整输出,检查退出码,统计失败数
37
- 4. 验证:输出是否支持这个结论?
38
- - 否 → 用证据说明实际状态,置 blocked
39
- - 是 → 带证据陈述结论
40
- 5. 只有这时:才能做出结论
41
- 跳过任何一步 = 说谎,不是验证
42
- ```
43
-
44
- ### 常见失败模式
45
-
46
- | 结论 | 需要 | 不够格 |
47
- |------|------|--------|
48
- | 测试通过 | 测试命令输出:0 failures | 之前的运行、"应该会通过" |
49
- | Linter 无报错 | Linter 输出:0 errors | 部分检查、推断 |
50
- | 构建成功 | 构建命令:exit 0 | linter 通过、日志看起来没问题 |
51
- | Bug 已修复 | 测试原始症状:通过 | 代码改了,假设已修复 |
52
- | 回归有效 | 红-绿循环已验证 | 测试只通过了一次 |
53
- | 代理已完成 | VCS diff 显示变更 | 代理报告"成功" |
54
- | 需求已满足 | 逐项核对清单 | 测试通过 |
55
-
56
- ### 红线 —— 停下来
57
-
58
- 出现以下任一情况,**不得进入归档**,回到验证:
59
-
60
- - 使用"应该""大概""似乎"
61
- - 验证前就表达满意("太好了""完美""搞定")
62
- - 即将归档却没有新鲜验证
63
- - 信任代理的成功报告而未独立核对 VCS diff
64
- - 依赖部分验证或上一轮的旧结果
65
-
66
- ### 何时使用
67
-
68
- 当一个 change 的实现(`dev/03` 或 hotfix 修复)已结束,用户要把它**收尾、标记完成并归档**时使用。也可在 `dev/R` 审查通过后衔接进入。
69
-
70
- ### 与 `archive` 命令的关系
71
-
72
- - 本工作流(`dev/04`)面向**单个当前 change** 的引导式收尾:先验证、改状态、再归档。
73
- - `../../../commands/archive.md` 面向**批量**归档多个已 `completed` 的 change。两者共用同一套破坏性归档安全契约(先列清单、用户确认、不覆盖)。
15
+ > **目录命名:** `<change>` 必须为 `YYYY-MM-DD-<kebab-name>`。归档目标为 `speculo/.speculo/archive/dev/<YYYY-MM>/<change>/`。
74
16
 
75
17
  ## 阶段
76
18
 
19
+ | Phase | id | agent | 规范 | 模板 | 产物 |
20
+ |-------|-----|-------|------|------|------|
21
+ | 1. Completion Verification | `completion-verification` | `agents/completion-gate-agent.md` | `completion-gate.md` | `../_templates/completion-verification-template.md` | `completion-verification.md` |
22
+ | 2. Merge Back & Cleanup | `merge-cleanup` | — | `../../../skills/worktree-isolation/SKILL.md` | — | 合并后的 base 分支 |
23
+ | 3. Finalize & Archive | `finalize-archive` | — | `finalize-archive.md` | `../_templates/completion-summary-template.md` | `completion-summary.md` |
24
+
77
25
  ### 1. Completion Verification — 完成前验证(门控)
78
- - 规范:`completion-gate.md`
79
- - 模板:`../_templates/completion-verification-template.md`
80
- - 产物:`completion-verification.md`
81
- - 完成准则:
82
- - 每条完成结论都有**本次运行**的命令与输出证据
83
- - 已对照来源(PRD / issue / slices / 用户任务)逐项核对需求清单
84
- - 无调试残留与推测性功能
85
- - (如适用)实现期引入的新领域术语 / 架构决策已按 `../M-domain-modeling/M-domain-modeling.md` 沉淀到 CONTEXT / ADR(模型未漂移);无新术语则不适用
86
- - `completion-verification.md` 无残留 `[TODO:]`
87
- - `.status.json` 的 `verification_status` 为 `verified` 或 `blocked`
88
-
89
- ### 2. Merge Back & Cleanup — 合并回原分支与清理(条件,仅 worktree 模式)
90
- - 规范:`../../../skills/worktree-isolation/SKILL.md`(读其 `references/merge-and-cleanup.md`)
91
- - 模板:无
92
- - 产物:合并后的 base 分支、移除的 `.worktree/<change>/` 工作树与隔离分支
93
- - 完成准则:
94
- - 非 worktree 模式本 phase 标记 `skipped`,不读取该 skill
95
- - `verification_status: verified` 且用户确认后才执行(破坏性)
96
- - change 分支已合并回 `base_branch`(冲突即停、不强推),置 `worktree_status: merged`
97
- - `.worktree/<change>/` 工作树与隔离分支已清理,置 `worktree_status: removed`
26
+ - id:`completion-verification`
27
+ - 完成准则:每条结论有本次运行证据;`verification_status` 为 `verified` 或 `blocked`
28
+
29
+ ### 2. Merge Back & Cleanup — 合并回原分支(仅 worktree 模式)
30
+ - id:`merge-cleanup`
31
+ - 完成准则:非 worktree 模式标记 `skipped`;worktree 已合并并清理
98
32
 
99
33
  ### 3. Finalize & Archive — 状态收尾与归档
100
- - 规范:`finalize-archive.md`
101
- - 模板:`../_templates/completion-summary-template.md`
102
- - 产物:`completion-summary.md`,以及归档动作
103
- - 完成准则:
104
- - `verification_status` 为 `verified`(`blocked` 时不得归档)
105
- - worktree 模式下,归档在 `base_branch` 上进行(change 目录已随 Phase 2 合并到达 base)
106
- - `change_status` 先置 `completed`,再随归档置 `archived`
107
- - change 目录已移动到 `speculo/.speculo/archive/dev/<YYYY-MM>/<change>/`
108
- - 已从 `speculo/.speculo/dev-status.json` 的 `active[]` 移除该 change
109
- - `completion-summary.md` 无残留 `[TODO:]`
34
+ - id:`finalize-archive`
35
+ - 完成准则:`change_status` 置 `completed` 并归档;已从 `dev-status.json` 移除
110
36
 
111
37
  ## 依赖
112
38
 
113
39
  - 软依赖:`../03-tdd/03-tdd.md` 或 `../R-review/R-review.md`,scope: same-change
114
- - 硬依赖:无;但归档要求当前 change 通过完成前验证
40
+ - 硬依赖:无;但归档要求通过完成前验证
115
41
 
116
42
  ## 状态扩展字段
117
43
 
118
- 本工作流需在同 change 的 `.status.json` 追加:
119
-
120
44
  - `dev_entry` (string) — 固定为 `dev/04`
121
- - `verification_commands` (array) — 本次运行的验证命令及结果摘要
122
- - `requirements_checklist` (array) — 逐项需求核对结果,每项含来源引用与 satisfied | missing | partial
123
- - `verification_status` (verified | blocked) — 完成前验证结论
124
- - `archived` (boolean) — 是否已完成归档
125
- - `archive_path` (string|null) — 归档目标路径
126
- - `worktree_status` (created | active | merged | removed) — 仅 worktree 模式;本工作流在 Phase 2 推进到 `merged` → `removed`(字段定义见 `../../../skills/worktree-isolation/SKILL.md`)
45
+ - `verification_commands` (array)
46
+ - `requirements_checklist` (array)
47
+ - `verification_status` (verified | blocked)
48
+ - `archived` (boolean)
49
+ - `archive_path` (string|null)
50
+ - `worktree_status` (created | active | merged | removed)
127
51
 
128
52
  ## 完成与状态更新
129
53
 
130
- - 进入每个 phase 时更新 `current_phase` `phase_history`。
131
- - 完成验证后写入 `verification_commands`、`requirements_checklist`、`verification_status`。
132
- - 多阶段 slices:完成前验证为 `verified` 后,把 slices 中该阶段 `<phase id="<phase-id>">` 的 `status` 由 `已实现` 置为 `已验证`(承接 `../03-tdd/03-tdd.md`「phase 阶段状态(XML 契约)」的最后一跳;无 slices 则跳过)。
133
- - 验证为 `blocked` 时停在本工作流,回到 `../03-tdd/03-tdd.md` `../H-diagnose/H-diagnose.md` 修复,不归档。
134
- - 验证为 `verified` 且用户确认后:
135
- - **worktree 模式**:先执行 Phase 2,自动把 change 分支合并回 `base_branch` 并清理工作树与隔离分支(`worktree_status: merged` → `removed`,冲突即停),再在 base 分支上归档;非 worktree 模式跳过 Phase 2。
136
- - 置 `change_status: completed` → 执行归档 → 置 `change_status: archived`、`archived: true`、写 `archive_path`,并从 `speculo/.speculo/dev-status.json` 移除。
137
- - 如有可沉淀经验,在用户或项目规则允许时追加到 `speculo/.speculo/.config/LESSONS.md`。
54
+ - `verification_status: blocked` 时停在本工作流,回到 `../03-tdd/03-tdd.md` `../H-diagnose/H-diagnose.md`。
55
+ - `verified` 且用户确认后:worktree 模式先 Phase 2,再置 `change_status: completed` → 归档 → `archived`。
56
+
57
+ `../../../commands/archive.md` 的关系:本工作流面向单个 change 引导式收尾;archive 命令面向批量归档。
@@ -0,0 +1,35 @@
1
+ ---
2
+ id: dev/04-finalize/completion-gate-agent
3
+ type: agent
4
+ name: Completion Gate Agent
5
+ description: 隔离执行完成前验证门控,防自证完成
6
+ ---
7
+
8
+ ## 使命
9
+
10
+ 独立验证 change 是否真正完成,产出 `completion-verification.md`,给出 `verified` 或 `blocked` 结论。
11
+
12
+ ## 输入契约
13
+
14
+ - change 路径:`speculo/.speculo/dev/<change>/`
15
+ - `current_phase` / phase-id:`completion-verification`
16
+ - 上游产物:PRD / slices / 实现产物、`tdd/<phase-id>/verification.md`(若存在)
17
+ - 模板:`../_templates/completion-verification-template.md`
18
+
19
+ ## 执行规范
20
+
21
+ - 按 `../completion-gate.md` 执行门控函数:确定命令 → 运行 → 阅读输出 → 验证结论。
22
+ - 每条完成结论必须有**本次运行**的命令与输出证据。
23
+ - 对照来源逐项核对需求清单。
24
+ - 产物写入 `speculo/.speculo/dev/<change>/completion-verification.md`。
25
+
26
+ ## 产物与状态
27
+
28
+ - 产物:`completion-verification.md`
29
+ - `.status.json`:写入 `verification_commands`、`requirements_checklist`、`verification_status`
30
+
31
+ ## 边界
32
+
33
+ - 不越过本 phase;不执行归档或 worktree 合并。
34
+ - 只有 `verified` 时主流程才可进入归档 phase;`blocked` 时停止。
35
+ - 本 agent 可建议置 `change_status: completed`,但**只有主流程 `finalize-archive` phase** 实际写入。
@@ -8,136 +8,53 @@ keywords: [architecture, deepening, deep-module, refactor, 架构, 深化, 接
8
8
 
9
9
  # Improve Architecture 工作流执行指引
10
10
 
11
- 本工作流是 `dev/A` 入口:浮现架构摩擦、提出**深化机会**(把浅模块转化为深模块的重构),目标是可测试性与 AI 可导航性。它**建立在共享设计词汇与项目领域模型之上**:
11
+ 本工作流是 `dev/A` 入口:浮现架构摩擦、提出**深化机会**,目标是可测试性与 AI 可导航性。架构词汇统一引用 `../../../vendor/codebase-design/SKILL.md`;领域语言以 `speculo/.speculo/.config/context/CONTEXT.md` 为准。
12
12
 
13
- - 架构词汇与原则(模块 / 接口 / 深度 / 接缝 / 适配器 / 杠杆 / 局部性;删除测试、「接口就是测试表面」、「一个适配器 = 假设接缝,两个 = 真实接缝」)统一引用 `../../../vendor/codebase-design/SKILL.md`(及 `DEEPENING.md`)。在每条建议中**严格使用**这些术语——不要偏离到「组件 / 服务 / API / 边界」。
14
- - 领域语言来自 `speculo/.speculo/.config/context/CONTEXT.md`(为好接缝命名);`speculo/.speculo/.config/adr/` 中的 ADR 记录本工作流**不应重新争议**的决策。领域模型的主动维护见 `../M-domain-modeling/M-domain-modeling.md`。
13
+ > **目录命名:** `<change>` 必须为 `YYYY-MM-DD-<kebab-name>`。产物写入 `speculo/.speculo/dev/<change>/`。
15
14
 
16
- ## 内置指引
15
+ ## 何时使用
17
16
 
18
- ### 何时使用
19
-
20
- 当用户想系统性发现并落实架构深化机会(让代码更可测试、对 AI 更可导航)时使用。也可由 `../H-diagnose/H-diagnose.md` 在修复后转入——当 Bug 根因涉及架构(没有好接缝、纠缠调用者、隐藏耦合)时。
21
-
22
- ### 输入
23
-
24
- - 当前 git 仓库与待改进的代码区域
25
- - `speculo/.speculo/.config/context/CONTEXT.md` 领域词汇、触及区域的 `speculo/.speculo/.config/adr/` ADR
26
- - 设计词汇单一事实源 `../../../vendor/codebase-design/SKILL.md`、`DEEPENING.md`、`DESIGN-IT-TWICE.md`
27
- - 当前 change 目录:`speculo/.speculo/dev/<change>/`(`<change>` 必须为 `YYYY-MM-DD-<kebab-name>`,例:`2026-06-12-deepen-order-intake`)
28
-
29
- ### 输出
30
-
31
- - `speculo/.speculo/dev/<change>/architecture-candidates.md` —— 结构化深化候选清单
32
- - `speculo/.speculo/dev/<change>/architecture-review.html` —— 可视化架构审查报告(前后对比图 + 推荐强度)
33
- - `speculo/.speculo/dev/<change>/architecture-design.md` —— 选中候选经质询后的接口设计与决策
34
- - 经用户确认后更新 `.config/context/`、`.config/adr/`(经 `../M-domain-modeling/`)
35
-
36
- (`<change>` 格式:`YYYY-MM-DD-<kebab-name>`)
37
-
38
- ### 核心原则(引用 codebase-design)
39
-
40
- - **删除测试**:对任何疑似浅的模块,想象删除它——复杂性会集中(好信号,值得深化)还是只是移动?
41
- - **深度是接口的属性**:小接口 + 大量实现;深化 = 缩小接口、把复杂性吸收进实现。
42
- - **接缝纪律**:一个适配器 = 假设接缝,两个 = 真实接缝;不要为单一实现凭空切接缝。
43
- - 完整原则、依赖类别与「替换而非叠加」测试策略见 `../../../vendor/codebase-design/SKILL.md` 与 `DEEPENING.md`,本工作流不复制。
44
-
45
- ### 渐进披露
46
-
47
- - `HTML-REPORT.md`:编写 `architecture-review.html` 时读取——完整 HTML 框架、图表模式与样式指南。
48
-
49
- ### 独立使用
50
-
51
- 本工作流**零硬依赖**,无需预先执行其他工作流即可独立进入(`dev/A`)。只需当前 git 仓库即可启动;缺 change 目录时按下「自初始化」创建;缺 CONTEXT / ADR 时按代码现状探索,不阻塞。
52
-
53
- ### 缺少 change 目录时的自初始化
54
-
55
- 若当前无对应 change 目录:
56
-
57
- 1. 从用户意图提取 `<kebab-name>`(如 `deepen-order-intake`)
58
- 2. 创建 `speculo/.speculo/dev/<YYYY-MM-DD>-<kebab-name>/`
59
- 3. 初始化 `.status.json`:
60
- ```json
61
- {
62
- "dev_entry": "dev/A",
63
- "current_phase": "1. Scan",
64
- "phase_history": [],
65
- "change_status": "active",
66
- "embedded_guides": ["improve-architecture"],
67
- "candidate_count": 0,
68
- "selected_candidate": null,
69
- "report_path": null,
70
- "architecture_status": "scanning"
71
- }
72
- ```
73
- 4. 在 `speculo/.speculo/dev-status.json` 的 `active` 数组追加该 change 目录名
17
+ 当用户想系统性发现并落实架构深化机会时使用。也可由 `../H-diagnose/H-diagnose.md` 在修复后转入。
74
18
 
75
19
  ## 阶段
76
20
 
77
- > **持久化铁律**:所有产物(含 HTML 报告)写入 `speculo/.speculo/dev/<change>/`,**禁止写入 `temp/`、系统临时目录或项目根目录**。
21
+ | Phase | id | 规范 | 产物 |
22
+ |-------|-----|------|------|
23
+ | 1. Scan | `architecture-scan` | `architecture-scan.md` | `architecture-candidates.md` |
24
+ | 2. Report | `architecture-review` | `architecture-review.md`、`HTML-REPORT.md` | `architecture-review.html` |
25
+ | 3. Grill | `architecture-grill` | `architecture-grill.md` | `architecture-design.md` |
78
26
 
79
27
  ### 1. Scan — 探索深化候选
80
- - 规范:本入口「核心原则」+ `../../../vendor/codebase-design/SKILL.md`、`../../../vendor/codebase-design/DEEPENING.md`
81
- - 模板:无(候选条目结构见下「引导」第 4 步)
82
- - 产物:`architecture-candidates.md`
83
- - 引导:
84
- 1. 先读 `speculo/.speculo/.config/context/CONTEXT.md` 与触及区域的 `.config/adr/`。
85
- 2. 用 Agent 工具(`subagent_type=Explore`)有机地遍历代码库,注意摩擦:理解一个概念要在许多小模块间跳转?模块浅(接口几乎和实现一样复杂)?纯函数仅为可测试性而提取、真 bug 藏在其调用方式里(没有局部性)?紧耦合模块在接缝处泄漏?哪些区域难以通过当前接口测试?
86
- 3. 对每个疑似浅模块应用**删除测试**,保留「删除会集中复杂性」的候选。
87
- 4. 每个候选记录:**涉及文件**、**问题**(当前摩擦)、**解决方案**(通俗语言)、**收益**(用局部性 / 杠杆 / 测试改善表述)、**依赖类别**(进程内 / 本地可替换 / 端口与适配器 / mock)、**推荐强度**(强烈 / 值得探索 / 推测性)。
88
- 5. 与现有 ADR 冲突的候选,仅在摩擦真实到值得重审 ADR 时保留,并在条目中显式标注(如「与 ADR-0007 矛盾——但因……值得重新讨论」)。
89
- - 完成准则:
90
- - 候选均用 codebase-design 词汇命名(不散用「组件 / 服务 / 边界」)
91
- - 每个候选含文件、问题、解决方案、收益、依赖类别、推荐强度
92
- - `architecture-candidates.md` 无残留 `[TODO:]`
28
+ - id:`architecture-scan`
29
+ - 完成准则:`architecture-candidates.md` 无残留 `[TODO:]`;候选用 codebase-design 词汇命名
93
30
 
94
31
  ### 2. Report — 可视化架构审查报告
95
- - 规范:`HTML-REPORT.md`
96
- - 模板:无
97
- - 产物:`architecture-review.html`
98
- - 引导:
99
- 1. 按 `HTML-REPORT.md` 编写**自包含** HTML(Tailwind + Mermaid 走 CDN),每个候选一张卡片含**前后对比图**,结尾「首要推荐」段。
100
- 2. 写入 `speculo/.speculo/dev/<change>/architecture-review.html`(**不写临时目录**),用 OS 命令打开(macOS `open <path>`、Linux `xdg-open <path>`、Windows `start <path>`),并告知用户绝对路径。
101
- 3. 领域用 CONTEXT 词汇、架构用 codebase-design 词汇。
102
- 4. 此时不提接口设计;写入并打开后,询问用户:「这些候选你想探索哪一个?」
103
- - 完成准则:
104
- - HTML 自包含、每个候选有前后对比图与推荐强度徽章、含首要推荐段
105
- - 报告写入 change 目录并已为用户打开
106
- - 已请用户选择候选
32
+ - id:`architecture-review`
33
+ - 完成准则:HTML 已写入 change 目录并为用户打开;已请用户选择候选
107
34
 
108
35
  ### 3. Grill — 质询所选候选并沉淀
109
- - 规范:`../../../skills/grill-me/SKILL.md`(逐问压测)+ `../M-domain-modeling/M-domain-modeling.md`(内联沉淀)
110
- - 模板:无
111
- - 产物:`architecture-design.md`;经用户确认后更新 `.config/context/`、`.config/adr/`
112
- - 引导:
113
- 1. 用 `../../../skills/grill-me/SKILL.md` 与用户走设计树:约束、依赖、深化后模块形态、接缝后面是什么、哪些测试存活。
114
- 2. 决策结晶时按 `../M-domain-modeling/M-domain-modeling.md` 内联沉淀:深化模块用了 CONTEXT 没有的概念 → 加术语;锐化了模糊术语 → 更新 CONTEXT;用户以关键理由否决候选 → 按 ADR 三判据决定是否记 ADR(防止未来架构审查重复建议同一件事)。
115
- 3. 想探索深化模块的备选接口时,按 `../../../vendor/codebase-design/DESIGN-IT-TWICE.md` 的「设计两次」并行子代理模式。
116
- - 完成准则:
117
- - 选中候选的接口、依赖策略与适配器、存活测试已记入 `architecture-design.md`
118
- - 决策结晶处的术语 / ADR 已按 `../M-domain-modeling/` 沉淀(经用户确认)
119
- - `architecture-design.md` 无残留 `[TODO:]`
36
+ - id:`architecture-grill`
37
+ - 完成准则:`architecture-design.md` 无残留 `[TODO:]`;术语/ADR 经用户确认后沉淀
120
38
 
121
39
  ## 依赖
122
40
 
123
- - 硬依赖:无(零依赖横向工作流)
124
- - 软依赖:无。可独立进入;也可由 `../H-diagnose/H-diagnose.md` 修复后转入。建立在 `../../../vendor/codebase-design/`(设计词汇)与 `../M-domain-modeling/`(领域模型)之上;深化的实现落地交由 `../03-tdd/03-tdd.md`。
41
+ - 硬依赖:无
42
+ - 软依赖:`../M-domain-modeling/`(领域沉淀)、`../03-tdd/03-tdd.md`(实现落地)
125
43
 
126
44
  ## 状态扩展字段
127
45
 
128
- 本工作流需在同 change 的 `.status.json` 追加:
129
-
130
46
  - `dev_entry` (string) — 固定为 `dev/A`
131
47
  - `embedded_guides` (array) — 包含 `improve-architecture`
132
- - `candidate_count` (number) — 深化候选数量
133
- - `selected_candidate` (string|null) — 用户选中的候选
134
- - `report_path` (string|null) — `speculo/.speculo/dev/<change>/architecture-review.html`
135
- - `architecture_status` (scanning | reported | grilling | designed | blocked) — 工作流状态
48
+ - `candidate_count` (number)
49
+ - `selected_candidate` (string|null)
50
+ - `report_path` (string|null)
51
+ - `architecture_status` (scanning | reported | grilling | designed | blocked)
136
52
 
137
53
  ## 完成与状态更新
138
54
 
139
55
  - 进入每个 phase 时更新 `current_phase` 和 `phase_history`。
140
- - 报告生成后写入 `candidate_count`、`report_path`,置 `architecture_status: reported`。
141
- - 用户选定并质询后写入 `selected_candidate`,置 `architecture_status: designed`。
142
- - 写 `.config/context/` 或 `.config/adr/` 前必须经用户确认(经 `../M-domain-modeling/`)。
143
56
  - 本工作流不自动完成 change;深化的实现交由 `../03-tdd/03-tdd.md` 落地。
57
+
58
+ ### 缺少 change 目录时
59
+
60
+ 若无 active change,执行 `../AGENTS.md` 进入协议步骤 3(原子三步),不得内联自初始化 JSON。