@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.
- package/LICENSE +21 -21
- package/README.md +102 -102
- package/bin/cleanup-duplicate-superpowers.mjs +119 -0
- package/bin/cli.mjs +7 -1
- package/bin/init.mjs +25 -5
- package/bin/update.mjs +6 -5
- package/docs/COMATE_MANUAL.md +695 -695
- package/package.json +55 -55
- package/skills/comate/SKILL.md +309 -309
- package/skills/comate/reference/decision-points.md +101 -101
- package/skills/comate/reference/dirty-worktree.md +58 -58
- package/skills/comate/reference/prerequisites.md +88 -88
- package/skills/comate-archive/SKILL.md +63 -63
- package/skills/comate-build/SKILL.md +227 -227
- package/skills/comate-design/SKILL.md +156 -156
- package/skills/comate-gate/SKILL.md +262 -212
- 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 +41 -41
- 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 +95 -95
- 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 +176 -176
- package/skills/comate-verify/SKILL.md +145 -145
- package/docs/multica-integration.md +0 -400
|
@@ -1,113 +1,113 @@
|
|
|
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
|
-
**幂等性检查**:
|
|
29
|
-
|
|
30
|
-
1. 读取 `.comate.yaml` 的 `design_doc`、`handoff_context`、`handoff_hash`、`phase_step`
|
|
31
|
-
|
|
32
|
-
2. **已完成 Step 1c(方案已确认)** 的判定条件(按优先级,首个命中即算):
|
|
33
|
-
|
|
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
|
+
**幂等性检查**:
|
|
29
|
+
|
|
30
|
+
1. 读取 `.comate.yaml` 的 `design_doc`、`handoff_context`、`handoff_hash`、`phase_step`
|
|
31
|
+
|
|
32
|
+
2. **已完成 Step 1c(方案已确认)** 的判定条件(按优先级,首个命中即算):
|
|
33
|
+
|
|
34
34
|
a. **phase_step 明确标记已确认**(最高优先级):
|
|
35
35
|
- `phase_step` 值为 `design.approval-confirmed` 或 `design.complete`(旧版 `1c-confirmed` / `2` 兼容一次)
|
|
36
|
-
- → **立即判定为已完成 Step 1c**,跳过 Step 1a-1c
|
|
37
|
-
|
|
38
|
-
b. **Design Doc 文件存在且格式正确**(次优先级):
|
|
39
|
-
- `design_doc` 已设置且文件存在
|
|
40
|
-
- frontmatter 含 `comate_change: <name>`
|
|
41
|
-
- frontmatter 含 `role: technical-design`
|
|
42
|
-
- frontmatter 含 `canonical_spec: openspec`
|
|
43
|
-
- 文件内容非空(除了 frontmatter 外有实质设计内容)
|
|
44
|
-
- → **判定为已完成 Step 1c**,跳过 Step 1a-1c
|
|
45
|
-
|
|
46
|
-
**说明**:之所以 `phase_step` 优先级更高,是因为它是原子操作记录的决策状态,即使 Design Doc 文件创建失败或被误删,也能防止重复进入决策流程。
|
|
47
|
-
|
|
48
|
-
3. **幂等分支**:
|
|
36
|
+
- → **立即判定为已完成 Step 1c**,跳过 Step 1a-1c
|
|
37
|
+
|
|
38
|
+
b. **Design Doc 文件存在且格式正确**(次优先级):
|
|
39
|
+
- `design_doc` 已设置且文件存在
|
|
40
|
+
- frontmatter 含 `comate_change: <name>`
|
|
41
|
+
- frontmatter 含 `role: technical-design`
|
|
42
|
+
- frontmatter 含 `canonical_spec: openspec`
|
|
43
|
+
- 文件内容非空(除了 frontmatter 外有实质设计内容)
|
|
44
|
+
- → **判定为已完成 Step 1c**,跳过 Step 1a-1c
|
|
45
|
+
|
|
46
|
+
**说明**:之所以 `phase_step` 优先级更高,是因为它是原子操作记录的决策状态,即使 Design Doc 文件创建失败或被误删,也能防止重复进入决策流程。
|
|
47
|
+
|
|
48
|
+
3. **幂等分支**:
|
|
49
49
|
- **已完成 Step 1c 且 Design Doc 存在** → 跳过 Step 1a-1c,检查交接包:
|
|
50
|
-
- 若 `handoff_context` 和 `handoff_hash` 已设置且验证通过 → 直接进入 Step 2 的 guard 检查
|
|
51
|
-
- 若交接包缺失或 hash 不匹配 → 重新生成交接包(`bash "$COMATE" handoff <name> design --write`),**但不重新 brainstorming,不重新确认方案**,然后进入 Step 2
|
|
50
|
+
- 若 `handoff_context` 和 `handoff_hash` 已设置且验证通过 → 直接进入 Step 2 的 guard 检查
|
|
51
|
+
- 若交接包缺失或 hash 不匹配 → 重新生成交接包(`bash "$COMATE" handoff <name> design --write`),**但不重新 brainstorming,不重新确认方案**,然后进入 Step 2
|
|
52
52
|
- **已确认但 Design Doc 缺失** → 从 `.comate/design-candidate.md` 恢复已确认方案并创建 Design Doc;候选文件也缺失时停止并报告状态损坏,不得假称 Design Doc 已存在,也不得重新向用户询问同一决策
|
|
53
53
|
- **未完成 Step 1c** → 继续 Step 1a
|
|
54
|
-
|
|
55
|
-
4. **断点恢复**(根据 `phase_step` 值):
|
|
54
|
+
|
|
55
|
+
4. **断点恢复**(根据 `phase_step` 值):
|
|
56
56
|
- `phase_step` 为 `design.handoff-written`(或旧版 `1a`)→ 从 Step 1b 开始并改写新格式
|
|
57
57
|
- `phase_step` 为 `design.brainstorm-complete` / `design.approval-awaiting`(或旧版 `1b`)→ 从候选文件恢复 Step 1c 并改写新格式
|
|
58
58
|
- `phase_step` 为 `design.approval-confirmed` 或 `design.complete` → 见第 3 点幂等分支
|
|
59
|
-
|
|
59
|
+
|
|
60
60
|
5. **特别注意**:即使上下文压缩或会话中断,只要 `phase_step` 已标记 `design.approval-confirmed` 或 Design Doc 文件存在且格式正确,**就不得重新执行 brainstorming 或重新要求用户确认方案**。
|
|
61
|
-
|
|
62
|
-
### 1a. 生成 OpenSpec → Superpowers 交接包
|
|
63
|
-
|
|
64
|
-
**必须由脚本生成,不允许 agent 临场手写 summary 代替。**
|
|
65
|
-
|
|
66
|
-
```bash
|
|
67
|
-
bash "$COMATE" handoff <name> design --write
|
|
68
|
-
# 记录步骤完成
|
|
61
|
+
|
|
62
|
+
### 1a. 生成 OpenSpec → Superpowers 交接包
|
|
63
|
+
|
|
64
|
+
**必须由脚本生成,不允许 agent 临场手写 summary 代替。**
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
bash "$COMATE" handoff <name> design --write
|
|
68
|
+
# 记录步骤完成
|
|
69
69
|
bash "$COMATE" state <name> set phase_step design.handoff-written
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
脚本生成 `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`。
|
|
73
|
-
|
|
74
|
-
交接包来源:`proposal.md`、`design.md`、`tasks.md`、`specs/*/spec.md`。
|
|
75
|
-
|
|
76
|
-
### 1b. 执行 Brainstorming(带上下文)
|
|
77
|
-
|
|
78
|
-
**立即执行:** 使用 Skill 工具加载 `superpowers:brainstorming`,ARGUMENTS 包含:
|
|
79
|
-
|
|
80
|
-
```
|
|
81
|
-
Change: <name>
|
|
82
|
-
OpenSpec Context Pack: openspec/changes/<name>/.comate/handoff/design-context.md
|
|
83
|
-
Machine handoff: openspec/changes/<name>/.comate/handoff/design-context.json
|
|
84
|
-
|
|
85
|
-
OpenSpec 产物是上游事实源,不要重新定义需求,不要重写 proposal/spec。
|
|
86
|
-
基于交接包做深度技术设计:实现方案、技术风险、测试策略、边界条件。
|
|
87
|
-
如发现 delta spec 缺少验收场景,只能提出 Spec Patch 回写 OpenSpec delta spec;不要在 Design Doc 中创建第二份需求 spec。
|
|
88
|
-
|
|
89
|
-
Design Doc frontmatter 必须最小化,只含:
|
|
90
|
-
---
|
|
91
|
-
comate_change: <name>
|
|
92
|
-
role: technical-design
|
|
93
|
-
canonical_spec: openspec
|
|
94
|
-
---
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
禁止跳过;该技能不可用时停止流程并提示安装 Superpowers,不要用普通对话替代。
|
|
98
|
-
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
脚本生成 `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`。
|
|
73
|
+
|
|
74
|
+
交接包来源:`proposal.md`、`design.md`、`tasks.md`、`specs/*/spec.md`。
|
|
75
|
+
|
|
76
|
+
### 1b. 执行 Brainstorming(带上下文)
|
|
77
|
+
|
|
78
|
+
**立即执行:** 使用 Skill 工具加载 `superpowers:brainstorming`,ARGUMENTS 包含:
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
Change: <name>
|
|
82
|
+
OpenSpec Context Pack: openspec/changes/<name>/.comate/handoff/design-context.md
|
|
83
|
+
Machine handoff: openspec/changes/<name>/.comate/handoff/design-context.json
|
|
84
|
+
|
|
85
|
+
OpenSpec 产物是上游事实源,不要重新定义需求,不要重写 proposal/spec。
|
|
86
|
+
基于交接包做深度技术设计:实现方案、技术风险、测试策略、边界条件。
|
|
87
|
+
如发现 delta spec 缺少验收场景,只能提出 Spec Patch 回写 OpenSpec delta spec;不要在 Design Doc 中创建第二份需求 spec。
|
|
88
|
+
|
|
89
|
+
Design Doc frontmatter 必须最小化,只含:
|
|
90
|
+
---
|
|
91
|
+
comate_change: <name>
|
|
92
|
+
role: technical-design
|
|
93
|
+
canonical_spec: openspec
|
|
94
|
+
---
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
禁止跳过;该技能不可用时停止流程并提示安装 Superpowers,不要用普通对话替代。
|
|
98
|
+
|
|
99
99
|
brainstorming 阶段不写最终 Design Doc;但必须把完整候选方案写入 `openspec/changes/<name>/.comate/design-candidate.md`,供确认与上下文恢复使用。
|
|
100
|
-
|
|
101
|
-
**步骤完成后记录**:
|
|
102
|
-
|
|
103
|
-
```bash
|
|
100
|
+
|
|
101
|
+
**步骤完成后记录**:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
104
|
bash "$COMATE" state <name> set phase_step design.brainstorm-complete
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
### 1c. 用户确认设计方案(决策阻塞点 2)
|
|
108
|
-
|
|
109
|
-
**必须使用 AskUserQuestion 工具暂停等待用户明确确认设计方案**。规则见 `comate/reference/decision-points.md` 第 2 条。确认前不得创建最终 Design Doc、写 `design_doc`、跑 design guard 或进入 build。
|
|
110
|
-
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### 1c. 用户确认设计方案(决策阻塞点 2)
|
|
108
|
+
|
|
109
|
+
**必须使用 AskUserQuestion 工具暂停等待用户明确确认设计方案**。规则见 `comate/reference/decision-points.md` 第 2 条。确认前不得创建最终 Design Doc、写 `design_doc`、跑 design guard 或进入 build。
|
|
110
|
+
|
|
111
111
|
展示摘要:采用的技术方案、关键取舍与风险、测试策略、Spec Patch(如有)。用户确认后才继续 Step 2;要求调整则继续迭代。
|
|
112
112
|
|
|
113
113
|
提问前先确认候选文件非空,并持久化等待状态:
|
|
@@ -115,64 +115,64 @@ bash "$COMATE" state <name> set phase_step design.brainstorm-complete
|
|
|
115
115
|
```bash
|
|
116
116
|
bash "$COMATE" state <name> set phase_step design.approval-awaiting
|
|
117
117
|
```
|
|
118
|
-
|
|
119
|
-
**确认后的处理顺序(不可颠倒)**:
|
|
120
|
-
|
|
121
|
-
1. **立即记录决策状态**:
|
|
122
|
-
```bash
|
|
118
|
+
|
|
119
|
+
**确认后的处理顺序(不可颠倒)**:
|
|
120
|
+
|
|
121
|
+
1. **立即记录决策状态**:
|
|
122
|
+
```bash
|
|
123
123
|
bash "$COMATE" state <name> set phase_step design.approval-confirmed
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
2. **然后创建 Design Doc 文件**(保存到 `docs/superpowers/specs/YYYY-MM-DD-topic-design.md`),frontmatter 必须包含:
|
|
127
|
-
```yaml
|
|
128
|
-
---
|
|
129
|
-
comate_change: <name>
|
|
130
|
-
role: technical-design
|
|
131
|
-
canonical_spec: openspec
|
|
132
|
-
---
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
3. **记录 design_doc 路径**:
|
|
136
|
-
```bash
|
|
137
|
-
bash "$COMATE" state <name> set design_doc docs/superpowers/specs/YYYY-MM-DD-topic-design.md
|
|
138
|
-
```
|
|
139
|
-
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
2. **然后创建 Design Doc 文件**(保存到 `docs/superpowers/specs/YYYY-MM-DD-topic-design.md`),frontmatter 必须包含:
|
|
127
|
+
```yaml
|
|
128
|
+
---
|
|
129
|
+
comate_change: <name>
|
|
130
|
+
role: technical-design
|
|
131
|
+
canonical_spec: openspec
|
|
132
|
+
---
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
3. **记录 design_doc 路径**:
|
|
136
|
+
```bash
|
|
137
|
+
bash "$COMATE" state <name> set design_doc docs/superpowers/specs/YYYY-MM-DD-topic-design.md
|
|
138
|
+
```
|
|
139
|
+
|
|
140
140
|
**说明**:候选方案先落盘,确认后再记录 `design.approval-confirmed` 并创建最终文件。这样中断恢复既不会重复提问,也不会丢失创建 Design Doc 所需内容。
|
|
141
|
-
|
|
142
|
-
### 2. 更新 comate 状态
|
|
143
|
-
|
|
144
|
-
```bash
|
|
145
|
-
# 记录 design_doc 路径
|
|
146
|
-
bash "$COMATE" state <name> set design_doc docs/superpowers/specs/YYYY-MM-DD-topic-design.md
|
|
147
|
-
|
|
148
|
-
# 如有 delta spec 变更,重新生成 handoff 以更新 hash
|
|
149
|
-
bash "$COMATE" handoff <name> design --write
|
|
150
|
-
|
|
151
|
-
# 记录步骤完成
|
|
141
|
+
|
|
142
|
+
### 2. 更新 comate 状态
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
# 记录 design_doc 路径
|
|
146
|
+
bash "$COMATE" state <name> set design_doc docs/superpowers/specs/YYYY-MM-DD-topic-design.md
|
|
147
|
+
|
|
148
|
+
# 如有 delta spec 变更,重新生成 handoff 以更新 hash
|
|
149
|
+
bash "$COMATE" handoff <name> design --write
|
|
150
|
+
|
|
151
|
+
# 记录步骤完成
|
|
152
152
|
bash "$COMATE" state <name> set phase_step design.complete
|
|
153
|
-
|
|
154
|
-
# 自动流转
|
|
155
|
-
bash "$COMATE" guard <name> design --apply
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
无 delta spec 变更则跳过 handoff 重新生成。
|
|
159
|
-
|
|
160
|
-
## 退出条件
|
|
161
|
-
|
|
162
|
-
- Design Doc 已创建,frontmatter 含 `comate_change`、`role: technical-design`、`canonical_spec: openspec`
|
|
163
|
-
- `handoff_context` / `handoff_hash` 已写入且 hash 与当前产物一致(guard 强制)
|
|
164
|
-
- `design-context.md` 由脚本生成且含可追溯标记(guard 强制)
|
|
165
|
-
- `design_doc` 已写入 `.comate.yaml`
|
|
166
|
-
- **阶段守卫**:`bash "$COMATE" guard <name> design --apply` 全 PASS 后自动流转到 `phase: build`
|
|
167
|
-
|
|
168
|
-
## 上下文压缩恢复
|
|
169
|
-
|
|
170
|
-
```bash
|
|
171
|
-
bash "$COMATE" state <name> recover design
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
脚本输出结构化恢复上下文,按 Recovery action 判断下一步。
|
|
175
|
-
|
|
176
|
-
## 自动流转
|
|
177
|
-
|
|
178
|
-
> **REQUIRED NEXT SKILL:** 调用 `comate-build` skill 进入计划与构建。
|
|
153
|
+
|
|
154
|
+
# 自动流转
|
|
155
|
+
bash "$COMATE" guard <name> design --apply
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
无 delta spec 变更则跳过 handoff 重新生成。
|
|
159
|
+
|
|
160
|
+
## 退出条件
|
|
161
|
+
|
|
162
|
+
- Design Doc 已创建,frontmatter 含 `comate_change`、`role: technical-design`、`canonical_spec: openspec`
|
|
163
|
+
- `handoff_context` / `handoff_hash` 已写入且 hash 与当前产物一致(guard 强制)
|
|
164
|
+
- `design-context.md` 由脚本生成且含可追溯标记(guard 强制)
|
|
165
|
+
- `design_doc` 已写入 `.comate.yaml`
|
|
166
|
+
- **阶段守卫**:`bash "$COMATE" guard <name> design --apply` 全 PASS 后自动流转到 `phase: build`
|
|
167
|
+
|
|
168
|
+
## 上下文压缩恢复
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
bash "$COMATE" state <name> recover design
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
脚本输出结构化恢复上下文,按 Recovery action 判断下一步。
|
|
175
|
+
|
|
176
|
+
## 自动流转
|
|
177
|
+
|
|
178
|
+
> **REQUIRED NEXT SKILL:** 调用 `comate-build` skill 进入计划与构建。
|