@house365/comate 0.9.0 → 0.9.1
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.
- package/LICENSE +21 -21
- package/README.md +102 -102
- package/bin/cli.mjs +1 -1
- package/docs/COMATE_MANUAL.md +710 -710
- package/package.json +2 -2
- package/skills/comate/SKILL.md +217 -217
- package/skills/comate/reference/decision-points.md +77 -77
- package/skills/comate/reference/dirty-worktree.md +58 -58
- package/skills/comate/reference/prerequisites.md +89 -89
- package/skills/comate-archive/SKILL.md +63 -63
- package/skills/comate-build/SKILL.md +177 -177
- package/skills/comate-design/SKILL.md +106 -106
- package/skills/comate-gate/SKILL.md +245 -245
- package/skills/comate-gate/scaffold/docs/README.md +36 -36
- package/skills/comate-gate/scaffold/docs/architecture/README.md +31 -31
- package/skills/comate-gate/scaffold/docs/knowledge-base/README.md +48 -48
- package/skills/comate-gate/scaffold/docs/knowledge-base/integrations/_TEMPLATE/README.md +49 -49
- package/skills/comate-gate/scaffold/docs/knowledge-base/integrations/_TEMPLATE/api-snapshot.md +47 -47
- package/skills/comate-gate/scaffold/docs/knowledge-base/requirements/_templates/PRD.md +97 -97
- package/skills/comate-grill/SKILL.md +185 -185
- package/skills/comate-kb-integration/scripts/fetch_rendered_doc.py +84 -84
- package/skills/comate-open/SKILL.md +144 -144
- package/skills/comate-verify/SKILL.md +146 -146
|
@@ -1,177 +1,177 @@
|
|
|
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
|
-
**幂等性**:build 阶段操作可安全重复。读 `phase` 确认仍在 build,读 plan 文件头的 `base-ref`,再读 tasks.md 找第一个未勾选任务继续。已提交的任务不得重复提交。
|
|
29
|
-
|
|
30
|
-
### 1. 制定计划
|
|
31
|
-
|
|
32
|
-
**立即执行:** 使用 Skill 工具加载 `superpowers:writing-plans`。禁止跳过。计划要求:
|
|
33
|
-
- 保存至 `docs/superpowers/plans/YYYY-MM-DD-<feature>.md`
|
|
34
|
-
- 引用设计文档,拆分为可执行任务
|
|
35
|
-
- **Plan 文件头必须含关联元数据**:
|
|
36
|
-
|
|
37
|
-
```yaml
|
|
38
|
-
---
|
|
39
|
-
change: <name>
|
|
40
|
-
design-doc: docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md
|
|
41
|
-
base-ref: <实施前的 git rev-parse HEAD>
|
|
42
|
-
---
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
`base-ref` 用于验证阶段跨提交统计改动规模。创建计划时先 `git rev-parse HEAD` 记录。
|
|
46
|
-
|
|
47
|
-
### 2. 记录计划路径
|
|
48
|
-
|
|
49
|
-
```bash
|
|
50
|
-
bash "$COMATE" state <name> set plan docs/superpowers/plans/YYYY-MM-DD-feature.md
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
无需手动改 phase,guard 会在退出条件满足后自动流转。
|
|
54
|
-
|
|
55
|
-
### 3. 选择工作方式(决策阻塞点 3)
|
|
56
|
-
|
|
57
|
-
就工作区隔离、执行方式、TDD 模式做**一个联合决策**。规则与判定协议见 `comate/reference/decision-points.md`(先判定"三类行动",第 3 条)。
|
|
58
|
-
|
|
59
|
-
#### 3a. 能力预检(展示选项前先做)
|
|
60
|
-
|
|
61
|
-
逐维度检查当前平台/仓库实际可执行的选项,只保留可执行者:
|
|
62
|
-
|
|
63
|
-
- **isolation**(脚本枚举仅 `branch` / `worktree`)
|
|
64
|
-
- `worktree`:仅当 `superpowers:using-git-worktrees` skill 可用时保留;不可用则剔除。
|
|
65
|
-
- `branch`:始终可用(HEAD detached 时先提示用户切到实分支)。
|
|
66
|
-
- **build_mode**
|
|
67
|
-
- `subagent-driven-development`:仅当当前平台有真实后台子 agent / Task 派发能力时保留;无则剔除。
|
|
68
|
-
- `executing-plans`:始终可用。
|
|
69
|
-
- **tdd_mode**:`tdd` / `direct` 始终可用。
|
|
70
|
-
|
|
71
|
-
#### 3b. 唯一选项自动应用(属"自动处理",不阻塞)
|
|
72
|
-
|
|
73
|
-
预检后某维度只剩一个可执行选项,**直接写入并说明原因,不为它单独问用户**。例如:
|
|
74
|
-
|
|
75
|
-
- 仅 `executing-plans` 可用(无后台派发能力)→ 自动写 `build_mode: executing-plans`,说明"无后台子 agent 能力"。
|
|
76
|
-
- 仅 `branch` 可用(`using-git-worktrees` 未安装)→ 自动写 `isolation: branch`,说明"worktree skill 不可用"。
|
|
77
|
-
|
|
78
|
-
多个维度都只剩单值时,一并自动写入并逐条说明;三个维度全部只剩单值时本决策点整体跳过,直接进入 Step 3c 执行。
|
|
79
|
-
|
|
80
|
-
#### 3c. 联合决策(仍有 ≥2 有效选项的维度才问)
|
|
81
|
-
|
|
82
|
-
对仍有多个有效选项的维度,**一次 AskUserQuestion 问清全部**,选 `branch` 时**分支名也在同一次确认**,不得先问是否继续再二次追问配置或命名。已在 3b 自动写入的维度不再列入问题。每个选项附推荐理由(推荐只说明倾向,不代替用户拍板):
|
|
83
|
-
|
|
84
|
-
- **工作区隔离**:`branch` 新建分支(简单快速,≤3 文件推荐)/ `worktree` 独立工作区(需并行或当前分支有未提交工作时推荐)。
|
|
85
|
-
- **执行方式**:`subagent-driven-development`(任务 ≥3、独立、需双阶段审查)/ `executing-plans`(任务 ≤2 且无跨模块依赖,或来自 fix 预设)。
|
|
86
|
-
- **TDD 模式**:`tdd`(涉及业务逻辑/新功能/API,推荐)/ `direct`(无需测试覆盖或用户明确跳过)。
|
|
87
|
-
|
|
88
|
-
用户选择后(连同 3b 已自动应用的维度)写入:
|
|
89
|
-
|
|
90
|
-
```bash
|
|
91
|
-
bash "$COMATE" state <name> set isolation <branch|worktree>
|
|
92
|
-
bash "$COMATE" state <name> set build_mode <subagent-driven-development|executing-plans|direct>
|
|
93
|
-
bash "$COMATE" state <name> set tdd_mode <tdd|direct>
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
`isolation` 是脚本级硬约束,保持 `null` 时 `build → verify` 的 guard 和 `state transition build-complete` 都会失败。
|
|
97
|
-
|
|
98
|
-
`build_mode: direct` 默认仅 fix 预设使用。full 流程只有用户明确要求跳过计划执行技能、且已记录显式 override 时才允许:
|
|
99
|
-
|
|
100
|
-
```bash
|
|
101
|
-
bash "$COMATE" state <name> set direct_override true
|
|
102
|
-
bash "$COMATE" state <name> set build_mode direct
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
无 `direct_override: true` 时,full 流程的 `build_mode=direct` 会被 guard 和状态转换同时拦截。
|
|
106
|
-
|
|
107
|
-
**TDD 模式**:
|
|
108
|
-
|
|
109
|
-
| 选项 | 含义 | 适用场景 |
|
|
110
|
-
|------|------|---------|
|
|
111
|
-
| `tdd` | 每个任务先写失败测试再实现 | 推荐。涉及业务逻辑、新功能、API 的改动 |
|
|
112
|
-
| `direct` | 直接实现,不强制 TDD 流程 | 不需要测试覆盖的改动,或用户选择跳过测试直接写代码。fix 预设默认 `direct` |
|
|
113
|
-
|
|
114
|
-
`tdd_mode` 是脚本级硬约束,full 流程在离开 build 阶段前必须选择 `tdd` 或 `direct`,否则 guard 和 `state transition build-complete` 都会失败。
|
|
115
|
-
|
|
116
|
-
**执行隔离**:
|
|
117
|
-
- **branch**:`git checkout -b <name>`,后续在新分支工作
|
|
118
|
-
- **worktree**:必须使用 Skill 工具加载 `superpowers:using-git-worktrees` 创建隔离工作区,禁止用普通 shell 绕过;不可用时停止并提示安装。
|
|
119
|
-
|
|
120
|
-
**加载执行技能**:使用 Skill 工具加载所选技能。不可用时停止并提示安装,不要用普通对话替代。加载后按其指引执行:按计划做任务、完成 tasks.md 勾选(`- [ ]` → `- [x]`)、每个任务完成后提交代码。
|
|
121
|
-
|
|
122
|
-
**TDD 执行约束(Step 3b)**:
|
|
123
|
-
|
|
124
|
-
若 `tdd_mode: tdd`:
|
|
125
|
-
- `build_mode: executing-plans`:加载执行技能后、执行第一个任务前,**立即**使用 Skill 工具加载 `superpowers:test-driven-development` 一次,禁止跳过。之后每个任务按已加载的 Red-Green-Refactor 循环执行,不得跳过失败测试验证阶段,后续任务不重复加载。上下文压缩恢复后重新加载一次,再从第一个未勾选任务继续。
|
|
126
|
-
- `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 中。
|
|
127
|
-
- `build_mode: direct`:仅在 full 流程已设置 `direct_override: true` 时允许。执行第一个任务前,**立即**使用 Skill 工具加载 `superpowers:test-driven-development` 一次,由当前 agent 按 Red-Green-Refactor 循环执行每个任务;不得把 `direct` 理解为跳过失败测试验证。
|
|
128
|
-
|
|
129
|
-
若 `tdd_mode: direct`:按正常流程执行,不强制 TDD。
|
|
130
|
-
|
|
131
|
-
### 4. Spec 增量更新(决策阻塞点 7)
|
|
132
|
-
|
|
133
|
-
实施中发现初版 spec 不完整时,按规模分级。规则见 `comate/reference/decision-points.md` 第 7 条。
|
|
134
|
-
|
|
135
|
-
| 规模 | 触发 | 做法 |
|
|
136
|
-
|------|------|------|
|
|
137
|
-
| 小 | 遗漏验收场景、边界条件 | 直接编辑 delta spec + design.md,追加 tasks.md |
|
|
138
|
-
| 中 | 接口变更、新增组件、数据流变化 | **AskUserQuestion 确认后**加载 `superpowers:brainstorming` 更新 Design Doc + delta spec |
|
|
139
|
-
| 大 | 全新 capability | **AskUserQuestion 确认拆分后**用 `/comate-open` 创建独立 change |
|
|
140
|
-
|
|
141
|
-
**50% 阈值**:以 tasks.md 初始任务总数为基准,新增任务超过总数一半即视为超范围,**必须 AskUserQuestion 暂停**决定是否拆分。创建独立 change 必须调 `/comate-open`,不得直接调 `/opsx:new`。
|
|
142
|
-
|
|
143
|
-
### 5. 上下文管理与 build 交接包
|
|
144
|
-
|
|
145
|
-
Build 是最长阶段。为支持断点恢复:
|
|
146
|
-
- **每完成一个 task**:立即勾选 tasks.md 并提交,确保状态持久化
|
|
147
|
-
- **上下文压缩恢复**:先 `bash "$COMATE" state <name> recover build`,按 Recovery action 决定下一步
|
|
148
|
-
- **用户手动修改恢复**:按 `comate/reference/dirty-worktree.md` 协议处理;归因后若 diff 暗示计划或 spec 变化,按 Step 4 分级
|
|
149
|
-
|
|
150
|
-
全部任务完成、代码提交后,**生成 build → verify 交接包**(防止 plan/tasks 在两阶段间被偷改):
|
|
151
|
-
|
|
152
|
-
```bash
|
|
153
|
-
bash "$COMATE" handoff <name> build --write
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
脚本写入 `impl_context` / `impl_hash`(plan + tasks 的 sha256)。verify 阶段 guard 会校验进入验证时的 plan/tasks 与此一致。
|
|
157
|
-
|
|
158
|
-
## 退出条件
|
|
159
|
-
|
|
160
|
-
- tasks.md 全部勾选,代码已提交
|
|
161
|
-
- 已显式运行项目构建/测试命令并通过
|
|
162
|
-
- `isolation` 已写为 `branch` 或 `worktree`
|
|
163
|
-
- `build_mode` 已选(full 用 `direct` 需 `direct_override: true`)
|
|
164
|
-
- `tdd_mode` 已写为 `tdd` 或 `direct`
|
|
165
|
-
- `impl_context` / `impl_hash` 已写入
|
|
166
|
-
- 源文件未漂移(`source_kind: file` 时,guard 复算知识库文件哈希与清单比对;`conversation` 跳过)
|
|
167
|
-
- **阶段守卫**:`bash "$COMATE" guard <name> build --apply` 全 PASS 后自动流转到 `phase: verify`
|
|
168
|
-
|
|
169
|
-
guard 优先读项目配置命令(change 的 `.comate.yaml` 或仓库根 `.comate.yaml`/`comate.yaml`)的 `build_command` / `verify_command`;未配置才回退 `npm run build`、Maven、Cargo 探测。构建失败时 guard 打印失败输出作为排查证据。
|
|
170
|
-
|
|
171
|
-
```bash
|
|
172
|
-
bash "$COMATE" guard <name> build --apply
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
## 自动流转
|
|
176
|
-
|
|
177
|
-
> **REQUIRED NEXT SKILL:** 调用 `comate-verify` skill 进入验证与收尾。
|
|
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
|
+
**幂等性**:build 阶段操作可安全重复。读 `phase` 确认仍在 build,读 plan 文件头的 `base-ref`,再读 tasks.md 找第一个未勾选任务继续。已提交的任务不得重复提交。
|
|
29
|
+
|
|
30
|
+
### 1. 制定计划
|
|
31
|
+
|
|
32
|
+
**立即执行:** 使用 Skill 工具加载 `superpowers:writing-plans`。禁止跳过。计划要求:
|
|
33
|
+
- 保存至 `docs/superpowers/plans/YYYY-MM-DD-<feature>.md`
|
|
34
|
+
- 引用设计文档,拆分为可执行任务
|
|
35
|
+
- **Plan 文件头必须含关联元数据**:
|
|
36
|
+
|
|
37
|
+
```yaml
|
|
38
|
+
---
|
|
39
|
+
change: <name>
|
|
40
|
+
design-doc: docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md
|
|
41
|
+
base-ref: <实施前的 git rev-parse HEAD>
|
|
42
|
+
---
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
`base-ref` 用于验证阶段跨提交统计改动规模。创建计划时先 `git rev-parse HEAD` 记录。
|
|
46
|
+
|
|
47
|
+
### 2. 记录计划路径
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
bash "$COMATE" state <name> set plan docs/superpowers/plans/YYYY-MM-DD-feature.md
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
无需手动改 phase,guard 会在退出条件满足后自动流转。
|
|
54
|
+
|
|
55
|
+
### 3. 选择工作方式(决策阻塞点 3)
|
|
56
|
+
|
|
57
|
+
就工作区隔离、执行方式、TDD 模式做**一个联合决策**。规则与判定协议见 `comate/reference/decision-points.md`(先判定"三类行动",第 3 条)。
|
|
58
|
+
|
|
59
|
+
#### 3a. 能力预检(展示选项前先做)
|
|
60
|
+
|
|
61
|
+
逐维度检查当前平台/仓库实际可执行的选项,只保留可执行者:
|
|
62
|
+
|
|
63
|
+
- **isolation**(脚本枚举仅 `branch` / `worktree`)
|
|
64
|
+
- `worktree`:仅当 `superpowers:using-git-worktrees` skill 可用时保留;不可用则剔除。
|
|
65
|
+
- `branch`:始终可用(HEAD detached 时先提示用户切到实分支)。
|
|
66
|
+
- **build_mode**
|
|
67
|
+
- `subagent-driven-development`:仅当当前平台有真实后台子 agent / Task 派发能力时保留;无则剔除。
|
|
68
|
+
- `executing-plans`:始终可用。
|
|
69
|
+
- **tdd_mode**:`tdd` / `direct` 始终可用。
|
|
70
|
+
|
|
71
|
+
#### 3b. 唯一选项自动应用(属"自动处理",不阻塞)
|
|
72
|
+
|
|
73
|
+
预检后某维度只剩一个可执行选项,**直接写入并说明原因,不为它单独问用户**。例如:
|
|
74
|
+
|
|
75
|
+
- 仅 `executing-plans` 可用(无后台派发能力)→ 自动写 `build_mode: executing-plans`,说明"无后台子 agent 能力"。
|
|
76
|
+
- 仅 `branch` 可用(`using-git-worktrees` 未安装)→ 自动写 `isolation: branch`,说明"worktree skill 不可用"。
|
|
77
|
+
|
|
78
|
+
多个维度都只剩单值时,一并自动写入并逐条说明;三个维度全部只剩单值时本决策点整体跳过,直接进入 Step 3c 执行。
|
|
79
|
+
|
|
80
|
+
#### 3c. 联合决策(仍有 ≥2 有效选项的维度才问)
|
|
81
|
+
|
|
82
|
+
对仍有多个有效选项的维度,**一次 AskUserQuestion 问清全部**,选 `branch` 时**分支名也在同一次确认**,不得先问是否继续再二次追问配置或命名。已在 3b 自动写入的维度不再列入问题。每个选项附推荐理由(推荐只说明倾向,不代替用户拍板):
|
|
83
|
+
|
|
84
|
+
- **工作区隔离**:`branch` 新建分支(简单快速,≤3 文件推荐)/ `worktree` 独立工作区(需并行或当前分支有未提交工作时推荐)。
|
|
85
|
+
- **执行方式**:`subagent-driven-development`(任务 ≥3、独立、需双阶段审查)/ `executing-plans`(任务 ≤2 且无跨模块依赖,或来自 fix 预设)。
|
|
86
|
+
- **TDD 模式**:`tdd`(涉及业务逻辑/新功能/API,推荐)/ `direct`(无需测试覆盖或用户明确跳过)。
|
|
87
|
+
|
|
88
|
+
用户选择后(连同 3b 已自动应用的维度)写入:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
bash "$COMATE" state <name> set isolation <branch|worktree>
|
|
92
|
+
bash "$COMATE" state <name> set build_mode <subagent-driven-development|executing-plans|direct>
|
|
93
|
+
bash "$COMATE" state <name> set tdd_mode <tdd|direct>
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
`isolation` 是脚本级硬约束,保持 `null` 时 `build → verify` 的 guard 和 `state transition build-complete` 都会失败。
|
|
97
|
+
|
|
98
|
+
`build_mode: direct` 默认仅 fix 预设使用。full 流程只有用户明确要求跳过计划执行技能、且已记录显式 override 时才允许:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
bash "$COMATE" state <name> set direct_override true
|
|
102
|
+
bash "$COMATE" state <name> set build_mode direct
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
无 `direct_override: true` 时,full 流程的 `build_mode=direct` 会被 guard 和状态转换同时拦截。
|
|
106
|
+
|
|
107
|
+
**TDD 模式**:
|
|
108
|
+
|
|
109
|
+
| 选项 | 含义 | 适用场景 |
|
|
110
|
+
|------|------|---------|
|
|
111
|
+
| `tdd` | 每个任务先写失败测试再实现 | 推荐。涉及业务逻辑、新功能、API 的改动 |
|
|
112
|
+
| `direct` | 直接实现,不强制 TDD 流程 | 不需要测试覆盖的改动,或用户选择跳过测试直接写代码。fix 预设默认 `direct` |
|
|
113
|
+
|
|
114
|
+
`tdd_mode` 是脚本级硬约束,full 流程在离开 build 阶段前必须选择 `tdd` 或 `direct`,否则 guard 和 `state transition build-complete` 都会失败。
|
|
115
|
+
|
|
116
|
+
**执行隔离**:
|
|
117
|
+
- **branch**:`git checkout -b <name>`,后续在新分支工作
|
|
118
|
+
- **worktree**:必须使用 Skill 工具加载 `superpowers:using-git-worktrees` 创建隔离工作区,禁止用普通 shell 绕过;不可用时停止并提示安装。
|
|
119
|
+
|
|
120
|
+
**加载执行技能**:使用 Skill 工具加载所选技能。不可用时停止并提示安装,不要用普通对话替代。加载后按其指引执行:按计划做任务、完成 tasks.md 勾选(`- [ ]` → `- [x]`)、每个任务完成后提交代码。
|
|
121
|
+
|
|
122
|
+
**TDD 执行约束(Step 3b)**:
|
|
123
|
+
|
|
124
|
+
若 `tdd_mode: tdd`:
|
|
125
|
+
- `build_mode: executing-plans`:加载执行技能后、执行第一个任务前,**立即**使用 Skill 工具加载 `superpowers:test-driven-development` 一次,禁止跳过。之后每个任务按已加载的 Red-Green-Refactor 循环执行,不得跳过失败测试验证阶段,后续任务不重复加载。上下文压缩恢复后重新加载一次,再从第一个未勾选任务继续。
|
|
126
|
+
- `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 中。
|
|
127
|
+
- `build_mode: direct`:仅在 full 流程已设置 `direct_override: true` 时允许。执行第一个任务前,**立即**使用 Skill 工具加载 `superpowers:test-driven-development` 一次,由当前 agent 按 Red-Green-Refactor 循环执行每个任务;不得把 `direct` 理解为跳过失败测试验证。
|
|
128
|
+
|
|
129
|
+
若 `tdd_mode: direct`:按正常流程执行,不强制 TDD。
|
|
130
|
+
|
|
131
|
+
### 4. Spec 增量更新(决策阻塞点 7)
|
|
132
|
+
|
|
133
|
+
实施中发现初版 spec 不完整时,按规模分级。规则见 `comate/reference/decision-points.md` 第 7 条。
|
|
134
|
+
|
|
135
|
+
| 规模 | 触发 | 做法 |
|
|
136
|
+
|------|------|------|
|
|
137
|
+
| 小 | 遗漏验收场景、边界条件 | 直接编辑 delta spec + design.md,追加 tasks.md |
|
|
138
|
+
| 中 | 接口变更、新增组件、数据流变化 | **AskUserQuestion 确认后**加载 `superpowers:brainstorming` 更新 Design Doc + delta spec |
|
|
139
|
+
| 大 | 全新 capability | **AskUserQuestion 确认拆分后**用 `/comate-open` 创建独立 change |
|
|
140
|
+
|
|
141
|
+
**50% 阈值**:以 tasks.md 初始任务总数为基准,新增任务超过总数一半即视为超范围,**必须 AskUserQuestion 暂停**决定是否拆分。创建独立 change 必须调 `/comate-open`,不得直接调 `/opsx:new`。
|
|
142
|
+
|
|
143
|
+
### 5. 上下文管理与 build 交接包
|
|
144
|
+
|
|
145
|
+
Build 是最长阶段。为支持断点恢复:
|
|
146
|
+
- **每完成一个 task**:立即勾选 tasks.md 并提交,确保状态持久化
|
|
147
|
+
- **上下文压缩恢复**:先 `bash "$COMATE" state <name> recover build`,按 Recovery action 决定下一步
|
|
148
|
+
- **用户手动修改恢复**:按 `comate/reference/dirty-worktree.md` 协议处理;归因后若 diff 暗示计划或 spec 变化,按 Step 4 分级
|
|
149
|
+
|
|
150
|
+
全部任务完成、代码提交后,**生成 build → verify 交接包**(防止 plan/tasks 在两阶段间被偷改):
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
bash "$COMATE" handoff <name> build --write
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
脚本写入 `impl_context` / `impl_hash`(plan + tasks 的 sha256)。verify 阶段 guard 会校验进入验证时的 plan/tasks 与此一致。
|
|
157
|
+
|
|
158
|
+
## 退出条件
|
|
159
|
+
|
|
160
|
+
- tasks.md 全部勾选,代码已提交
|
|
161
|
+
- 已显式运行项目构建/测试命令并通过
|
|
162
|
+
- `isolation` 已写为 `branch` 或 `worktree`
|
|
163
|
+
- `build_mode` 已选(full 用 `direct` 需 `direct_override: true`)
|
|
164
|
+
- `tdd_mode` 已写为 `tdd` 或 `direct`
|
|
165
|
+
- `impl_context` / `impl_hash` 已写入
|
|
166
|
+
- 源文件未漂移(`source_kind: file` 时,guard 复算知识库文件哈希与清单比对;`conversation` 跳过)
|
|
167
|
+
- **阶段守卫**:`bash "$COMATE" guard <name> build --apply` 全 PASS 后自动流转到 `phase: verify`
|
|
168
|
+
|
|
169
|
+
guard 优先读项目配置命令(change 的 `.comate.yaml` 或仓库根 `.comate.yaml`/`comate.yaml`)的 `build_command` / `verify_command`;未配置才回退 `npm run build`、Maven、Cargo 探测。构建失败时 guard 打印失败输出作为排查证据。
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
bash "$COMATE" guard <name> build --apply
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
## 自动流转
|
|
176
|
+
|
|
177
|
+
> **REQUIRED NEXT SKILL:** 调用 `comate-verify` skill 进入验证与收尾。
|
|
@@ -1,106 +1,106 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: comate-design
|
|
3
|
-
description: "comate 阶段 2:深度设计。用 /comate-design 调用。通过 brainstorming 产出 Design Doc 和 delta spec。"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# comate 阶段 2:深度设计(Design)
|
|
7
|
-
|
|
8
|
-
## 前置条件
|
|
9
|
-
|
|
10
|
-
- 活跃 change 已存在(proposal.md、design.md、tasks.md)
|
|
11
|
-
- 无 Design Doc
|
|
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 design
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
**幂等性**:design 阶段操作可安全重试。若 `handoff_context` 和 `handoff_hash` 已存在,先确认与当前产物一致再决定是否重新生成。
|
|
29
|
-
|
|
30
|
-
### 1a. 生成 OpenSpec → Superpowers 交接包
|
|
31
|
-
|
|
32
|
-
**必须由脚本生成,不允许 agent 临场手写 summary 代替。**
|
|
33
|
-
|
|
34
|
-
```bash
|
|
35
|
-
bash "$COMATE" handoff <name> design --write
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
脚本生成 `openspec/changes/<name>/.comate/handoff/design-context.{json,md}` 并在 `.comate.yaml` 写入 `handoff_context` / `handoff_hash`。默认是 **compact 可追溯摘录**(含脚本标记 `Generated-by: comate`、source path、line range、sha256),不是 agent summary。需全文时加 `--full`。
|
|
39
|
-
|
|
40
|
-
交接包来源:`proposal.md`、`design.md`、`tasks.md`、`specs/*/spec.md`。
|
|
41
|
-
|
|
42
|
-
### 1b. 执行 Brainstorming(带上下文)
|
|
43
|
-
|
|
44
|
-
**立即执行:** 使用 Skill 工具加载 `superpowers:brainstorming`,ARGUMENTS 包含:
|
|
45
|
-
|
|
46
|
-
```
|
|
47
|
-
Change: <name>
|
|
48
|
-
OpenSpec Context Pack: openspec/changes/<name>/.comate/handoff/design-context.md
|
|
49
|
-
Machine handoff: openspec/changes/<name>/.comate/handoff/design-context.json
|
|
50
|
-
|
|
51
|
-
OpenSpec 产物是上游事实源,不要重新定义需求,不要重写 proposal/spec。
|
|
52
|
-
基于交接包做深度技术设计:实现方案、技术风险、测试策略、边界条件。
|
|
53
|
-
如发现 delta spec 缺少验收场景,只能提出 Spec Patch 回写 OpenSpec delta spec;不要在 Design Doc 中创建第二份需求 spec。
|
|
54
|
-
|
|
55
|
-
Design Doc frontmatter 必须最小化,只含:
|
|
56
|
-
---
|
|
57
|
-
comate_change: <name>
|
|
58
|
-
role: technical-design
|
|
59
|
-
canonical_spec: openspec
|
|
60
|
-
---
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
禁止跳过;该技能不可用时停止流程并提示安装 Superpowers,不要用普通对话替代。
|
|
64
|
-
|
|
65
|
-
brainstorming 阶段不写 Design Doc 文件,仅产出方案供 Step 1c 确认。
|
|
66
|
-
|
|
67
|
-
### 1c. 用户确认设计方案(决策阻塞点 2)
|
|
68
|
-
|
|
69
|
-
**必须使用 AskUserQuestion 工具暂停等待用户明确确认设计方案**。规则见 `comate/reference/decision-points.md` 第 2 条。确认前不得创建最终 Design Doc、写 `design_doc`、跑 design guard 或进入 build。
|
|
70
|
-
|
|
71
|
-
展示摘要:采用的技术方案、关键取舍与风险、测试策略、Spec Patch(如有)。用户确认后才继续 Step 2;要求调整则继续迭代。
|
|
72
|
-
|
|
73
|
-
### 2. 更新 comate 状态
|
|
74
|
-
|
|
75
|
-
```bash
|
|
76
|
-
# 记录 design_doc 路径
|
|
77
|
-
bash "$COMATE" state <name> set design_doc docs/superpowers/specs/YYYY-MM-DD-topic-design.md
|
|
78
|
-
|
|
79
|
-
# 如有 delta spec 变更,重新生成 handoff 以更新 hash
|
|
80
|
-
bash "$COMATE" handoff <name> design --write
|
|
81
|
-
|
|
82
|
-
# 自动流转
|
|
83
|
-
bash "$COMATE" guard <name> design --apply
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
无 delta spec 变更则跳过 handoff 重新生成。
|
|
87
|
-
|
|
88
|
-
## 退出条件
|
|
89
|
-
|
|
90
|
-
- Design Doc 已创建,frontmatter 含 `comate_change`、`role: technical-design`、`canonical_spec: openspec`
|
|
91
|
-
- `handoff_context` / `handoff_hash` 已写入且 hash 与当前产物一致(guard 强制)
|
|
92
|
-
- `design-context.md` 由脚本生成且含可追溯标记(guard 强制)
|
|
93
|
-
- `design_doc` 已写入 `.comate.yaml`
|
|
94
|
-
- **阶段守卫**:`bash "$COMATE" guard <name> design --apply` 全 PASS 后自动流转到 `phase: build`
|
|
95
|
-
|
|
96
|
-
## 上下文压缩恢复
|
|
97
|
-
|
|
98
|
-
```bash
|
|
99
|
-
bash "$COMATE" state <name> recover design
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
脚本输出结构化恢复上下文,按 Recovery action 判断下一步。
|
|
103
|
-
|
|
104
|
-
## 自动流转
|
|
105
|
-
|
|
106
|
-
> **REQUIRED NEXT SKILL:** 调用 `comate-build` skill 进入计划与构建。
|
|
1
|
+
---
|
|
2
|
+
name: comate-design
|
|
3
|
+
description: "comate 阶段 2:深度设计。用 /comate-design 调用。通过 brainstorming 产出 Design Doc 和 delta spec。"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# comate 阶段 2:深度设计(Design)
|
|
7
|
+
|
|
8
|
+
## 前置条件
|
|
9
|
+
|
|
10
|
+
- 活跃 change 已存在(proposal.md、design.md、tasks.md)
|
|
11
|
+
- 无 Design Doc
|
|
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 design
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
**幂等性**:design 阶段操作可安全重试。若 `handoff_context` 和 `handoff_hash` 已存在,先确认与当前产物一致再决定是否重新生成。
|
|
29
|
+
|
|
30
|
+
### 1a. 生成 OpenSpec → Superpowers 交接包
|
|
31
|
+
|
|
32
|
+
**必须由脚本生成,不允许 agent 临场手写 summary 代替。**
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
bash "$COMATE" handoff <name> design --write
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
脚本生成 `openspec/changes/<name>/.comate/handoff/design-context.{json,md}` 并在 `.comate.yaml` 写入 `handoff_context` / `handoff_hash`。默认是 **compact 可追溯摘录**(含脚本标记 `Generated-by: comate`、source path、line range、sha256),不是 agent summary。需全文时加 `--full`。
|
|
39
|
+
|
|
40
|
+
交接包来源:`proposal.md`、`design.md`、`tasks.md`、`specs/*/spec.md`。
|
|
41
|
+
|
|
42
|
+
### 1b. 执行 Brainstorming(带上下文)
|
|
43
|
+
|
|
44
|
+
**立即执行:** 使用 Skill 工具加载 `superpowers:brainstorming`,ARGUMENTS 包含:
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
Change: <name>
|
|
48
|
+
OpenSpec Context Pack: openspec/changes/<name>/.comate/handoff/design-context.md
|
|
49
|
+
Machine handoff: openspec/changes/<name>/.comate/handoff/design-context.json
|
|
50
|
+
|
|
51
|
+
OpenSpec 产物是上游事实源,不要重新定义需求,不要重写 proposal/spec。
|
|
52
|
+
基于交接包做深度技术设计:实现方案、技术风险、测试策略、边界条件。
|
|
53
|
+
如发现 delta spec 缺少验收场景,只能提出 Spec Patch 回写 OpenSpec delta spec;不要在 Design Doc 中创建第二份需求 spec。
|
|
54
|
+
|
|
55
|
+
Design Doc frontmatter 必须最小化,只含:
|
|
56
|
+
---
|
|
57
|
+
comate_change: <name>
|
|
58
|
+
role: technical-design
|
|
59
|
+
canonical_spec: openspec
|
|
60
|
+
---
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
禁止跳过;该技能不可用时停止流程并提示安装 Superpowers,不要用普通对话替代。
|
|
64
|
+
|
|
65
|
+
brainstorming 阶段不写 Design Doc 文件,仅产出方案供 Step 1c 确认。
|
|
66
|
+
|
|
67
|
+
### 1c. 用户确认设计方案(决策阻塞点 2)
|
|
68
|
+
|
|
69
|
+
**必须使用 AskUserQuestion 工具暂停等待用户明确确认设计方案**。规则见 `comate/reference/decision-points.md` 第 2 条。确认前不得创建最终 Design Doc、写 `design_doc`、跑 design guard 或进入 build。
|
|
70
|
+
|
|
71
|
+
展示摘要:采用的技术方案、关键取舍与风险、测试策略、Spec Patch(如有)。用户确认后才继续 Step 2;要求调整则继续迭代。
|
|
72
|
+
|
|
73
|
+
### 2. 更新 comate 状态
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
# 记录 design_doc 路径
|
|
77
|
+
bash "$COMATE" state <name> set design_doc docs/superpowers/specs/YYYY-MM-DD-topic-design.md
|
|
78
|
+
|
|
79
|
+
# 如有 delta spec 变更,重新生成 handoff 以更新 hash
|
|
80
|
+
bash "$COMATE" handoff <name> design --write
|
|
81
|
+
|
|
82
|
+
# 自动流转
|
|
83
|
+
bash "$COMATE" guard <name> design --apply
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
无 delta spec 变更则跳过 handoff 重新生成。
|
|
87
|
+
|
|
88
|
+
## 退出条件
|
|
89
|
+
|
|
90
|
+
- Design Doc 已创建,frontmatter 含 `comate_change`、`role: technical-design`、`canonical_spec: openspec`
|
|
91
|
+
- `handoff_context` / `handoff_hash` 已写入且 hash 与当前产物一致(guard 强制)
|
|
92
|
+
- `design-context.md` 由脚本生成且含可追溯标记(guard 强制)
|
|
93
|
+
- `design_doc` 已写入 `.comate.yaml`
|
|
94
|
+
- **阶段守卫**:`bash "$COMATE" guard <name> design --apply` 全 PASS 后自动流转到 `phase: build`
|
|
95
|
+
|
|
96
|
+
## 上下文压缩恢复
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
bash "$COMATE" state <name> recover design
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
脚本输出结构化恢复上下文,按 Recovery action 判断下一步。
|
|
103
|
+
|
|
104
|
+
## 自动流转
|
|
105
|
+
|
|
106
|
+
> **REQUIRED NEXT SKILL:** 调用 `comate-build` skill 进入计划与构建。
|