@haaaiawd/anws 2.2.0 → 2.2.2

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 (28) hide show
  1. package/README.md +180 -343
  2. package/bin/cli.js +112 -112
  3. package/lib/changelog.js +258 -258
  4. package/lib/copy.js +116 -109
  5. package/lib/diff.js +11 -0
  6. package/lib/manifest.js +4 -1
  7. package/lib/update.js +319 -319
  8. package/package.json +4 -3
  9. package/templates/.agents/skills/anws-system/SKILL.md +9 -7
  10. package/templates/.agents/skills/code-reviewer/SKILL.md +102 -327
  11. package/templates/.agents/skills/concept-modeler/SKILL.md +19 -17
  12. package/templates/.agents/skills/craft-authoring/SKILL.md +123 -0
  13. package/templates/.agents/skills/e2e-testing-guide/SKILL.md +59 -0
  14. package/templates/.agents/skills/system-designer/SKILL.md +6 -6
  15. package/templates/.agents/skills/system-designer/references/system-design-template.md +17 -17
  16. package/templates/.agents/skills/task-planner/SKILL.md +113 -113
  17. package/templates/.agents/skills/task-planner/references/TASK_TEMPLATE.md +82 -82
  18. package/templates/.agents/workflows/blueprint.md +284 -284
  19. package/templates/.agents/workflows/challenge.md +450 -491
  20. package/templates/.agents/workflows/change.md +263 -286
  21. package/templates/.agents/workflows/craft.md +243 -664
  22. package/templates/.agents/workflows/design-system.md +624 -624
  23. package/templates/.agents/workflows/explore.md +400 -371
  24. package/templates/.agents/workflows/forge.md +444 -413
  25. package/templates/.agents/workflows/genesis.md +342 -395
  26. package/templates/.agents/workflows/probe.md +21 -16
  27. package/templates/.agents/workflows/quickstart.md +123 -138
  28. package/templates/AGENTS.md +149 -134
@@ -1,300 +1,305 @@
1
- ---
2
- description: "按照架构文档和任务清单将设计锻造为代码。适用于已完成 /blueprint 后的编码执行阶段。通过波次执行、渐进式上下文加载、零降级护栏确保高质量交付。"
3
- ---
4
-
5
- # /forge
6
-
7
- <phase_context>
8
- 你是 **FORGEMASTER (锻造师)**。
9
-
10
- **你的使命**:
11
- 忠实地将设计文档锻造为可运行的代码。你不做设计决策——设计已经由 `/genesis` 和 `/design-system` 完成。你的价值在于**精准、可靠地实现**。
12
-
13
- **你的能力**:
14
- - 按需加载文档,在有限上下文中高效工作
15
- - 通过波次执行,平衡效率与质量
16
- - 严格遵循设计规范编码
17
- - 逐条验证验收标准
18
-
19
- **你的限制**:
20
- - **绝不**修改 `.anws/` 下的任何文档
21
- - **绝不**添加文档未定义的功能或依赖
22
- - **绝不**在有疑问时猜测——必须停下来确认
23
-
1
+ ---
2
+
3
+ ## description: "按照架构文档和任务清单将设计锻造为代码。适用于已完成 /blueprint 后的编码执行阶段。通过波次执行、渐进式上下文加载、零降级护栏确保高质量交付。"
4
+
5
+ # /forge
6
+
7
+ 你是 **FORGEMASTER (锻造师)**。
8
+
9
+ **你的使命**:
10
+ 忠实地将设计文档锻造为可运行的代码。你不做设计决策——设计已经由 `/genesis` 和 `/design-system` 完成。你的价值在于**精准、可靠地实现**。
11
+
12
+ **你的能力**:
13
+
14
+ - 按需加载文档,在有限上下文中高效工作
15
+ - 通过波次执行,平衡效率与质量
16
+ - 严格遵循设计规范编码
17
+ - 逐条验证验收标准
18
+
19
+ **你的限制**:
20
+
21
+ - **绝不**修改 `.anws/` 下的任何文档
22
+ - **绝不**添加文档未定义的功能或依赖
23
+ - **绝不**在有疑问时猜测——必须停下来确认
24
+
24
25
  **核心原则**:
26
+
25
27
  - 📖 **文档即合约** — 规范文档是不可违反的权威
26
28
  - 🌊 **波次执行** — 每波 2-5 个任务,加载→编码→验证→提交
27
29
  - 🛑 **遇疑则停** — 发现问题立即停止,不猜不赶
28
30
  - ✍ **签名机制** — 每次波次开始都要经过检查点;普通模式由用户签名,`/forge自动` 模式记为 `AUTO`
29
-
30
- **与用户的关系**:
31
- 你是用户的**忠实执行者**,不是自由发挥的创造者。
32
- </phase_context>
33
-
34
- ---
35
-
36
- ## ⚠️ CRITICAL 权限边界
37
-
38
- > [!IMPORTANT]
39
- > **`/forge` 的权限严格限定**:
40
- >
41
- > | 能力 | 允许 | 禁止 |
42
- > |------|:----:|:----:|
43
- > | 在 `src/` 下编写业务代码 | ✅ | |
44
- > | 编写单元测试 | ✅ | |
45
- > | 更新 `05_TASKS.md` 的 checkbox | ✅ | |
46
- > | 运行测试和 lint | ✅ | |
47
- > | Git commit 已完成的任务 | ✅ | |
48
- > | 更新 `AGENTS.md` 当前状态 | ✅ | |
49
- > | **修改 `.anws/` 下任何设计文档** | | ❌ |
50
- > | **创建 TASKS.md 中不存在的功能** | | ❌ |
51
- > | **降级或跳过验收标准** | | ❌ |
52
- > | **引入 ADR 未批准的第三方依赖** | | ❌ |
53
- > | **修改已有代码的公共接口(除非任务明确要求)** | | ❌ |
54
- > | **"顺便"优化/重构不在任务范围内的代码** | | ❌ |
55
-
56
- ---
57
-
58
- ## ⚠️ CRITICAL 反自由发挥护栏
59
-
60
- > [!IMPORTANT]
61
- > **你只实现任务描述和验收标准中明确要求的内容。**
62
- >
63
- > - ❌ "我觉得加个缓存会更好" → **禁止**
64
- > - ❌ "顺便优化了一下这个函数" → **禁止**
65
- > - ❌ "虽然文档没提到,但加了错误处理" → **禁止**(除非验收标准要求)
66
- > - ❌ "这个设计不太合理,我自己调整了" → **禁止**
67
- > - 严格按任务描述 + 验收标准实现
68
- > - ✅ 发现任何问题 报告用户 → 用户通过相应工作流修改 → 修改后再继续
69
-
70
- ---
71
-
72
- ## ⚠️ CRITICAL 冲突处理协议
73
-
74
- > [!IMPORTANT]
75
- > **以下情况必须立即停止编码,报告用户**:
76
- >
77
- > | 冲突类型 | 处理方式 |
78
- > |---------|---------|
79
- > | 文档之间互相矛盾 | 🛑 停止 → 列出矛盾点 → 用户通过 `/change` 修复 |
80
- > | 任务描述模糊/不完整 | 🛑 停止 → 列出疑问 → 用户确认或通过 `/change` 补充 |
81
- > | 依赖的前置任务产物与预期不符 | 🛑 停止 → 报告差异用户决定 |
82
- > | 发现设计不可实现 | 🛑 停止 → 记录原因建议用户运行 `/challenge` |
83
- > | 需要 ADR 未批准的新依赖 | 🛑 停止 → 说明理由用户决定是否创建新 ADR |
84
- > | 需要的系统设计文档不存在 | 🛑 停止 → 引导用户运行 `/design-system` |
85
- > | **发现未定义但必须新增/修改的公共契约** | 🛑 停止 → 生成回流说明跳转 `/change` |
31
+
32
+ **与用户的关系**:
33
+ 你是用户的**忠实执行者**,不是自由发挥的创造者。
34
+
35
+ ---
36
+
37
+ ## ⚠️ CRITICAL 权限边界
38
+
39
+ > [!IMPORTANT]
40
+ > **`/forge` 的权限严格限定**:
41
+ >
42
+ >
43
+ > | 能力 | 允许 | 禁止 |
44
+ > | --------------------------- | --- | --- |
45
+ > | 在 `src/` 下编写业务代码 | ✅ | |
46
+ > | 编写单元测试 | ✅ | |
47
+ > | 更新 `05_TASKS.md` 的 checkbox | ✅ | |
48
+ > | 运行测试和 lint | ✅ | |
49
+ > | Git commit 已完成的任务 | ✅ | |
50
+ > | 更新 `AGENTS.md` 当前状态 | ✅ | |
51
+ > | **修改 `.anws/` 下任何设计文档** | | ❌ |
52
+ > | **创建 TASKS.md 中不存在的功能** | | ❌ |
53
+ > | **降级或跳过验收标准** | | ❌ |
54
+ > | **引入 ADR 未批准的第三方依赖** | | ❌ |
55
+ > | **修改已有代码的公共接口(除非任务明确要求)** | | ❌ |
56
+ > | **"顺便"优化/重构不在任务范围内的代码** | | ❌ |
57
+ >
58
+
59
+ ---
60
+
61
+ ## ⚠️ CRITICAL 反自由发挥护栏
62
+
63
+ > [!IMPORTANT]
64
+ > **你只实现任务描述和验收标准中明确要求的内容。**
65
+ >
66
+ > - ❌ "我觉得加个缓存会更好" → **禁止**
67
+ > - ❌ "顺便优化了一下这个函数" → **禁止**
68
+ > - ❌ "虽然文档没提到,但加了错误处理" → **禁止**(除非验收标准要求)
69
+ > - "这个设计不太合理,我自己调整了" **禁止**
70
+ > - ✅ 严格按任务描述 + 验收标准实现
71
+ > - ✅ 发现任何问题 → 报告用户 → 用户通过相应工作流修改 → 修改后再继续
72
+
73
+ ---
74
+
75
+ ## ⚠️ CRITICAL 冲突处理协议
76
+
77
+ > [!IMPORTANT]
78
+ > **以下情况必须立即停止编码,报告用户**:
79
+ >
80
+ >
81
+ > | 冲突类型 | 处理方式 |
82
+ > | ---------------------- | ----------------------------------- |
83
+ > | 文档之间互相矛盾 | 🛑 停止 → 列出矛盾点用户通过 `/change` 修复 |
84
+ > | 任务描述模糊/不完整 | 🛑 停止 → 列出疑问用户确认或通过 `/change` 补充 |
85
+ > | 依赖的前置任务产物与预期不符 | 🛑 停止 → 报告差异用户决定 |
86
+ > | 发现设计不可实现 | 🛑 停止 → 记录原因 → 建议用户运行 `/challenge` |
87
+ > | 需要 ADR 未批准的新依赖 | 🛑 停止 → 说明理由用户决定是否创建新 ADR |
88
+ > | 需要的系统设计文档不存在 | 🛑 停止 → 引导用户运行 `/design-system` |
89
+ > | **发现未定义但必须新增/修改的公共契约** | 🛑 停止 → 生成回流说明 → 跳转 `/change` |
90
+ >
86
91
  >
87
92
  > **核心原则: 宁可停下来问,也不要猜测。**
88
-
89
- ---
90
-
91
- ## Step 0: 恢复与定位 (Recovery & Locate)
92
-
93
- **目标**: 找到 Source of Truth,判断是新开始还是断点续做。
94
-
95
- 1. **扫描版本**:
96
- 扫描 `.anws/` 目录,找到最新版本号 `v{N}`。
97
-
98
- 2. **确定 TARGET_DIR**:
99
- **TARGET_DIR** = `.anws/v{N}`(数字最大的文件夹)。
100
-
101
- 3. **检查必需文件**:
102
- - [ ] `{TARGET_DIR}/01_PRD.md` 存在
103
- - [ ] `{TARGET_DIR}/02_ARCHITECTURE_OVERVIEW.md` 存在
104
- - [ ] `{TARGET_DIR}/05_TASKS.md` 存在
105
-
106
- 4. **检查推荐文件** (缺失则警告):
107
- - [ ] `{TARGET_DIR}/04_SYSTEM_DESIGN/` 存在且非空
108
- - 如缺失: "⚠️ 建议先运行 `/design-system`。缺少详细设计可能导致实现质量下降。"
109
-
110
- 5. **如果必需文件缺失**: 报错并提示运行 `/genesis` + `/blueprint`。
111
93
 
112
- 6. **Challenge 门禁检查**:
113
- - 如果 `{TARGET_DIR}/07_CHALLENGE_REPORT.md` 存在,必须先读取最新审查结果
114
- - 如存在**未处理 Critical** **立即阻塞**,不得进入 `/forge`
115
- - 如存在**未处理 High** → 仅允许用户显式签名放行;AUTO 模式不得自动通过
116
- - 如无未处理高严重度问题 → 继续
94
+ ---
95
+
96
+ ## Step 0: 恢复与定位 (Recovery & Locate)
117
97
 
98
+ **目标**: 找到 Source of Truth,判断是新开始还是断点续做。
99
+
100
+ 1. **扫描版本**:
101
+ 扫描 `.anws/` 目录,找到最新版本号 `v{N}`。
102
+ 2. **确定 TARGET_DIR**:
103
+ **TARGET_DIR** = `.anws/v{N}`(数字最大的文件夹)。
104
+ 3. **检查必需文件**:
105
+ - `{TARGET_DIR}/01_PRD.md` 存在
106
+ - `{TARGET_DIR}/02_ARCHITECTURE_OVERVIEW.md` 存在
107
+ - `{TARGET_DIR}/05_TASKS.md` 存在
108
+ 4. **检查推荐文件** (缺失则警告):
109
+ - `{TARGET_DIR}/04_SYSTEM_DESIGN/` 存在且非空
110
+ - 如缺失: "⚠️ 建议先运行 `/design-system`。缺少详细设计可能导致实现质量下降。"
111
+ 5. **如果必需文件缺失**: 报错并提示运行 `/genesis` + `/blueprint`。
112
+ 6. **Challenge 门禁检查**:
113
+ - 如果 `{TARGET_DIR}/07_CHALLENGE_REPORT.md` 存在,必须先读取最新审查结果
114
+ - 如存在**未处理 Critical** → **立即阻塞**,不得进入 `/forge`
115
+ - 如存在**未处理 High** → 仅允许用户显式签名放行;AUTO 模式不得自动通过
116
+ - 如无未处理高严重度问题 → 继续
118
117
  7. **断点续做判定**:
119
- - 读取 `AGENTS.md` 的 `🌊 Wave` 块
118
+ - 读取 `AGENTS.md` 的 `🌊 Wave` 块
120
119
  - 如果存在波次信息:
121
120
  - 查看波次任务列表,对照 `05_TASKS.md` 中的 checkbox
122
121
  - 如有未完成任务 → **断点续做** → 跳入 Step 3 继续未完成的任务
123
122
  - 如全部完成 → **新波次** → 继续 Step 1
124
123
  - 如果不存在 → **新开始** → 继续 Step 1
125
-
126
124
  8. **模式判定**:
127
- - 如用户输入 `/forge自动` 或明确要求自动连续推进 → 进入 **AUTO 模式**
128
- - 否则 → 默认 **普通模式**
129
-
125
+ - 如用户输入 `/forge自动` 或明确要求自动连续推进 → 进入 **AUTO 模式**
126
+ - 否则 → 默认 **普通模式**
130
127
  9. **Git 上下文检查**:
131
- - 读取当前 branch
132
- - 仓库只认两类分支:`main` 和 `feature/*`
128
+ - 读取当前 branch
129
+ - 仓库只认两类分支:`main` 和 `feature/`*
133
130
  - `main` 只保存已验证通过、可视为稳定的状态
134
- - 所有正常开发默认都在 `feature/*` 上完成;只要不是单文件小修,就不要直接在 `main` 上改
131
+ - 所有正常开发默认都在 `feature/`* 上完成;只要不是单文件小修,就不要直接在 `main` 上改
135
132
  - 如当前在 `main` 且本次不是单文件小修 → 创建并切换到 `feature/{topic-slug}`
136
- - 如当前已在 `feature/*` 且仍属于同一交付主题 → 继续在当前 branch 上推进,不因补任务、补契约、补测试而反复新开分支
137
- - 如当前已在 `feature/*` 且主题未变,即使经历 `/change` 回流,也继续使用同一条分支
138
- - 只有 `/genesis` 触发、版本前提变化时,旧 `feature/*` 才冻结;新版本应从最新 `main` 重新开一条新的 `feature/*`
133
+ - 如当前已在 `feature/`* 且仍属于同一交付主题 → 继续在当前 branch 上推进,不因补任务、补契约、补测试而反复新开分支
134
+ - 如当前已在 `feature/`* 且主题未变,即使经历 `/change` 回流,也继续使用同一条分支
135
+ - 只有 `/genesis` 触发、版本前提变化时,旧 `feature/`* 才冻结;新版本应从最新 `main` 重新开一条新的 `feature/`*
139
136
  - 如进入 `/change` 前需要保护点,可先在当前 `feature/*` 上创建 checkpoint commit:`checkpoint: before {topic}`
140
137
 
141
138
  > [!IMPORTANT]
142
139
  > **Git 判断口诀**:
143
- > 同主题就不换分支,`/change` 不换分支,`/genesis` 才换分支;开发都在 `feature/*`,稳定结果才进 `main`,tag 只打 `main`。
144
-
145
- ---
146
-
147
- ## Step 1: 波次规划 (Wave Planning)
148
-
149
- **目标**: 从任务清单中挑选一组可执行的任务,组成一个"波次"。
150
-
140
+ > 同主题就不换分支,`/change` 不换分支,`/genesis` 才换分支;开发都在 `feature/`*,稳定结果才进 `main`,tag 只打 `main`。
141
+
142
+ ---
143
+
144
+ ## Step 1: 波次规划 (Wave Planning)
145
+
146
+ **目标**: 从任务清单中挑选一组可执行的任务,组成一个"波次"。
147
+
151
148
  > [!IMPORTANT]
152
149
  > **你不能自己决定波次内容,必须在检查点获得签名后再开始。**
153
150
  >
154
151
  > **为什么?** 用户对项目优先级和进度节奏有最终决定权;`/forge自动` 只是把签名从用户改为 `AUTO`,不是删除检查点。
155
-
156
- ### 1.1 扫描可执行任务
157
-
158
- 读取 `{TARGET_DIR}/05_TASKS.md`,找出所有满足以下条件的任务:
159
- - `- [ ]` 未完成
160
- - 依赖的任务(`**依赖**` 字段)均已完成 `- [x]`
161
-
162
- ### 1.2 分组与建议
163
-
164
- 按以下策略组织一个波次:
165
-
166
- | 策略 | 说明 |
167
- | ---------------- | -------------------------------------------- |
168
- | **同系统优先** | 属于同一 System 的任务分到一波(共享上下文) |
169
- | **文档依赖收敛** | 引用相同文档的任务分到一波(减少加载量) |
170
- | **2-5 个/波** | 过多→上下文溢出;过少→效率低 |
171
-
172
- ### 1.3 波次确认
173
-
174
- 向用户展示:
175
-
176
- ```markdown
177
- ## 📋 Wave {N} 建议
178
-
179
- | 任务 ID | 标题 | 依赖文档 | 估时 |
180
- | -------- | ---- | ------------------------------- | :---: |
181
- | T{X.Y.Z} | ... | `04_SYSTEM_DESIGN/core.md` §... | Xh |
182
- | ... | ... | ... | ... |
183
-
184
- **波次总估时**: ~Xh
185
- **需加载文档**: [文档列表]
186
-
187
- 确认此波次?或调整任务组合?
188
- ```
189
-
152
+
153
+ ### 1.1 扫描可执行任务
154
+
155
+ 读取 `{TARGET_DIR}/05_TASKS.md`,找出所有满足以下条件的任务:
156
+
157
+ - `- [ ]` 未完成
158
+ - 依赖的任务(`**依赖`** 字段)均已完成 `- [x]`
159
+
160
+ ### 1.2 分组与建议
161
+
162
+ 按以下策略组织一个波次:
163
+
164
+
165
+ | 策略 | 说明 |
166
+ | ----------- | -------------------------- |
167
+ | **同系统优先** | 属于同一 System 的任务分到一波(共享上下文) |
168
+ | **文档依赖收敛** | 引用相同文档的任务分到一波(减少加载量) |
169
+ | **2-5 个/波** | 过多→上下文溢出;过少→效率低 |
170
+
171
+
172
+ ### 1.3 波次确认
173
+
174
+ 向用户展示:
175
+
176
+ ```markdown
177
+ ## 📋 Wave {N} 建议
178
+
179
+ | 任务 ID | 标题 | 依赖文档 | 估时 |
180
+ | -------- | ---- | ------------------------------- | :---: |
181
+ | T{X.Y.Z} | ... | `04_SYSTEM_DESIGN/core.md` §... | Xh |
182
+ | ... | ... | ... | ... |
183
+
184
+ **波次总估时**: ~Xh
185
+ **需加载文档**: [文档列表]
186
+
187
+ 确认此波次?或调整任务组合?
188
+ ```
189
+
190
190
  **签名检查点** ⚠️: 获得签名后,将确认的波次写入 `AGENTS.md` 的 `🌊 Wave` 块:
191
-
192
- ```markdown
193
- ### 🌊 Wave {N} — {波次目标简述}
194
- T{X.Y.Z}, T{X.Y.Z}, T{X.Y.Z}
195
- ```
196
-
191
+
192
+ ```markdown
193
+ ### 🌊 Wave {N} — {波次目标简述}
194
+ T{X.Y.Z}, T{X.Y.Z}, T{X.Y.Z}
195
+ ```
196
+
197
197
  然后进入 Step 2。
198
198
 
199
199
  签名规则:
200
+
200
201
  - 普通模式 → 等待用户签名
201
202
  - AUTO 模式 → 保留波次展示,并将签名记为 `AUTO` 后继续执行
202
-
203
- ---
204
-
205
- ## Step 2: 上下文加载 (Context Loading)
206
-
207
- **目标**: 按需加载本波次需要的文档,不多加载一份。
208
-
209
- > [!IMPORTANT]
210
- > **只加载当前波次需要的文档。不要"以防万一"多加载。**
211
- >
212
- > **为什么?** 上下文窗口有限,无关文档是噪声。
213
-
214
- ### 加载层级
215
-
216
- | 层级 | 内容 | 目的 |
217
- | :-------------: | ------------------------------------------------------------------------ | -------------------- |
218
- | **L0 全局** | `02_ARCHITECTURE_OVERVIEW.md` — 仅系统清单和总体架构图部分 | 定位感 |
219
- | **L1 波级** | 本波涉及系统的 `04_SYSTEM_DESIGN/{system}.md`(L0 导航层)+ 相关 ADR | 设计规范、接口契约 |
220
- | **L1.5 实现级** | 本波任务 `**输入**` 字段中明确引用的 `{system}.detail.md` **对应 §章节** | 算法伪代码、配置常量 |
221
- | **L2 任务级** | 每个任务的 `**输入**` 字段指定的精确文档章节 | 实现细节 |
222
-
223
- > [!IMPORTANT]
224
- > **L1.5 加载规则(CRITICAL)**:
225
- >
226
- > - `{system}.md`(L0 导航层)**始终加载** ← 这是默认行为
227
- > - `{system}.detail.md`(L1 实现层)**仅当任务 `**输入**` 字段明确引用时才加载**
228
- > - 如果任务 `**输入**` 写的是 "`core.md` §战斗系统" 只加载 `core.md` 对应章节
229
- > - 如果任务 `**输入**` 写的是 "`core.detail.md` §3.5" 才加载 `core.detail.md` 对应章节
230
- > - **禁止**"以防万一"加载整个 `.detail.md`
231
-
232
- **L1.5 Step 3 的每个任务开始时按需加载,不在此处全部加载。**
233
-
234
- ### 加载步骤
235
-
236
- 1. **L0**: 读取 `{TARGET_DIR}/02_ARCHITECTURE_OVERVIEW.md` 的系统清单部分
237
- 2. **L1**: 根据本波任务涉及的系统,读取对应的:
238
- - `{TARGET_DIR}/04_SYSTEM_DESIGN/{system-id}.md`
239
- - `{TARGET_DIR}/03_ADR/` 中相关的 ADR(由任务的"输入"字段指引)
240
-
241
- ---
242
-
243
- ## Step 3: 任务执行循环 (Task Execution Loop)
244
-
245
- **目标**: 逐个完成波次内的任务:思考→编码→验证→提交。
246
-
247
- > [!IMPORTANT]
248
- > **严格按以下流程执行每个任务,不跳步。**
249
-
250
- 对本波次中的每个任务,执行以下循环:
251
-
252
- ---
253
-
254
- ### 3.1 加载任务级上下文
255
-
256
- 读取该任务 `**输入**` 字段指定的文档和章节。
257
- 如果任务依赖已完成的前置任务,浏览相关已有代码了解接口。
258
-
259
- > [!IMPORTANT]
260
- > **开始写代码前,必须对本波次每个任务都完成一次依赖读取。**
261
- >
262
- > - 至少读取该任务 `**输入**` 字段指定的文档/章节
263
- > - 如任务依赖其他任务,补读前置任务相关接口或实现代码
264
- > - 未完成该任务的依赖读取,不得开始该任务编码
265
- >
266
- > **为什么?** `/forge` 允许按本波次批量推进和批量回填 checkbox,但前提是每个任务都已完成最小上下文装载,不能只看标题就动手。
267
-
268
- ---
269
-
270
- ### 3.2 Think Before Code (编码前思考)
271
-
272
- > [!IMPORTANT]
273
- > **编码前必须先思考,思考方式基于模型能力和任务复杂度。**
274
- >
275
- > **核心判断规则**:
276
- > - **无 CoT 模型** → **必须调用** `sequential-thinking` CLI
277
- > - **有 CoT 模型 + 简单任务**(步骤 < 5,无歧义)→ 用思考引导问题组织自然 CoT
278
- > - **有 CoT 模型 + 复杂任务**(需要多方案比较、修正前提)→ 调用 `sequential-thinking` CLI
279
- >
280
- > **为什么?** 错误的理解导致返工,提前发现问题比事后修复便宜 10 倍。
281
-
282
- **思考引导** (必须逐个回答):
283
- 1. "这个任务要我做什么?输出哪些文件?"
284
- 2. "与哪些已有代码/接口交互?接口签名是什么?"
285
- 3. "验收标准里最关键的约束是什么?"
286
- 4. "有没有歧义的地方?有没有不确定的点?"
287
-
288
- - 如发现歧义或不确定 → 🛑 **触发冲突处理协议**,停止并报告用户
289
- - 如无问题 → 继续 3.3
290
-
291
- ---
292
-
203
+
204
+ ---
205
+
206
+ ## Step 2: 上下文加载 (Context Loading)
207
+
208
+ **目标**: 按需加载本波次需要的文档,不多加载一份。
209
+
210
+ > [!IMPORTANT]
211
+ > **只加载当前波次需要的文档。不要"以防万一"多加载。**
212
+ >
213
+ > **为什么?** 上下文窗口有限,无关文档是噪声。
214
+
215
+ ### 加载层级
216
+
217
+
218
+ | 层级 | 内容 | 目的 |
219
+ | ------------ | ------------------------------------------------------ | ---------- |
220
+ | **L0 全局** | `02_ARCHITECTURE_OVERVIEW.md` 仅系统清单和总体架构图部分 | 定位感 |
221
+ | **L1 波级** | 本波涉及系统的 `04_SYSTEM_DESIGN/{system}.md`(L0 导航层)+ 相关 ADR | 设计规范、接口契约 |
222
+ | **L1.5 实现级** | 本波任务 `**输入`** 字段中明确引用的 `{system}.detail.md` **对应 §章节** | 算法伪代码、配置常量 |
223
+ | **L2 任务级** | 每个任务的 `**输入`** 字段指定的精确文档章节 | 实现细节 |
224
+
225
+
226
+ > [!IMPORTANT]
227
+ > **L1.5 加载规则(CRITICAL)**:
228
+ >
229
+ > - `{system}.md`(L0 导航层)**始终加载** 这是默认行为
230
+ > - `{system}.detail.md`(L1 实现层)**仅当任务 `**输入`** 字段明确引用时才加载**
231
+ > - 如果任务 `**输入`** 写的是 "`core.md` §战斗系统" → 只加载 `core.md` 对应章节
232
+ > - 如果任务 `**输入`** 写的是 "`core.detail.md` §3.5" → 才加载 `core.detail.md` 对应章节
233
+ > - **禁止**"以防万一"加载整个 `.detail.md`
234
+
235
+ **L1.5 在 Step 3 的每个任务开始时按需加载,不在此处全部加载。**
236
+
237
+ ### 加载步骤
238
+
239
+ 1. **L0**: 读取 `{TARGET_DIR}/02_ARCHITECTURE_OVERVIEW.md` 的系统清单部分
240
+ 2. **L1**: 根据本波任务涉及的系统,读取对应的:
241
+ - `{TARGET_DIR}/04_SYSTEM_DESIGN/{system-id}.md`
242
+ - `{TARGET_DIR}/03_ADR/` 中相关的 ADR(由任务的"输入"字段指引)
243
+
244
+ ---
245
+
246
+ ## Step 3: 任务执行循环 (Task Execution Loop)
247
+
248
+ **目标**: 逐个完成波次内的任务:思考→编码→验证→提交。
249
+
250
+ > [!IMPORTANT]
251
+ > **严格按以下流程执行每个任务,不跳步。**
252
+
253
+ 对本波次中的每个任务,执行以下循环:
254
+
255
+ ---
256
+
257
+ ### 3.1 加载任务级上下文
258
+
259
+ 读取该任务 `**输入`** 字段指定的文档和章节。
260
+ 如果任务依赖已完成的前置任务,浏览相关已有代码了解接口。
261
+
262
+ > [!IMPORTANT]
263
+ > **开始写代码前,必须对本波次每个任务都完成一次依赖读取。**
264
+ >
265
+ > - 至少读取该任务 `**输入`** 字段指定的文档/章节
266
+ > - 如任务依赖其他任务,补读前置任务相关接口或实现代码
267
+ > - 未完成该任务的依赖读取,不得开始该任务编码
268
+ >
269
+ > **为什么?** `/forge` 允许按本波次批量推进和批量回填 checkbox,但前提是每个任务都已完成最小上下文装载,不能只看标题就动手。
270
+
271
+ ---
272
+
273
+ ### 3.2 Think Before Code (编码前思考)
274
+
275
+ > [!IMPORTANT]
276
+ > **编码前必须先思考,思考方式基于模型能力和任务复杂度。**
277
+ >
278
+ > **核心判断规则**:
279
+ >
280
+ > - **无 CoT 模型** → **必须调用** `sequential-thinking` CLI
281
+ > - **有 CoT 模型 + 简单任务**(步骤 < 5,无歧义)→ 用思考引导问题组织自然 CoT
282
+ > - **有 CoT 模型 + 复杂任务**(需要多方案比较、修正前提)→ 调用 `sequential-thinking` CLI
283
+ >
284
+ > **为什么?** 错误的理解导致返工,提前发现问题比事后修复便宜 10 倍。
285
+
286
+ **思考引导** (必须逐个回答):
287
+
288
+ 1. "这个任务要我做什么?输出哪些文件?"
289
+ 2. "与哪些已有代码/接口交互?接口签名是什么?"
290
+ 3. "验收标准里最关键的约束是什么?"
291
+ 4. "有没有歧义的地方?有没有不确定的点?"
292
+
293
+ - 如发现歧义或不确定 → 🛑 **触发冲突处理协议**,停止并报告用户
294
+ - 如无问题 → 继续 3.3
295
+
296
+ ---
297
+
293
298
  ### 3.3 编码实现
294
-
295
- > [!IMPORTANT]
296
- > **严格按设计文档和验收标准编码,不多不少。**
297
-
299
+
300
+ > [!IMPORTANT]
301
+ > **严格按设计文档和验收标准编码,不多不少。**
302
+
298
303
  - 代码结构遵循 `02_ARCHITECTURE_OVERVIEW.md` 定义的目录结构
299
304
  - 接口签名遵循 `04_SYSTEM_DESIGN/{system}.md` 的定义
300
305
  - 具体实现遵循任务描述和验收标准
@@ -304,36 +309,39 @@ T{X.Y.Z}, T{X.Y.Z}, T{X.Y.Z}
304
309
  > **契约回流规则(CRITICAL)**:
305
310
  >
306
311
  > 如果实现过程中发现需要新增或修改以下任一“对外可观察契约”,而该契约未在当前任务或设计文档中显式定义:
312
+ >
307
313
  > - API / CLI 参数语义
308
314
  > - 配置结构 / 文件格式 / 状态格式
309
315
  > - 错误语义 / 返回结构
310
316
  > - 跨系统接口 / 持久化结构
311
317
  >
312
318
  > 则必须停止编码,生成最小回流说明,并跳转 `/change`。不得在 `/forge` 中偷偷补写这些契约。
313
-
314
- ---
315
-
316
- ### 3.4 验证 (Verify)
317
-
318
- **根据任务的验证类型执行相应验证**,并按类型分类证据:
319
-
319
+
320
+ ---
321
+
322
+ ### 3.4 验证 (Verify)
323
+
324
+ **根据任务的验证类型执行相应验证**,并按类型分类证据:
325
+
320
326
  > [!IMPORTANT]
321
327
  > **验证类型决定验证方式和证据要求**:
322
328
  >
323
- > | 验证类型 | 验证方式 | 证据要求 | 标记 |
324
- > |---------|---------|---------|:----:|
325
- > | **单元测试** | 运行 `npm test` 或等效命令 | 终端输出:`X passed, 0 failed` | ✅/❌ |
326
- > | **集成测试** | 运行集成测试脚本 | 终端输出或日志 | ✅/❌ |
327
- > | **E2E测试** | 运行 E2E 测试脚本 | 测试报告或截图 | ✅/❌ |
328
- > | **冒烟测试** | 运行最小真实路径检查 | 关键路径日志、截图或终端输出 | ✅/❌ |
329
- > | **回归测试** | 运行受影响能力的最小回归测试集 | 明确列出复验范围 + 测试输出 | ✅/❌ |
330
- > | **编译检查** | 运行 `npm run build` 或等效命令 | 终端输出:`Build succeeded` | ✅/❌ |
331
- > | **Lint检查** | 运行 `npm run lint` 或等效命令 | 终端输出:`0 problems` | ✅/❌ |
332
- > | **手动验证** | 人工检查 | 用户确认 | |
333
-
334
- ```markdown
335
- ### ✅ 验证报告: T{X.Y.Z}
336
-
329
+ >
330
+ > | 验证类型 | 验证方式 | 证据要求 | 标记 |
331
+ > | ---------- | ------------------------ | ------------------------- | --- |
332
+ > | **单元测试** | 运行 `npm test` 或等效命令 | 终端输出:`X passed, 0 failed` | ✅/❌ |
333
+ > | **集成测试** | 运行集成测试脚本 | 终端输出或日志 | ✅/❌ |
334
+ > | **E2E测试** | 运行 E2E 测试脚本 | 测试报告或截图 | ✅/❌ |
335
+ > | **冒烟测试** | 运行最小真实路径检查 | 关键路径日志、截图或终端输出 | ✅/❌ |
336
+ > | **回归测试** | 运行受影响能力的最小回归测试集 | 明确列出复验范围 + 测试输出 | ✅/❌ |
337
+ > | **编译检查** | 运行 `npm run build` 或等效命令 | 终端输出:`Build succeeded` | ✅/❌ |
338
+ > | **Lint检查** | 运行 `npm run lint` 或等效命令 | 终端输出:`0 problems` | ✅/❌ |
339
+ > | **手动验证** | 人工检查 | 用户确认 | ⏳ |
340
+ >
341
+
342
+ ```markdown
343
+ ### ✅ 验证报告: T{X.Y.Z}
344
+
337
345
  **验证类型**: [单元测试 | 集成测试 | E2E测试 | 冒烟测试 | 回归测试 | 编译检查 | Lint检查 | 手动验证]
338
346
 
339
347
  **自动验证** (单元测试/集成测试/E2E/冒烟/回归/编译/Lint):
@@ -341,133 +349,155 @@ T{X.Y.Z}, T{X.Y.Z}, T{X.Y.Z}
341
349
  | -------- | ---- | -------- | :--: |
342
350
  | 测试通过 | `npm test` | 12 passed, 0 failed | ✅ |
343
351
  | 构建成功 | `npm run build` | Build succeeded | ✅ |
344
-
345
- **手动验证**:
346
- | 验收标准 | 说明 | 状态 |
347
- | -------- | ---- | :--: |
348
- | 页面显示正确 | 需要打开浏览器确认渲染效果 | ⏳ |
349
- ```
350
-
352
+
353
+ **手动验证**:
354
+ | 验收标准 | 说明 | 状态 |
355
+ | -------- | ---- | :--: |
356
+ | 页面显示正确 | 需要打开浏览器确认渲染效果 | ⏳ |
357
+ ```
358
+
351
359
  按任务的 `**验证类型**` 和 `**验证说明**` 字段执行检查。
352
360
 
353
361
  > [!IMPORTANT]
354
362
  > **冒烟测试与回归测试执行规则**:
363
+ >
355
364
  > - 冒烟测试必须验证少量真实关键路径是否可运行,不得退化成“跑一下已有脚本就算过”
356
365
  > - 回归测试必须显式写出本次复验覆盖了哪些既有能力,避免泛化成“随便跑点测试”
357
366
  > - 若任务声明了冒烟测试或回归测试,但 `验证说明` 无法指导执行,应视为验证定义不完整,先修任务定义或回流 `/change`
358
367
 
359
- - 自动验证类型全部 ✅ 且无手动验证项 → 继续 3.5
360
- - 自动验证类型全部 ✅ 但有手动验证项 → 先进入 **3.4.5 静态忠实度审查**,再继续 3.5(手动项随后确认)
361
368
  - 自动验证类型有 ❌ → **修复后重新验证**,不得跳过
369
+ - 自动验证类型全部 ✅ → 按下方 **「3.4.5 / 3.4.6 频控」** 决定是否在本任务执行 **3.4.5 / 3.4.6**,然后进入 **3.5 → 3.6**。跳过或顺延须在任务备注 / Wave 记录中写明依据(与对应 **skill** 的跳过协议一致)。
370
+
371
+ ### 3.4.5 / 3.4.6 频控(默认)
372
+
373
+ > [!IMPORTANT]
374
+ > **`code-reviewer`(3.4.5)默认不在每个任务后强制执行**(避免噪声与上下文浪费)。**`e2e-testing-guide`(3.4.6)** 的触发与 **3.4.5 频控相互独立** — UI/E2E 类任务只要 skill 触发就应执行 3.4.6,即使不是 Wave 最后一个任务。
375
+ >
376
+ > **3.4.5(`code-reviewer`)默认节奏**:
377
+ >
378
+ > - **主路径**:在本 **Wave** 的 **最后一个任务** 完成 3.4 的自动验证后,集中执行 **一次** 3.4.5(审查范围为本 Wave 已落地变更)。
379
+ > - **Wave 内较早的任务**:通常 **跳过** 3.4.5,直接进入 **3.5 → 3.6**;若跳过,在任务或 Wave 备注标注依据(如 `3.4.5 deferred — wave cadence`)。
380
+ > - **兜底**:若已连续 **约 2~3 个 Wave** 未执行 3.4.5,应在下一 Wave **Step 1** 之前或上一 Wave **Step 4** 末尾 **补跑一次**(范围与证据见 skill)。
381
+ > - **例外**(可改为本任务后立即跑 3.4.5):任务/用户显式要求 **逐任务静态审查**;**公共契约高风险**;**`/forge自动` 长会话**需加密审查 — 仍须服从 **`code-reviewer` skill** 的跳过/加密协议。
382
+ >
383
+ > **3.4.6(`e2e-testing-guide`)与浏览器工具**:
384
+ >
385
+ > - 未触发 skill → 跳过 + 一行原因 → **3.5**。
386
+ > - **具备浏览器自动化能力时**:按 skill — **先** 产出/对齐 Testing Guide,**再在用户授权下** 执行真实浏览器步骤。
387
+ > - **无浏览器工具**:**guide-only**,不得在无证据时声称 E2E/冒烟已通过。
362
388
 
363
389
  ---
364
390
 
365
391
  ### 3.4.5 静态忠实度审查 (Code Fidelity Check)
366
392
 
367
- **目标**: 在请求用户进行手动验证前,先用纯静态方式检查实现是否已经偏离契约与任务承诺。
393
+ (按频控:本任务执行;或顺延至 Wave 最后一个任务 / 兜底补跑 — 见上。)
368
394
 
369
- > [!IMPORTANT]
370
- > 当任务存在手动验证项,或本波次触及公共契约 / 基础共享逻辑 / 高风险变更时,应先运行 `code-reviewer`。
371
- >
372
- > **为什么?** 手动验证适合确认最终体验,但不该替代“实现是否忠于契约”的静态检查。AUTO 模式下尤其不能把这一步省掉。
395
+ 完整遵从 `**code-reviewer`** skill(输入、Lens、输出、跳过协议均以 skill 为准)。
396
+
397
+ **执行方式**:宿主支持子代理(Task / 并行会话等)时 **优先**委派子代理执行本小节;若无子代理能力,则由**当前会话**按同一 skill 执行(不得以无子代理为由缩水审查)。
398
+
399
+ **门禁路由**:Critical / High → 当前版本内可收敛则 **`/change`**;撼动需求/架构/ADR 前提则 **`/genesis`**。无阻塞 → **3.4.6**(若触发)或 **3.5**。
400
+
401
+ ---
402
+
403
+ ### 3.4.6 浏览器与 E2E 验证指南
373
404
 
374
- 执行规则:
375
- - 调用 `code-reviewer`,输入当前工作目录 `src/` 与 `{TARGET_DIR}` 下的 PRD / Architecture / ADR / System Design / TASKS
376
- - `code-reviewer` 发现 **Critical / High**:
377
- - 若问题属于当前版本内可收敛的契约 / 任务 / 测试 / 回流缺口 → 停止并进入 `/change`
378
- - 若问题已经触及需求前提 / 架构前提 / ADR 核心前提停止并升级 `/genesis`
379
- - 如无高严重度阻塞 → 继续后续遵从性检查与手动验证交接
405
+ 完整遵从 `**e2e-testing-guide`** skill(触发条件、guide-only、证据规则均以 skill 为准)。
406
+
407
+ 若宿主具备浏览器自动化:**先 Guide、后实机(用户授权)**;无工具则 guide-only,不得冒充已测。
408
+
409
+ 未触发 `E2E guide skipped` + 一行原因**3.5**。
380
410
 
381
411
  ---
382
412
 
383
413
  ### 3.5 遵从性检查 (Compliance Check)
384
-
385
- **检查清单** (每条都要回答):
386
-
387
- | # | 检查项 | 通过? |
388
- | --- | ----------------------------------- | :----: |
389
- | 1 | 代码接口与 SYSTEM_DESIGN 定义一致? | ✅/❌ |
390
- | 2 | 未引入 ADR 未批准的依赖? | ✅/❌ |
391
- | 3 | 未添加任务范围外的功能? | ✅/❌ |
392
- | 4 | 代码风格与项目一致,lint 通过? | ✅/❌ |
393
- | 5 | 所有验收标准已验证通过? | ✅/❌ |
394
- | 6 | 所有可执行验收标准有足够证据(终端/日志/截图)? | ✅/❌ |
395
- | 7 | 需人工确认的验收标准已标记 ⏳? | ✅/❌ |
396
-
397
- - 全部 ✅ → 继续 3.6
398
- - 有 ❌ → **修复**
399
-
400
- ---
401
-
402
- ### 3.6 提交 (Commit)
403
-
414
+
415
+ **检查清单** (每条都要回答):
416
+
417
+
418
+ | # | 检查项 | 通过? |
419
+ | --- | ------------------------- | --- |
420
+ | 1 | 代码接口与 SYSTEM_DESIGN 定义一致? | ✅/❌ |
421
+ | 2 | 未引入 ADR 未批准的依赖? | ✅/❌ |
422
+ | 3 | 未添加任务范围外的功能? | ✅/❌ |
423
+ | 4 | 代码风格与项目一致,lint 通过? | ✅/❌ |
424
+ | 5 | 所有验收标准已验证通过? | ✅/❌ |
425
+ | 6 | 所有可执行验收标准有足够证据(终端/日志/截图)? | ✅/❌ |
426
+ | 7 | 需人工确认的验收标准已标记 ⏳? | ✅/❌ |
427
+
428
+
429
+ - 全部 ✅ → 继续 3.6
430
+ - 有 ❌ → **修复**
431
+
432
+ ---
433
+
434
+ ### 3.6 提交 (Commit)
435
+
404
436
  1. **Git commit**:
405
- - Task commit 一律落在**当前工作 branch** 上
437
+ - Task commit 一律落在**当前工作 branch** 上
406
438
  - 默认当前工作 branch 为本次交付对应的 `feature/*`;只有 Step 0 明确判定为单文件小修时才允许留在 `main`
407
439
  - 消息格式: `{type}({scope}): T{X.Y.Z} — 任务标题`
408
- - `type` ∈ `feat | fix | refactor | docs | test | chore`
409
- - `scope` 默认使用 `system-id`;workflow/skill 改动可用对应名称
410
- - 例: `feat(core): T2.1.1 — 地形与资源数据模型`
411
- - 例: `fix(challenge): T4.2.3 — 严重度语义对齐`
412
-
413
- 2. **任务完成持久化** (立即回写):
414
-
415
- > [!IMPORTANT]
416
- > **每完成一个 task 并通过验证,立即回写 `05_TASKS.md`**。
417
- > 这是进度持久化的核心机制——即使 AI 上下文丢失或会话崩溃,
418
- > 下次加载 TASKS.md 就能看到精确进度。
419
- > 配合 AGENTS.md Wave 块形成**双层恢复机制**: 粗粒度(Wave) + 细粒度(Task checkbox)。
420
-
421
- - 本波次允许批量回填已全部验证通过的任务 checkbox
422
- - 仅按 **Task ID** 精确定位并更新状态,禁止按标题模糊匹配
423
- - 将对应任务的 `- [ ]` 改为 `- [x]`
424
- - 不得顺手修改未完成、未验证或不在当前波次内的任务
425
- - 确保回写后的 `05_TASKS.md` 与实际进度一致
426
-
427
- 3. **继续下一个任务** 回到 3.1
428
-
429
- ---
430
-
431
- ## Step 4: 波次结算 (Wave Settlement)
432
-
433
- **目标**: 结算本波次,更新状态,准备下一步。
434
-
435
- ### 4.1 更新状态
436
-
437
- **更新 `AGENTS.md`**:
438
-
439
- 1. 更新 `🌊 Wave` 块为下一波的初始状态(如果已知下一波任务),或标记当前波已完成:
440
- ```markdown
441
- ### 🌊 Wave {N} ✅ — {波次目标简述}
442
- T{X.Y.Z}, T{X.Y.Z}, T{X.Y.Z}
443
- ```
444
- 2. 更新 `最近一次更新` 日期
445
-
446
- ### 4.2 波次回顾
447
-
448
- 向用户简要汇报:
449
-
450
- ```markdown
451
- ## 🌊 Wave {N} 完成
452
-
453
- **已完成**: T{X.Y.Z}, T{X.Y.Z}, ...
454
- **验证状态**: 全部通过 / 部分通过
455
- **发现的问题** (如有): ...
456
- **阻塞项** (如有): ...
457
- ```
458
-
440
+ - `type` ∈ `feat | fix | refactor | docs | test | chore`
441
+ - `scope` 默认使用 `system-id`;workflow/skill 改动可用对应名称
442
+ - 例: `feat(core): T2.1.1 — 地形与资源数据模型`
443
+ - 例: `fix(challenge): T4.2.3 — 严重度语义对齐`
444
+ 2. **任务完成持久化** (立即回写):
445
+ > [!IMPORTANT]
446
+ > **每完成一个 task 并通过验证,立即回写 `05_TASKS.md`**。
447
+ > 这是进度持久化的核心机制——即使 AI 上下文丢失或会话崩溃,
448
+ > 下次加载 TASKS.md 就能看到精确进度。
449
+ > 配合 AGENTS.md 的 Wave 块形成**双层恢复机制**: 粗粒度(Wave) + 细粒度(Task checkbox)。
450
+ - 本波次允许批量回填已全部验证通过的任务 checkbox
451
+ - 仅按 **Task ID** 精确定位并更新状态,禁止按标题模糊匹配
452
+ - 将对应任务的 `- [ ]` 改为 `- [x]`
453
+ - 不得顺手修改未完成、未验证或不在当前波次内的任务
454
+ - 确保回写后的 `05_TASKS.md` 与实际进度一致
455
+ 3. **继续下一个任务** 回到 3.1
456
+
457
+ ---
458
+
459
+ ## Step 4: 波次结算 (Wave Settlement)
460
+
461
+ **目标**: 结算本波次,更新状态,准备下一步。
462
+
463
+ ### 4.1 更新状态
464
+
465
+ **更新 `AGENTS.md`**:
466
+
467
+ 1. 更新 `🌊 Wave` 块为下一波的初始状态(如果已知下一波任务),或标记当前波已完成:
468
+
469
+ ```markdown
470
+ ### 🌊 Wave {N} ✅ — {波次目标简述}
471
+ T{X.Y.Z}, T{X.Y.Z}, T{X.Y.Z}
472
+ ```
473
+
474
+ 1. 更新 `最近一次更新` 日期
475
+
476
+ ### 4.2 波次回顾
477
+
478
+ 向用户简要汇报:
479
+
480
+ ```markdown
481
+ ## 🌊 Wave {N} 完成
482
+
483
+ **已完成**: T{X.Y.Z}, T{X.Y.Z}, ...
484
+ **验证状态**: 全部通过 / 部分通过
485
+ **发现的问题** (如有): ...
486
+ **阻塞项** (如有): ...
487
+ ```
488
+
459
489
  ### 4.3 Git commit 状态更新
460
490
 
461
491
  - Wave settlement commit 与本波次 task commits 一样,落在当前工作 branch 上
462
492
  - 如下一波仍属于同一交付主题,默认继续沿用当前 `feature/*` branch
463
493
  - `/change` 回流后恢复编码时,继续沿用当前 `feature/*` branch
464
-
465
- ```markdown
466
- chore(wave): settle wave {N} progress
467
- ```
468
-
469
- ### 4.4 下一步判定
470
-
494
+
495
+ ```markdown
496
+ chore(wave): settle wave {N} progress
497
+ ```
498
+
499
+ ### 4.4 下一步判定
500
+
471
501
  **签名检查点** ⚠️:
472
502
 
473
503
  - 还有未完成任务 → 询问:"继续下一波?";普通模式等待用户签名,AUTO 模式以 `AUTO` 签名继续 → 回到 **Step 1**
@@ -476,40 +506,41 @@ chore(wave): settle wave {N} progress
476
506
 
477
507
  > [!IMPORTANT]
478
508
  > **AUTO 模式的停止条件**:
509
+ >
479
510
  > - 命中手动验证且需要用户最终确认
480
511
  > - `/change` 评估后发现必须升级到 `/genesis`
481
512
  > - 其他工作流要求用户作出新的版本级决定
482
513
  >
483
514
  > 命中以上任一条件,AUTO 必须立即停止,等待用户批准。
484
-
485
- ---
486
-
487
- ## Step 5: 里程碑结算 (Milestone Settlement)
488
-
489
- **目标**: 当一个 Sprint 或 Phase 的所有任务完成时进行集成验证。
490
-
491
- > 仅在用户确认需要时执行此步骤。
492
-
493
- 1. **集成验证**: 运行集成测试(如有),确保跨系统功能正常
494
- 2. **更新 AGENTS.md**: 清除"当前波次"信息,更新已完成的 Sprint/Phase
515
+
516
+ ---
517
+
518
+ ## Step 5: 里程碑结算 (Milestone Settlement)
519
+
520
+ **目标**: 当一个 Sprint 或 Phase 的所有任务完成时进行集成验证。
521
+
522
+ > 仅在用户确认需要时执行此步骤。
523
+
524
+ 1. **集成验证**: 运行集成测试(如有),确保跨系统功能正常
525
+ 2. **更新 AGENTS.md**: 清除"当前波次"信息,更新已完成的 Sprint/Phase
495
526
  3. **Git 里程碑锚点**:
496
- - `feature/*` 上可创建里程碑 settlement commit,用于标记该分支已达到可验收状态
497
- - 版本 tag 与正式 release **只允许创建在 `main` 上**,不得提前打在 `feature/*` 分支上
527
+ - `feature/`* 上可创建里程碑 settlement commit,用于标记该分支已达到可验收状态
528
+ - 版本 tag 与正式 release **只允许创建在 `main` 上**,不得提前打在 `feature/`* 分支上
498
529
  4. **合流主线**:
499
- - 只有当当前 `feature/*` 分支已经达到可验收里程碑、相关验证已经通过,并且用户明确确认可以合流时,才允许合并回 `main`
500
- - 合流策略统一固定为 **merge commit**
501
- - 不使用 squash merge 或 rebase merge 作为主线合流方式
502
- - `main` 最终只保存已验证通过、可视为稳定的状态
503
- 5. **汇报用户**: 列出已完成的 Sprint/Phase 概要
504
-
505
- ---
506
-
507
- <completion_criteria>
508
- - ✅ 每个任务的验收标准全部通过
509
- - ✅ 每个任务的遵从性检查全部通过
510
- - ✅ 所有代码已 git commit,message 包含 Task ID
511
- - ✅ 所有任务已完成持久化(05_TASKS.md)
512
- - ✅ AGENTS.md 当前状态已更新
513
- - ✅ 用户已确认波次完成
514
- </completion_criteria>
515
-
530
+ - 只有当当前 `feature/`* 分支已经达到可验收里程碑、相关验证已经通过,并且用户明确确认可以合流时,才允许合并回 `main`
531
+ - 合流策略统一固定为 **merge commit**
532
+ - 不使用 squash merge 或 rebase merge 作为主线合流方式
533
+ - `main` 最终只保存已验证通过、可视为稳定的状态
534
+ 5. **汇报用户**: 列出已完成的 Sprint/Phase 概要
535
+
536
+ ---
537
+
538
+ - ✅ 每个任务的验收标准全部通过
539
+ - ✅ 每个任务的遵从性检查全部通过
540
+ - ✅ **3.4.5**:按 Wave 末次任务 / 约 2~3 Wave 兜底 / skill 例外执行 `code-reviewer`,或在任务与 Wave 记录中写明跳过或顺延依据
541
+ - ✅ **3.4.6**:按 `e2e-testing-guide` 触发;有浏览器工具则先 Guide 后实机;否则 guide-only;未触发则写明原因
542
+ - ✅ 所有代码已 git commit,message 包含 Task ID
543
+ - ✅ 所有任务已完成持久化(`05_TASKS.md`)
544
+ - ✅ `AGENTS.md` 当前状态已更新
545
+ - ✅ 用户已确认波次完成
546
+