@house365/comate 0.9.24 → 0.9.26

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.
@@ -1,131 +1,131 @@
1
- ---
2
- name: comate-build
3
- description: "comate 阶段 3:计划与构建。用 /comate-build 调用。制定计划并选择执行方式(subagent 或直接执行)实施。"
4
- ---
5
-
6
- # comate 阶段 3:计划与构建(Build)
7
-
8
- ## 前置条件
9
-
10
- - Design Doc 已创建(阶段 2 完成)
11
- - 活跃 change 存在
12
-
13
- ## 步骤
14
-
15
- ### 0. 入口状态验证
16
-
17
- ```bash
18
- COMATE="${COMATE:-$(for r in . ./.agents/skills ./.claude/skills ./.cursor/skills ./.codex/skills "$HOME"/.agents/skills "$HOME"/.claude/skills "$HOME"/.config/skills "$HOME"/.cursor/skills "$HOME"/.codex/skills "$HOME"/.gemini/skills; do
19
- [ -d "$r" ] && find "$r" -maxdepth 6 -path '*/comate/scripts/comate.sh' -type f -print -quit 2>/dev/null
20
- done | head -1)}"
21
- if [ -z "$COMATE" ]; then
22
- echo "ERROR: comate.sh 未找到,请确认 comate skill 已安装。" >&2
23
- return 1 2>/dev/null || exit 1
24
- fi
25
- bash "$COMATE" state <name> check build
26
- ```
27
-
28
- **幂等性检查**:
29
-
30
- 1. 读取 `.comate.yaml` 的 `plan`、`isolation`、`build_mode`、`tdd_mode`、`phase_step`、`phase_step_data`
31
-
32
- 2. **检查是否被依赖阻塞**(最高优先级检查):
1
+ ---
2
+ name: comate-build
3
+ description: "comate 阶段 3:计划与构建。用 /comate-build 调用。制定计划并选择执行方式(subagent 或直接执行)实施。"
4
+ ---
5
+
6
+ # comate 阶段 3:计划与构建(Build)
7
+
8
+ ## 前置条件
9
+
10
+ - Design Doc 已创建(阶段 2 完成)
11
+ - 活跃 change 存在
12
+
13
+ ## 步骤
14
+
15
+ ### 0. 入口状态验证
16
+
17
+ ```bash
18
+ COMATE="${COMATE:-$(for r in . ./.agents/skills ./.claude/skills ./.cursor/skills ./.codex/skills "$HOME"/.agents/skills "$HOME"/.claude/skills "$HOME"/.config/skills "$HOME"/.cursor/skills "$HOME"/.codex/skills "$HOME"/.gemini/skills; do
19
+ [ -d "$r" ] && find "$r" -maxdepth 6 -path '*/comate/scripts/comate.sh' -type f -print -quit 2>/dev/null
20
+ done | head -1)}"
21
+ if [ -z "$COMATE" ]; then
22
+ echo "ERROR: comate.sh 未找到,请确认 comate skill 已安装。" >&2
23
+ return 1 2>/dev/null || exit 1
24
+ fi
25
+ bash "$COMATE" state <name> check build
26
+ ```
27
+
28
+ **幂等性检查**:
29
+
30
+ 1. 读取 `.comate.yaml` 的 `plan`、`isolation`、`build_mode`、`tdd_mode`、`phase_step`、`phase_step_data`
31
+
32
+ 2. **检查是否被依赖阻塞**(最高优先级检查):
33
33
  - 若 `phase_step` 为 `build.blocked-by-<dependency>`:
34
- - 从 `phase_step` 或 `phase_step_data` 中提取依赖的 change 名称
34
+ - 从 `phase_step` 或 `phase_step_data` 中提取依赖的 change 名称
35
35
  - 运行 `bash "$COMATE" dependency <dependency> archived` 检查归档目录中是否存在该 change 且其 `.comate.yaml` 明确记录 `archived: true`;不得用“不在活跃列表”推断归档完成
36
- - **若依赖已归档**:
37
- ```bash
36
+ - **若依赖已归档**:
37
+ ```bash
38
38
  bash "$COMATE" state <name> set phase_step build.options-confirmed
39
- bash "$COMATE" state <name> set phase_step_data null
40
- ```
41
- 清除阻塞标记,说明「依赖 change <dependency> 已完成,继续当前 change 的 build」,继续第 3 步检查
42
- - **若依赖未归档**:提示「当前 change 正在等待 <dependency> 完成。请先完成 <dependency> 的全流程后再继续。」,**立即退出**
43
-
44
- 3. **已完成 Step 3(工作方式已选定)** 的判定条件:
45
- - `isolation`、`build_mode`、`tdd_mode` **三个字段全部已设置且非 null**
39
+ bash "$COMATE" state <name> set phase_step_data null
40
+ ```
41
+ 清除阻塞标记,说明「依赖 change <dependency> 已完成,继续当前 change 的 build」,继续第 3 步检查
42
+ - **若依赖未归档**:提示「当前 change 正在等待 <dependency> 完成。请先完成 <dependency> 的全流程后再继续。」,**立即退出**
43
+
44
+ 3. **已完成 Step 3(工作方式已选定)** 的判定条件:
45
+ - `isolation`、`build_mode`、`tdd_mode` **三个字段全部已设置且非 null**
46
46
  - 或 `phase_step` 值为 `build.options-confirmed`
47
-
48
- 4. **幂等分支**:
49
- - **三个决策字段全部已设置** → 跳过 Step 3a-3c,说明「工作方式已选定:isolation={value}, build_mode={value}, tdd_mode={value}」,直接进入执行(加载对应技能)
50
- - **任一字段未设置或为 null**:
47
+
48
+ 4. **幂等分支**:
49
+ - **三个决策字段全部已设置** → 跳过 Step 3a-3c,说明「工作方式已选定:isolation={value}, build_mode={value}, tdd_mode={value}」,直接进入执行(加载对应技能)
50
+ - **任一字段未设置或为 null**:
51
51
  - 若 `phase_step` 为 `build.plan-created` 或 `build.plan-recorded` → 继续对应步骤(见下方第 5 点)
52
- - 若 `plan` 未设置 → 从 Step 1 开始
53
- - 若 `plan` 已设置但决策未完成 → 从 Step 3 开始
54
-
55
- 5. **断点恢复**(根据 `phase_step` 值):
52
+ - 若 `plan` 未设置 → 从 Step 1 开始
53
+ - 若 `plan` 已设置但决策未完成 → 从 Step 3 开始
54
+
55
+ 5. **断点恢复**(根据 `phase_step` 值):
56
56
  - `phase_step` 为 `build.plan-created`(或旧版 `1`)→ 从 Step 2 开始并改写新格式
57
57
  - `phase_step` 为 `build.plan-recorded` / `build.options-awaiting`(或旧版 `2`)→ 从 Step 3 恢复并改写新格式
58
58
  - `phase_step` 为 `build.options-confirmed`(或旧版 `3-confirmed`)→ 直接加载执行技能并改写新格式
59
59
  - `phase_step` 为 `build.blocked-by-*` → 见第 2 点的依赖阻塞检查
60
-
61
- 6. **已进入执行阶段**(plan 已设置、决策已完成):
62
- - 读 tasks.md 找第一个未勾选任务继续
63
- - 已提交的任务不得重复提交
64
- - 上下文压缩恢复时,重新加载对应的执行技能,然后继续未完成的任务
65
-
66
- ### 1. 制定计划
67
-
68
- **立即执行:** 使用 Skill 工具加载 `superpowers:writing-plans`。禁止跳过。计划要求:
69
- - 保存至 `docs/superpowers/plans/YYYY-MM-DD-<feature>.md`
70
- - 引用设计文档,拆分为可执行任务
71
- - **Plan 文件头必须含关联元数据**:
72
-
73
- ```yaml
74
- ---
75
- change: <name>
76
- design-doc: docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md
77
- base-ref: <实施前的 git rev-parse HEAD>
78
- ---
79
- ```
80
-
81
- `base-ref` 用于验证阶段跨提交统计改动规模。创建计划时先 `git rev-parse HEAD` 记录。
82
-
83
- **步骤完成后记录**:
84
-
85
- ```bash
60
+
61
+ 6. **已进入执行阶段**(plan 已设置、决策已完成):
62
+ - 读 tasks.md 找第一个未勾选任务继续
63
+ - 已提交的任务不得重复提交
64
+ - 上下文压缩恢复时,重新加载对应的执行技能,然后继续未完成的任务
65
+
66
+ ### 1. 制定计划
67
+
68
+ **立即执行:** 使用 Skill 工具加载 `superpowers:writing-plans`。禁止跳过。计划要求:
69
+ - 保存至 `docs/superpowers/plans/YYYY-MM-DD-<feature>.md`
70
+ - 引用设计文档,拆分为可执行任务
71
+ - **Plan 文件头必须含关联元数据**:
72
+
73
+ ```yaml
74
+ ---
75
+ change: <name>
76
+ design-doc: docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md
77
+ base-ref: <实施前的 git rev-parse HEAD>
78
+ ---
79
+ ```
80
+
81
+ `base-ref` 用于验证阶段跨提交统计改动规模。创建计划时先 `git rev-parse HEAD` 记录。
82
+
83
+ **步骤完成后记录**:
84
+
85
+ ```bash
86
86
  bash "$COMATE" state <name> set phase_step build.plan-created
87
- ```
88
-
89
- ### 2. 记录计划路径
90
-
91
- ```bash
92
- bash "$COMATE" state <name> set plan docs/superpowers/plans/YYYY-MM-DD-feature.md
87
+ ```
88
+
89
+ ### 2. 记录计划路径
90
+
91
+ ```bash
92
+ bash "$COMATE" state <name> set plan docs/superpowers/plans/YYYY-MM-DD-feature.md
93
93
  bash "$COMATE" state <name> set phase_step build.plan-recorded
94
- ```
95
-
96
- 无需手动改 phase,guard 会在退出条件满足后自动流转。
97
-
98
- ### 3. 选择工作方式(决策阻塞点 3)
99
-
100
- 就工作区隔离、执行方式、TDD 模式做**一个联合决策**。规则与判定协议见 `comate/reference/decision-points.md`(先判定"三类行动",第 3 条)。
101
-
102
- #### 3a. 能力预检(展示选项前先做)
103
-
104
- 逐维度检查当前平台/仓库实际可执行的选项,只保留可执行者:
105
-
106
- - **isolation**(脚本枚举仅 `branch` / `worktree`)
107
- - `worktree`:仅当 `superpowers:using-git-worktrees` skill 可用时保留;不可用则剔除。
108
- - `branch`:始终可用(HEAD detached 时先提示用户切到实分支)。
109
- - **build_mode**
110
- - `subagent-driven-development`:仅当当前平台有真实后台子 agent / Task 派发能力时保留;无则剔除。
111
- - `executing-plans`:始终可用。
112
- - **tdd_mode**:`tdd` / `direct` 始终可用。
113
-
114
- #### 3b. 唯一选项自动应用(属"自动处理",不阻塞)
115
-
116
- 预检后某维度只剩一个可执行选项,**直接写入并说明原因,不为它单独问用户**。例如:
117
-
118
- - 仅 `executing-plans` 可用(无后台派发能力)→ 自动写 `build_mode: executing-plans`,说明"无后台子 agent 能力"。
119
- - 仅 `branch` 可用(`using-git-worktrees` 未安装)→ 自动写 `isolation: branch`,说明"worktree skill 不可用"。
120
-
121
- 多个维度都只剩单值时,一并自动写入并逐条说明;三个维度全部只剩单值时本决策点整体跳过,直接进入 Step 3c 执行。
122
-
123
- #### 3c. 联合决策(仍有 ≥2 有效选项的维度才问)
124
-
94
+ ```
95
+
96
+ 无需手动改 phase,guard 会在退出条件满足后自动流转。
97
+
98
+ ### 3. 选择工作方式(决策阻塞点 3)
99
+
100
+ 就工作区隔离、执行方式、TDD 模式做**一个联合决策**。规则与判定协议见 `comate/reference/decision-points.md`(先判定"三类行动",第 3 条)。
101
+
102
+ #### 3a. 能力预检(展示选项前先做)
103
+
104
+ 逐维度检查当前平台/仓库实际可执行的选项,只保留可执行者:
105
+
106
+ - **isolation**(脚本枚举仅 `branch` / `worktree`)
107
+ - `worktree`:仅当 `superpowers:using-git-worktrees` skill 可用时保留;不可用则剔除。
108
+ - `branch`:始终可用(HEAD detached 时先提示用户切到实分支)。
109
+ - **build_mode**
110
+ - `subagent-driven-development`:仅当当前平台有真实后台子 agent / Task 派发能力时保留;无则剔除。
111
+ - `executing-plans`:始终可用。
112
+ - **tdd_mode**:`tdd` / `direct` 始终可用。
113
+
114
+ #### 3b. 唯一选项自动应用(属"自动处理",不阻塞)
115
+
116
+ 预检后某维度只剩一个可执行选项,**直接写入并说明原因,不为它单独问用户**。例如:
117
+
118
+ - 仅 `executing-plans` 可用(无后台派发能力)→ 自动写 `build_mode: executing-plans`,说明"无后台子 agent 能力"。
119
+ - 仅 `branch` 可用(`using-git-worktrees` 未安装)→ 自动写 `isolation: branch`,说明"worktree skill 不可用"。
120
+
121
+ 多个维度都只剩单值时,一并自动写入并逐条说明;三个维度全部只剩单值时本决策点整体跳过,直接进入 Step 3c 执行。
122
+
123
+ #### 3c. 联合决策(仍有 ≥2 有效选项的维度才问)
124
+
125
125
  对仍有多个有效选项的维度,**一次 AskUserQuestion 问清全部**,选 `branch` 时**分支名也在同一次确认**,不得先问是否继续再二次追问配置或命名。已在 3b 自动写入的维度不再列入问题。每个选项附推荐理由(推荐只说明倾向,不代替用户拍板):
126
-
127
- - **工作区隔离**:`branch` 新建分支(简单快速,≤3 文件推荐)/ `worktree` 独立工作区(需并行或当前分支有未提交工作时推荐)。
128
- - **执行方式**:`subagent-driven-development`(任务 ≥3、独立、需双阶段审查)/ `executing-plans`(任务 ≤2 且无跨模块依赖,或来自 fix 预设)。
126
+
127
+ - **工作区隔离**:`branch` 新建分支(简单快速,≤3 文件推荐)/ `worktree` 独立工作区(需并行或当前分支有未提交工作时推荐)。
128
+ - **执行方式**:`subagent-driven-development`(任务 ≥3、独立、需双阶段审查)/ `executing-plans`(任务 ≤2 且无跨模块依赖,或来自 fix 预设)。
129
129
  - **TDD 模式**:`tdd`(涉及业务逻辑/新功能/API,推荐)/ `direct`(无需测试覆盖或用户明确跳过)。
130
130
 
131
131
  提问前先持久化:
@@ -133,122 +133,122 @@ bash "$COMATE" state <name> set phase_step build.plan-recorded
133
133
  ```bash
134
134
  bash "$COMATE" state <name> set phase_step build.options-awaiting
135
135
  ```
136
-
137
- 用户选择后(连同 3b 已自动应用的维度)写入:
138
-
139
- ```bash
140
- bash "$COMATE" state <name> set isolation <branch|worktree>
141
- bash "$COMATE" state <name> set build_mode <subagent-driven-development|executing-plans|direct>
142
- bash "$COMATE" state <name> set tdd_mode <tdd|direct>
136
+
137
+ 用户选择后(连同 3b 已自动应用的维度)写入:
138
+
139
+ ```bash
140
+ bash "$COMATE" state <name> set isolation <branch|worktree>
141
+ bash "$COMATE" state <name> set build_mode <subagent-driven-development|executing-plans|direct>
142
+ bash "$COMATE" state <name> set tdd_mode <tdd|direct>
143
143
  bash "$COMATE" state <name> set phase_step build.options-confirmed
144
- ```
145
-
146
- `isolation` 是脚本级硬约束,保持 `null` 时 `build → verify` 的 guard 和 `state transition build-complete` 都会失败。
147
-
148
- `build_mode: direct` 默认仅 fix 预设使用。full 流程只有用户明确要求跳过计划执行技能、且已记录显式 override 时才允许:
149
-
150
- ```bash
151
- bash "$COMATE" state <name> set direct_override true
152
- bash "$COMATE" state <name> set build_mode direct
153
- ```
154
-
155
- 无 `direct_override: true` 时,full 流程的 `build_mode=direct` 会被 guard 和状态转换同时拦截。
156
-
157
- **TDD 模式**:
158
-
159
- | 选项 | 含义 | 适用场景 |
160
- |------|------|---------|
161
- | `tdd` | 每个任务先写失败测试再实现 | 推荐。涉及业务逻辑、新功能、API 的改动 |
162
- | `direct` | 直接实现,不强制 TDD 流程 | 不需要测试覆盖的改动,或用户选择跳过测试直接写代码。fix 预设默认 `direct` |
163
-
164
- `tdd_mode` 是脚本级硬约束,full 流程在离开 build 阶段前必须选择 `tdd` 或 `direct`,否则 guard 和 `state transition build-complete` 都会失败。
165
-
166
- **执行隔离**:
167
- - **branch**:`git checkout -b <name>`,后续在新分支工作
168
- - **worktree**:必须使用 Skill 工具加载 `superpowers:using-git-worktrees` 创建隔离工作区,禁止用普通 shell 绕过;不可用时停止并提示安装。
169
-
170
- **加载执行技能**:使用 Skill 工具加载所选技能。不可用时停止并提示安装,不要用普通对话替代。加载后按其指引执行:按计划做任务、完成 tasks.md 勾选(`- [ ]` → `- [x]`)、每个任务完成后提交代码。
171
-
172
- **TDD 执行约束(Step 3b)**:
173
-
174
- 若 `tdd_mode: tdd`:
175
- - `build_mode: executing-plans`:加载执行技能后、执行第一个任务前,**立即**使用 Skill 工具加载 `superpowers:test-driven-development` 一次,禁止跳过。之后每个任务按已加载的 Red-Green-Refactor 循环执行,不得跳过失败测试验证阶段,后续任务不重复加载。上下文压缩恢复后重新加载一次,再从第一个未勾选任务继续。
176
- - `build_mode: subagent-driven-development`:派发每个子 agent 时,必须在 prompt 中显式注入 TDD 硬约束:**"You MUST follow TDD: for each task, write a failing test first, watch it fail, then write minimal code to pass. No production code without a failing test first."**。不得依赖其他配置隐式触发,必须明写在 dispatch prompt 中。
177
- - `build_mode: direct`:仅在 full 流程已设置 `direct_override: true` 时允许。执行第一个任务前,**立即**使用 Skill 工具加载 `superpowers:test-driven-development` 一次,由当前 agent 按 Red-Green-Refactor 循环执行每个任务;不得把 `direct` 理解为跳过失败测试验证。
178
-
179
- 若 `tdd_mode: direct`:按正常流程执行,不强制 TDD。
180
-
181
- ### 4. Spec 增量更新(决策阻塞点 7)
182
-
183
- 实施中发现初版 spec 不完整时,按规模分级。规则见 `comate/reference/decision-points.md` 第 7 条。
184
-
185
- | 规模 | 触发 | 做法 |
186
- |------|------|------|
187
- | 小 | 遗漏验收场景、边界条件 | 直接编辑 delta spec + design.md,追加 tasks.md |
188
- | 中 | 接口变更、新增组件、数据流变化 | **AskUserQuestion 确认后**加载 `superpowers:brainstorming` 更新 Design Doc + delta spec |
144
+ ```
145
+
146
+ `isolation` 是脚本级硬约束,保持 `null` 时 `build → verify` 的 guard 和 `state transition build-complete` 都会失败。
147
+
148
+ `build_mode: direct` 默认仅 fix 预设使用。full 流程只有用户明确要求跳过计划执行技能、且已记录显式 override 时才允许:
149
+
150
+ ```bash
151
+ bash "$COMATE" state <name> set direct_override true
152
+ bash "$COMATE" state <name> set build_mode direct
153
+ ```
154
+
155
+ 无 `direct_override: true` 时,full 流程的 `build_mode=direct` 会被 guard 和状态转换同时拦截。
156
+
157
+ **TDD 模式**:
158
+
159
+ | 选项 | 含义 | 适用场景 |
160
+ |------|------|---------|
161
+ | `tdd` | 每个任务先写失败测试再实现 | 推荐。涉及业务逻辑、新功能、API 的改动 |
162
+ | `direct` | 直接实现,不强制 TDD 流程 | 不需要测试覆盖的改动,或用户选择跳过测试直接写代码。fix 预设默认 `direct` |
163
+
164
+ `tdd_mode` 是脚本级硬约束,full 流程在离开 build 阶段前必须选择 `tdd` 或 `direct`,否则 guard 和 `state transition build-complete` 都会失败。
165
+
166
+ **执行隔离**:
167
+ - **branch**:`git checkout -b <name>`,后续在新分支工作
168
+ - **worktree**:必须使用 Skill 工具加载 `superpowers:using-git-worktrees` 创建隔离工作区,禁止用普通 shell 绕过;不可用时停止并提示安装。
169
+
170
+ **加载执行技能**:使用 Skill 工具加载所选技能。不可用时停止并提示安装,不要用普通对话替代。加载后按其指引执行:按计划做任务、完成 tasks.md 勾选(`- [ ]` → `- [x]`)、每个任务完成后提交代码。
171
+
172
+ **TDD 执行约束(Step 3b)**:
173
+
174
+ 若 `tdd_mode: tdd`:
175
+ - `build_mode: executing-plans`:加载执行技能后、执行第一个任务前,**立即**使用 Skill 工具加载 `superpowers:test-driven-development` 一次,禁止跳过。之后每个任务按已加载的 Red-Green-Refactor 循环执行,不得跳过失败测试验证阶段,后续任务不重复加载。上下文压缩恢复后重新加载一次,再从第一个未勾选任务继续。
176
+ - `build_mode: subagent-driven-development`:派发每个子 agent 时,必须在 prompt 中显式注入 TDD 硬约束:**"You MUST follow TDD: for each task, write a failing test first, watch it fail, then write minimal code to pass. No production code without a failing test first."**。不得依赖其他配置隐式触发,必须明写在 dispatch prompt 中。
177
+ - `build_mode: direct`:仅在 full 流程已设置 `direct_override: true` 时允许。执行第一个任务前,**立即**使用 Skill 工具加载 `superpowers:test-driven-development` 一次,由当前 agent 按 Red-Green-Refactor 循环执行每个任务;不得把 `direct` 理解为跳过失败测试验证。
178
+
179
+ 若 `tdd_mode: direct`:按正常流程执行,不强制 TDD。
180
+
181
+ ### 4. Spec 增量更新(决策阻塞点 7)
182
+
183
+ 实施中发现初版 spec 不完整时,按规模分级。规则见 `comate/reference/decision-points.md` 第 7 条。
184
+
185
+ | 规模 | 触发 | 做法 |
186
+ |------|------|------|
187
+ | 小 | 遗漏验收场景、边界条件 | 直接编辑 delta spec + design.md,追加 tasks.md |
188
+ | 中 | 接口变更、新增组件、数据流变化 | **AskUserQuestion 确认后**加载 `superpowers:brainstorming` 更新 Design Doc + delta spec |
189
189
  | 大 | 全新 capability | **AskUserQuestion 确认拆分后**用 `/comate-open` 创建独立 change,**当前 change 的 build 流程立即终止** |
190
-
190
+
191
191
  **50% 阈值**:以 tasks.md 初始任务总数为基准,新增任务超过总数一半即视为超范围,**必须 AskUserQuestion 暂停**决定是否拆分。创建独立 change 必须调 `/comate-open`,不得直接调 `/opsx:new`。
192
192
 
193
193
  凡需 AskUserQuestion 决定范围扩张时,提问前先写 `phase_step: build.scope-awaiting`;用户决定继续当前 change 后恢复为 `build.options-confirmed`。
194
-
195
- **大规模扩张(全新 capability)确认拆分后的流程终止规则**:
196
-
197
- 1. 用 `/comate-open` 创建独立 change `<new-change-name>`
198
- 2. **当前 change `<current>` 的 build 流程立即暂停**,记录依赖关系:
199
- ```bash
194
+
195
+ **大规模扩张(全新 capability)确认拆分后的流程终止规则**:
196
+
197
+ 1. 用 `/comate-open` 创建独立 change `<new-change-name>`
198
+ 2. **当前 change `<current>` 的 build 流程立即暂停**,记录依赖关系:
199
+ ```bash
200
200
  bash "$COMATE" state <current> set phase_step "build.blocked-by-<new-change-name>"
201
201
  bash "$COMATE" state <current> set phase_step_data "<new-change-name>"
202
- ```
203
- 3. 提示用户:
204
- ```
205
- 已创建独立 change <new-change-name>。
206
- 当前 change <current> 的 build 流程已暂停,等待 <new-change-name> 完成。
207
-
208
- 请先完成 <new-change-name> 的全流程(design → build → verify → archive),
209
- 然后再继续 <current> 的 build。
210
- ```
211
- 4. **立即退出当前 /comate 调用**,不继续执行当前 change 的后续任务,不进入 Step 5
212
-
213
- **恢复被阻塞的 change**:
214
-
215
- 当用户稍后运行 `/comate <current>` 时,Step 0 幂等性检查会发现 `phase_step` 包含 `blocked-by` 标记:
216
- - 检查依赖的 change 是否已归档
202
+ ```
203
+ 3. 提示用户:
204
+ ```
205
+ 已创建独立 change <new-change-name>。
206
+ 当前 change <current> 的 build 流程已暂停,等待 <new-change-name> 完成。
207
+
208
+ 请先完成 <new-change-name> 的全流程(design → build → verify → archive),
209
+ 然后再继续 <current> 的 build。
210
+ ```
211
+ 4. **立即退出当前 /comate 调用**,不继续执行当前 change 的后续任务,不进入 Step 5
212
+
213
+ **恢复被阻塞的 change**:
214
+
215
+ 当用户稍后运行 `/comate <current>` 时,Step 0 幂等性检查会发现 `phase_step` 包含 `blocked-by` 标记:
216
+ - 检查依赖的 change 是否已归档
217
217
  - 若 `dependency <name> archived` 通过 → 清除阻塞标记,恢复 `phase_step` 为 `build.options-confirmed`,继续执行 tasks.md 中未完成的任务
218
- - 若未归档 → 提示用户先完成依赖 change,退出
219
-
220
- ### 5. 上下文管理与 build 交接包
221
-
222
- Build 是最长阶段。为支持断点恢复:
223
- - **每完成一个 task**:立即勾选 tasks.md 并提交,确保状态持久化
224
- - **上下文压缩恢复**:先 `bash "$COMATE" state <name> recover build`,按 Recovery action 决定下一步
225
- - **用户手动修改恢复**:按 `comate/reference/dirty-worktree.md` 协议处理;归因后若 diff 暗示计划或 spec 变化,按 Step 4 分级
226
-
227
- 全部任务完成、代码提交后,**生成 build → verify 交接包**(防止 plan/tasks 在两阶段间被偷改):
228
-
229
- ```bash
230
- bash "$COMATE" handoff <name> build --write
231
- ```
232
-
233
- 脚本写入 `impl_context` / `impl_hash`(plan + tasks 的 sha256)。verify 阶段 guard 会校验进入验证时的 plan/tasks 与此一致。
234
-
235
- ## 退出条件
236
-
237
- - tasks.md 全部勾选,代码已提交
238
- - 已显式运行项目构建/测试命令并通过
239
- - `isolation` 已写为 `branch` 或 `worktree`
240
- - `build_mode` 已选(full 用 `direct` 需 `direct_override: true`)
241
- - `tdd_mode` 已写为 `tdd` 或 `direct`
242
- - `impl_context` / `impl_hash` 已写入
243
- - 源文件未漂移(`source_kind: file` 时,guard 复算知识库文件哈希与清单比对;`conversation` 跳过)
244
- - **阶段守卫**:`bash "$COMATE" guard <name> build --apply` 全 PASS 后自动流转到 `phase: verify`
245
-
246
- guard 优先读项目配置命令(change 的 `.comate.yaml` 或仓库根 `.comate.yaml`/`comate.yaml`)的 `build_command` / `verify_command`;未配置才回退 `npm run build`、Maven、Cargo 探测。构建失败时 guard 打印失败输出作为排查证据。
247
-
248
- ```bash
249
- bash "$COMATE" guard <name> build --apply
250
- ```
251
-
252
- ## 自动流转
253
-
254
- > **REQUIRED NEXT SKILL:** 调用 `comate-verify` skill 进入验证与收尾。
218
+ - 若未归档 → 提示用户先完成依赖 change,退出
219
+
220
+ ### 5. 上下文管理与 build 交接包
221
+
222
+ Build 是最长阶段。为支持断点恢复:
223
+ - **每完成一个 task**:立即勾选 tasks.md 并提交,确保状态持久化
224
+ - **上下文压缩恢复**:先 `bash "$COMATE" state <name> recover build`,按 Recovery action 决定下一步
225
+ - **用户手动修改恢复**:按 `comate/reference/dirty-worktree.md` 协议处理;归因后若 diff 暗示计划或 spec 变化,按 Step 4 分级
226
+
227
+ 全部任务完成、代码提交后,**生成 build → verify 交接包**(防止 plan/tasks 在两阶段间被偷改):
228
+
229
+ ```bash
230
+ bash "$COMATE" handoff <name> build --write
231
+ ```
232
+
233
+ 脚本写入 `impl_context` / `impl_hash`(plan + tasks 的 sha256)。verify 阶段 guard 会校验进入验证时的 plan/tasks 与此一致。
234
+
235
+ ## 退出条件
236
+
237
+ - tasks.md 全部勾选,代码已提交
238
+ - 已显式运行项目构建/测试命令并通过
239
+ - `isolation` 已写为 `branch` 或 `worktree`
240
+ - `build_mode` 已选(full 用 `direct` 需 `direct_override: true`)
241
+ - `tdd_mode` 已写为 `tdd` 或 `direct`
242
+ - `impl_context` / `impl_hash` 已写入
243
+ - 源文件未漂移(`source_kind: file` 时,guard 复算知识库文件哈希与清单比对;`conversation` 跳过)
244
+ - **阶段守卫**:`bash "$COMATE" guard <name> build --apply` 全 PASS 后自动流转到 `phase: verify`
245
+
246
+ guard 优先读项目配置命令(change 的 `.comate.yaml` 或仓库根 `.comate.yaml`/`comate.yaml`)的 `build_command` / `verify_command`;未配置才回退 `npm run build`、Maven、Cargo 探测。构建失败时 guard 打印失败输出作为排查证据。
247
+
248
+ ```bash
249
+ bash "$COMATE" guard <name> build --apply
250
+ ```
251
+
252
+ ## 自动流转
253
+
254
+ > **REQUIRED NEXT SKILL:** 调用 `comate-verify` skill 进入验证与收尾。