@house365/comate 0.9.3 → 0.9.4
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 +106 -106
- package/bin/init.mjs +5 -10
- package/docs/COMATE_MANUAL.md +710 -710
- package/package.json +1 -1
- package/skills/comate/SKILL.md +217 -217
- package/skills/comate/reference/decision-points.md +103 -103
- 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 +262 -262
- 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 +157 -157
- package/skills/comate-verify/SKILL.md +155 -155
package/package.json
CHANGED
package/skills/comate/SKILL.md
CHANGED
|
@@ -1,217 +1,217 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: comate
|
|
3
|
-
description: "comate —— SDD (规约驱动开发) 编排器。用 /comate 自动探测阶段并分派。五阶段:open → design → build → verify → archive。"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# comate —— SDD (规约驱动开发) 编排器
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
**核心原则:brainstorming 不可跳过。每个变更都必须经过深度设计(fix 预设除外)。**
|
|
10
|
-
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
## 决策核心
|
|
14
|
-
|
|
15
|
-
agent 做决策只需读本节,其余参见末尾「参考附录」。决策阻塞点的完整规则见 `comate/reference/decision-points.md`(单一真相源)。
|
|
16
|
-
|
|
17
|
-
### 自动阶段探测
|
|
18
|
-
|
|
19
|
-
**Step 0:活跃 change 发现 + 意图探测**
|
|
20
|
-
|
|
21
|
-
1. 先探测预设;命中 fix 条件则直接调用 `/comate-fix`,不进入普通 open 分支。
|
|
22
|
-
2. 无预设命中时,运行 `openspec list --json` 获取所有活跃 change。
|
|
23
|
-
|
|
24
|
-
**预设探测优先级最高**:
|
|
25
|
-
- 用户明确描述 bug 修复或文案/配置/文档/prompt 小调整 + 满足 fix 条件 → 直接调用 `/comate-fix`
|
|
26
|
-
- **用户输入指向一份原始 PRD**(给了 PRD 路径/编号,或明确说「这是 PRD / 从这份需求文档开始」,典型路径 `docs/knowledge-base/**/PRD-*.md`)**且无对应活跃 change** → 直接调用 `/comate-gate`(阶段 0:先过门禁,再拆分建 change)。不要直接调 `/comate-open`——PRD 必须先过质量门禁。
|
|
27
|
-
- 无预设命中 → 按下表处理
|
|
28
|
-
|
|
29
|
-
| 活跃 change | 用户输入 | 行为 |
|
|
30
|
-
|-------------|----------|------|
|
|
31
|
-
| 无 | 指向原始 PRD | → 调用 `/comate-gate` |
|
|
32
|
-
| 无 | 非预设输入 | → 调用 `/comate-open` |
|
|
33
|
-
| 恰好 1 个 | `/comate <描述>` | → **询问**:继续该 change 还是新建 |
|
|
34
|
-
| 多个 | `/comate <描述>` | → **询问**:继续已有还是新建;继续则列出供选择 |
|
|
35
|
-
| 恰好 1 个 | `/comate` 无描述 | → 自动选中,进入 Step 1 |
|
|
36
|
-
| 多个 | `/comate` 无描述 | → 列出 change 供用户选择 |
|
|
37
|
-
|
|
38
|
-
<IMPORTANT>
|
|
39
|
-
用户选择「新建 change」时,**必须调用 `/comate-open`**,不要直接调 `/opsx:new`。
|
|
40
|
-
`/comate-open` 做双重初始化:OpenSpec 产物(由内部 `/opsx:new` 创建)+ `.comate.yaml` 状态文件。
|
|
41
|
-
直接调 `/opsx:new` 会导致 `.comate.yaml` 缺失,破坏后续阶段探测。
|
|
42
|
-
</IMPORTANT>
|
|
43
|
-
|
|
44
|
-
**Step 1:读取 `.comate.yaml` 状态元数据**
|
|
45
|
-
|
|
46
|
-
优先读 `openspec/changes/<name>/.comate.yaml`。不可用时回落到 `openspec status --change "<name>" --json`、`tasks.md`、`docs/superpowers/` 文件检查。
|
|
47
|
-
|
|
48
|
-
**断点恢复规则**:
|
|
49
|
-
- 每次上下文恢复都重跑 Step 0、Step 1;不要信任对话历史做阶段探测。
|
|
50
|
-
- 有活跃 change 且工作树有未提交改动时,按 `comate/reference/dirty-worktree.md` 协议处理。
|
|
51
|
-
- 若 `phase: build`,先检查 `build_mode`、`isolation`、`tdd_mode` 是否已设;任一未设则回 `/comate-build` 对应步骤补充;都已设则读 tasks.md 下一个未勾选任务继续。
|
|
52
|
-
- 若 `phase: verify` 且 `verify_result: fail`,按决策点 4 分级处理:CRITICAL 失败直接 `state transition <name> verify-fail` 回 `/comate-build`(不询问,回退前报告失败项);仅 WARNING/SUGGESTION 或 Spec 漂移时才 AskUserQuestion 暂停。
|
|
53
|
-
- 若 `phase: open` 但 proposal/design/tasks 已完成,先 `bash "$COMATE" guard <name> open --apply` 修复状态,再继续探测。
|
|
54
|
-
- 若 `phase: archive`,只调用 `/comate-archive`;归档成功后 change 移入 archive 目录,不要再对旧活跃目录跑 guard。
|
|
55
|
-
|
|
56
|
-
**Step 2:阶段判定**(按顺序检查,首个命中者生效)
|
|
57
|
-
|
|
58
|
-
1. `archived: true` 或 change 已移入 archive → 流程完成
|
|
59
|
-
2. `verify_result: pass` 且 `archived` 非 `true` → 调用 `/comate-archive`
|
|
60
|
-
3. `verify_result: fail` → 验证失败决策阻塞点(决策点 4)
|
|
61
|
-
4. `phase: verify` 或 tasks.md 全勾 → 调用 `/comate-verify`
|
|
62
|
-
5. `phase: build` 或有 Design Doc 但 plan/执行未完成 → 按 workflow 路由:`fix`→`/comate-fix`,`full`→`/comate-build`
|
|
63
|
-
6. `phase: design` 或有 change 但无 Design Doc → 调用 `/comate-design`
|
|
64
|
-
7. `phase: open` 或有活跃 change 但 `.comate.yaml` 缺失 → 调用 `/comate-open`
|
|
65
|
-
8. 无活跃 change → 调用 `/comate-open`
|
|
66
|
-
|
|
67
|
-
元数据与文件状态冲突时,以可验证的文件状态为准,先用 `state set` 修正 `.comate.yaml` 再继续。
|
|
68
|
-
|
|
69
|
-
### 预设升级判定
|
|
70
|
-
|
|
71
|
-
**fix → full**:见 `/comate-fix` 的两种模式升级条件(bug 模式 3+ 文件 / 架构变更 / schema 变更 / 新 API / 跨模块;调整模式 5+ 文件 / 多模块协调 / 5+ 测试 / 配置项增删 / 新 capability / delta spec)。
|
|
72
|
-
|
|
73
|
-
### 错误处理速查
|
|
74
|
-
|
|
75
|
-
| 场景 | 处理 |
|
|
76
|
-
|------|------|
|
|
77
|
-
| `openspec list --json` 失败 | 检查 openspec 是否安装,提示运行 `comate init` |
|
|
78
|
-
| 子 skill 不可用 | 停止流程,提示安装或启用对应 skill |
|
|
79
|
-
| `.comate.yaml` 损坏或缺失 | 以文件状态为真相源,用 `bash "$COMATE" state set` 修正后继续 |
|
|
80
|
-
| 构建/测试失败 | 回 build 阶段修复,不进入 verify |
|
|
81
|
-
| change 目录结构不全 | 按 `comate-open` 产物要求补齐缺失文件 |
|
|
82
|
-
|
|
83
|
-
### 阶段流转
|
|
84
|
-
|
|
85
|
-
<IMPORTANT>
|
|
86
|
-
一次 `/comate` 调用从探测到的阶段开始,满足退出条件后推进到下一阶段。
|
|
87
|
-
|
|
88
|
-
流转链:open → design → build → verify → archive
|
|
89
|
-
|
|
90
|
-
**连续执行要求**:从探测到的阶段开始,agent 自动连续走完后续阶段。但**自动推进仅适用于无用户决策的流转点**。遇到决策阻塞点时,**必须用 AskUserQuestion 工具暂停等待用户明确回应**,不得用推荐规则、默认值或历史偏好替代用户确认,也不得只输出文字提示后继续执行。
|
|
91
|
-
|
|
92
|
-
7 个决策点(部分含自动处理分支)+ Red Flags 表见 `comate/reference/decision-points.md`。**每个决策点先按三类行动分类**(用户决策 / 自动处理 / 停止条件):判定属用户决策才用 AskUserQuestion 阻塞等待用户选择;属自动处理则直接执行并如实报告;其他无歧义流转自动进行,不得中途退出。
|
|
93
|
-
</IMPORTANT>
|
|
94
|
-
|
|
95
|
-
---
|
|
96
|
-
|
|
97
|
-
## 子命令速查
|
|
98
|
-
|
|
99
|
-
| 命令 | 阶段 | Owner | 产物 |
|
|
100
|
-
|------|------|-------|------|
|
|
101
|
-
| `/comate-gate` | 0. PRD 门禁与拆分 | Claude | `<PRD>.gate.yaml`, 评审报告, N 个 change |
|
|
102
|
-
| `/comate-open` | 1. 开题 | OpenSpec | proposal.md, design.md, tasks.md |
|
|
103
|
-
| `/comate-design` | 2. 深度设计 | Superpowers | Design Doc, delta spec |
|
|
104
|
-
| `/comate-build` | 3. 计划与构建 | Superpowers | 实施计划, 代码提交 |
|
|
105
|
-
| `/comate-verify` | 4. 验证收尾 | 双方 | 验证报告, 分支处理 |
|
|
106
|
-
| `/comate-archive` | 5. 归档 | OpenSpec | delta→main spec 同步, design doc 标注, 归档 |
|
|
107
|
-
| `/comate-fix` | 预设 | 双方 | 快速小改动(bug 修复 + 非 bug 调整,跳过 brainstorming) |
|
|
108
|
-
| `/comate-kb-integration` | 工具 | Claude | 第三方对接档案(从官方文档 URL 生成 integrations 目录档案) |
|
|
109
|
-
|
|
110
|
-
```
|
|
111
|
-
[原始 PRD] ──→ /comate-gate ──┐ (门禁+拆分,扇出 N 个 change)
|
|
112
|
-
(Claude) │
|
|
113
|
-
/comate ▼
|
|
114
|
-
↓ 自动探测
|
|
115
|
-
/comate-open ──→ /comate-design ──→ /comate-build ──→ /comate-verify ──→ /comate-archive
|
|
116
|
-
(OpenSpec) (Superpowers) (Superpowers) (双方) (OpenSpec)
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
需求来自对话时从 `/comate-open` 起步;来自原始 PRD 时先过 `/comate-gate` 门禁再拆分。
|
|
120
|
-
|
|
121
|
-
---
|
|
122
|
-
|
|
123
|
-
## 参考附录
|
|
124
|
-
|
|
125
|
-
### 脚本定位(单一入口)
|
|
126
|
-
|
|
127
|
-
comate 收敛为**一个分发器** `comate/scripts/comate.sh`。skill 里只需定位这一个脚本并缓存到 `$COMATE`:
|
|
128
|
-
|
|
129
|
-
```bash
|
|
130
|
-
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
|
|
131
|
-
[ -d "$r" ] && find "$r" -maxdepth 6 -path '*/comate/scripts/comate.sh' -type f -print -quit 2>/dev/null
|
|
132
|
-
done | head -1)}"
|
|
133
|
-
if [ -z "$COMATE" ]; then
|
|
134
|
-
echo "ERROR: comate.sh 未找到,请确认 comate skill 已安装。" >&2
|
|
135
|
-
return 1 2>/dev/null || exit 1
|
|
136
|
-
fi
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
之后全程复用 `$COMATE`:
|
|
140
|
-
|
|
141
|
-
```bash
|
|
142
|
-
bash "$COMATE" state <name> init <full|fix>
|
|
143
|
-
bash "$COMATE" state <name> transition <event>
|
|
144
|
-
bash "$COMATE" state <name> check <phase> [--json]
|
|
145
|
-
bash "$COMATE" state <name> recover <phase>
|
|
146
|
-
bash "$COMATE" state <name> scale
|
|
147
|
-
bash "$COMATE" state <name> validate
|
|
148
|
-
bash "$COMATE" guard <name> <phase> [--apply] [--json]
|
|
149
|
-
bash "$COMATE" handoff <name> <design|build> --write [--full]
|
|
150
|
-
bash "$COMATE" sources <name> track <file...> [--note <text>]
|
|
151
|
-
bash "$COMATE" sources <name> check | list
|
|
152
|
-
bash "$COMATE" sources find <file>
|
|
153
|
-
bash "$COMATE" archive <name> [--dry-run]
|
|
154
|
-
bash "$COMATE" status
|
|
155
|
-
bash "$COMATE" doctor
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
`guard --apply` 在检查全 PASS 后委托 `state transition` 自动流转。退出码契约:`0` 通过 / `1` 校验阻塞 / `2` 用法错误 / `3` 环境缺失 / `4` 状态文件损坏。
|
|
159
|
-
|
|
160
|
-
### `.comate.yaml` 字段参考
|
|
161
|
-
|
|
162
|
-
状态文件为「扁平 `key: value`」子集(不允许嵌套/列表/多行)。完整字段模板见 `comate/scripts/comate-lib.sh` 的 `FIELD_ORDER`。关键字段:
|
|
163
|
-
|
|
164
|
-
| 字段 | 含义 |
|
|
165
|
-
|------|------|
|
|
166
|
-
| `schema_version` | 状态文件格式版本(当前 1) |
|
|
167
|
-
| `workflow` | `full` / `fix` |
|
|
168
|
-
| `phase` | `open` / `design` / `build` / `verify` / `archive` |
|
|
169
|
-
| `build_mode` | `subagent-driven-development` / `executing-plans` / `direct` |
|
|
170
|
-
| `tdd_mode` | `tdd` / `direct`(build→verify 前必须已选;fix 默认 `direct`) |
|
|
171
|
-
| `isolation` | `branch` / `worktree`(build→verify 前必须已选) |
|
|
172
|
-
| `verify_mode` | `light` / `full`(由 scale 评估写入) |
|
|
173
|
-
| `verify_result` | `pending` / `pass` / `fail` |
|
|
174
|
-
| `verification_report` | 验证报告路径,verify-pass 前必须指向真实文件 |
|
|
175
|
-
| `branch_status` | `pending` / `handled` |
|
|
176
|
-
| `handoff_context` / `handoff_hash` | design 交接包路径 + 源文件 sha256 |
|
|
177
|
-
| `impl_context` / `impl_hash` | build 交接包路径 + plan+tasks 的 sha256(防漂移) |
|
|
178
|
-
| `direct_override` | full 流程用 `direct` 需显式 `true` |
|
|
179
|
-
| `base_ref` / `base_branch` | init 记录的 HEAD + 探测到的默认分支 |
|
|
180
|
-
| `source_kind` / `source_manifest` | 需求来源类型(`conversation` / `file`)+ 知识库源文件清单路径(防漂移) |
|
|
181
|
-
| `build_command` / `verify_command` | 可选,项目构建/验证命令 |
|
|
182
|
-
|
|
183
|
-
状态机硬约束(由 `guard` 与 `state transition` 双重强制):
|
|
184
|
-
- `build → verify` 前 `isolation` 必须为 `branch` 或 `worktree`
|
|
185
|
-
- `build → verify` 前 `build_mode` 必须已选
|
|
186
|
-
- `build → verify` 前 `tdd_mode` 必须为 `tdd` 或 `direct`
|
|
187
|
-
- `build_mode: direct` 默认仅 fix;full 流程需 `direct_override: true`
|
|
188
|
-
- `verify → archive` 前 `verification_report` 指向真实文件、`branch_status: handled`、`impl_hash` 与当前 plan+tasks 一致
|
|
189
|
-
|
|
190
|
-
### 文件结构
|
|
191
|
-
|
|
192
|
-
```
|
|
193
|
-
openspec/ # OpenSpec —— WHAT
|
|
194
|
-
├── changes/<name>/
|
|
195
|
-
│ ├── .comate.yaml # comate 状态机真相源
|
|
196
|
-
│ ├── proposal.md / design.md / tasks.md
|
|
197
|
-
│ ├── specs/<capability>/spec.md # delta 能力规格
|
|
198
|
-
│ └── .comate/handoff/ # 脚本生成的阶段交接包
|
|
199
|
-
│ └── ../sources.manifest # 知识库源文件清单(source_kind=file 时)
|
|
200
|
-
└── specs/<capability>/spec.md # 主 spec(归档时由 delta 覆盖)
|
|
201
|
-
|
|
202
|
-
docs/knowledge-base/<...>.md # 可追踪的需求源文档(source_kind=file)
|
|
203
|
-
|
|
204
|
-
docs/superpowers/ # Superpowers —— HOW
|
|
205
|
-
├── specs/YYYY-MM-DD-<topic>-design.md # Design Doc
|
|
206
|
-
├── plans/YYYY-MM-DD-<feature>.md # 实施计划
|
|
207
|
-
└── reports/ # 验证报告
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
### 最佳实践
|
|
211
|
-
|
|
212
|
-
1. brainstorming 不可跳过(fix 除外)
|
|
213
|
-
2. delta spec 是活文档,build 阶段随时改,归档时同步
|
|
214
|
-
3. 交接包由脚本生成(`handoff`),guard 校验 source/hash/mode
|
|
215
|
-
4. tasks.md 实时同步,每完成一个任务勾选并提交
|
|
216
|
-
5. 验证通过才归档
|
|
217
|
-
6. 预设有边界,命中升级条件及时转 full
|
|
1
|
+
---
|
|
2
|
+
name: comate
|
|
3
|
+
description: "comate —— SDD (规约驱动开发) 编排器。用 /comate 自动探测阶段并分派。五阶段:open → design → build → verify → archive。"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# comate —— SDD (规约驱动开发) 编排器
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
**核心原则:brainstorming 不可跳过。每个变更都必须经过深度设计(fix 预设除外)。**
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 决策核心
|
|
14
|
+
|
|
15
|
+
agent 做决策只需读本节,其余参见末尾「参考附录」。决策阻塞点的完整规则见 `comate/reference/decision-points.md`(单一真相源)。
|
|
16
|
+
|
|
17
|
+
### 自动阶段探测
|
|
18
|
+
|
|
19
|
+
**Step 0:活跃 change 发现 + 意图探测**
|
|
20
|
+
|
|
21
|
+
1. 先探测预设;命中 fix 条件则直接调用 `/comate-fix`,不进入普通 open 分支。
|
|
22
|
+
2. 无预设命中时,运行 `openspec list --json` 获取所有活跃 change。
|
|
23
|
+
|
|
24
|
+
**预设探测优先级最高**:
|
|
25
|
+
- 用户明确描述 bug 修复或文案/配置/文档/prompt 小调整 + 满足 fix 条件 → 直接调用 `/comate-fix`
|
|
26
|
+
- **用户输入指向一份原始 PRD**(给了 PRD 路径/编号,或明确说「这是 PRD / 从这份需求文档开始」,典型路径 `docs/knowledge-base/**/PRD-*.md`)**且无对应活跃 change** → 直接调用 `/comate-gate`(阶段 0:先过门禁,再拆分建 change)。不要直接调 `/comate-open`——PRD 必须先过质量门禁。
|
|
27
|
+
- 无预设命中 → 按下表处理
|
|
28
|
+
|
|
29
|
+
| 活跃 change | 用户输入 | 行为 |
|
|
30
|
+
|-------------|----------|------|
|
|
31
|
+
| 无 | 指向原始 PRD | → 调用 `/comate-gate` |
|
|
32
|
+
| 无 | 非预设输入 | → 调用 `/comate-open` |
|
|
33
|
+
| 恰好 1 个 | `/comate <描述>` | → **询问**:继续该 change 还是新建 |
|
|
34
|
+
| 多个 | `/comate <描述>` | → **询问**:继续已有还是新建;继续则列出供选择 |
|
|
35
|
+
| 恰好 1 个 | `/comate` 无描述 | → 自动选中,进入 Step 1 |
|
|
36
|
+
| 多个 | `/comate` 无描述 | → 列出 change 供用户选择 |
|
|
37
|
+
|
|
38
|
+
<IMPORTANT>
|
|
39
|
+
用户选择「新建 change」时,**必须调用 `/comate-open`**,不要直接调 `/opsx:new`。
|
|
40
|
+
`/comate-open` 做双重初始化:OpenSpec 产物(由内部 `/opsx:new` 创建)+ `.comate.yaml` 状态文件。
|
|
41
|
+
直接调 `/opsx:new` 会导致 `.comate.yaml` 缺失,破坏后续阶段探测。
|
|
42
|
+
</IMPORTANT>
|
|
43
|
+
|
|
44
|
+
**Step 1:读取 `.comate.yaml` 状态元数据**
|
|
45
|
+
|
|
46
|
+
优先读 `openspec/changes/<name>/.comate.yaml`。不可用时回落到 `openspec status --change "<name>" --json`、`tasks.md`、`docs/superpowers/` 文件检查。
|
|
47
|
+
|
|
48
|
+
**断点恢复规则**:
|
|
49
|
+
- 每次上下文恢复都重跑 Step 0、Step 1;不要信任对话历史做阶段探测。
|
|
50
|
+
- 有活跃 change 且工作树有未提交改动时,按 `comate/reference/dirty-worktree.md` 协议处理。
|
|
51
|
+
- 若 `phase: build`,先检查 `build_mode`、`isolation`、`tdd_mode` 是否已设;任一未设则回 `/comate-build` 对应步骤补充;都已设则读 tasks.md 下一个未勾选任务继续。
|
|
52
|
+
- 若 `phase: verify` 且 `verify_result: fail`,按决策点 4 分级处理:CRITICAL 失败直接 `state transition <name> verify-fail` 回 `/comate-build`(不询问,回退前报告失败项);仅 WARNING/SUGGESTION 或 Spec 漂移时才 AskUserQuestion 暂停。
|
|
53
|
+
- 若 `phase: open` 但 proposal/design/tasks 已完成,先 `bash "$COMATE" guard <name> open --apply` 修复状态,再继续探测。
|
|
54
|
+
- 若 `phase: archive`,只调用 `/comate-archive`;归档成功后 change 移入 archive 目录,不要再对旧活跃目录跑 guard。
|
|
55
|
+
|
|
56
|
+
**Step 2:阶段判定**(按顺序检查,首个命中者生效)
|
|
57
|
+
|
|
58
|
+
1. `archived: true` 或 change 已移入 archive → 流程完成
|
|
59
|
+
2. `verify_result: pass` 且 `archived` 非 `true` → 调用 `/comate-archive`
|
|
60
|
+
3. `verify_result: fail` → 验证失败决策阻塞点(决策点 4)
|
|
61
|
+
4. `phase: verify` 或 tasks.md 全勾 → 调用 `/comate-verify`
|
|
62
|
+
5. `phase: build` 或有 Design Doc 但 plan/执行未完成 → 按 workflow 路由:`fix`→`/comate-fix`,`full`→`/comate-build`
|
|
63
|
+
6. `phase: design` 或有 change 但无 Design Doc → 调用 `/comate-design`
|
|
64
|
+
7. `phase: open` 或有活跃 change 但 `.comate.yaml` 缺失 → 调用 `/comate-open`
|
|
65
|
+
8. 无活跃 change → 调用 `/comate-open`
|
|
66
|
+
|
|
67
|
+
元数据与文件状态冲突时,以可验证的文件状态为准,先用 `state set` 修正 `.comate.yaml` 再继续。
|
|
68
|
+
|
|
69
|
+
### 预设升级判定
|
|
70
|
+
|
|
71
|
+
**fix → full**:见 `/comate-fix` 的两种模式升级条件(bug 模式 3+ 文件 / 架构变更 / schema 变更 / 新 API / 跨模块;调整模式 5+ 文件 / 多模块协调 / 5+ 测试 / 配置项增删 / 新 capability / delta spec)。
|
|
72
|
+
|
|
73
|
+
### 错误处理速查
|
|
74
|
+
|
|
75
|
+
| 场景 | 处理 |
|
|
76
|
+
|------|------|
|
|
77
|
+
| `openspec list --json` 失败 | 检查 openspec 是否安装,提示运行 `comate init` |
|
|
78
|
+
| 子 skill 不可用 | 停止流程,提示安装或启用对应 skill |
|
|
79
|
+
| `.comate.yaml` 损坏或缺失 | 以文件状态为真相源,用 `bash "$COMATE" state set` 修正后继续 |
|
|
80
|
+
| 构建/测试失败 | 回 build 阶段修复,不进入 verify |
|
|
81
|
+
| change 目录结构不全 | 按 `comate-open` 产物要求补齐缺失文件 |
|
|
82
|
+
|
|
83
|
+
### 阶段流转
|
|
84
|
+
|
|
85
|
+
<IMPORTANT>
|
|
86
|
+
一次 `/comate` 调用从探测到的阶段开始,满足退出条件后推进到下一阶段。
|
|
87
|
+
|
|
88
|
+
流转链:open → design → build → verify → archive
|
|
89
|
+
|
|
90
|
+
**连续执行要求**:从探测到的阶段开始,agent 自动连续走完后续阶段。但**自动推进仅适用于无用户决策的流转点**。遇到决策阻塞点时,**必须用 AskUserQuestion 工具暂停等待用户明确回应**,不得用推荐规则、默认值或历史偏好替代用户确认,也不得只输出文字提示后继续执行。
|
|
91
|
+
|
|
92
|
+
7 个决策点(部分含自动处理分支)+ Red Flags 表见 `comate/reference/decision-points.md`。**每个决策点先按三类行动分类**(用户决策 / 自动处理 / 停止条件):判定属用户决策才用 AskUserQuestion 阻塞等待用户选择;属自动处理则直接执行并如实报告;其他无歧义流转自动进行,不得中途退出。
|
|
93
|
+
</IMPORTANT>
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## 子命令速查
|
|
98
|
+
|
|
99
|
+
| 命令 | 阶段 | Owner | 产物 |
|
|
100
|
+
|------|------|-------|------|
|
|
101
|
+
| `/comate-gate` | 0. PRD 门禁与拆分 | Claude | `<PRD>.gate.yaml`, 评审报告, N 个 change |
|
|
102
|
+
| `/comate-open` | 1. 开题 | OpenSpec | proposal.md, design.md, tasks.md |
|
|
103
|
+
| `/comate-design` | 2. 深度设计 | Superpowers | Design Doc, delta spec |
|
|
104
|
+
| `/comate-build` | 3. 计划与构建 | Superpowers | 实施计划, 代码提交 |
|
|
105
|
+
| `/comate-verify` | 4. 验证收尾 | 双方 | 验证报告, 分支处理 |
|
|
106
|
+
| `/comate-archive` | 5. 归档 | OpenSpec | delta→main spec 同步, design doc 标注, 归档 |
|
|
107
|
+
| `/comate-fix` | 预设 | 双方 | 快速小改动(bug 修复 + 非 bug 调整,跳过 brainstorming) |
|
|
108
|
+
| `/comate-kb-integration` | 工具 | Claude | 第三方对接档案(从官方文档 URL 生成 integrations 目录档案) |
|
|
109
|
+
|
|
110
|
+
```
|
|
111
|
+
[原始 PRD] ──→ /comate-gate ──┐ (门禁+拆分,扇出 N 个 change)
|
|
112
|
+
(Claude) │
|
|
113
|
+
/comate ▼
|
|
114
|
+
↓ 自动探测
|
|
115
|
+
/comate-open ──→ /comate-design ──→ /comate-build ──→ /comate-verify ──→ /comate-archive
|
|
116
|
+
(OpenSpec) (Superpowers) (Superpowers) (双方) (OpenSpec)
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
需求来自对话时从 `/comate-open` 起步;来自原始 PRD 时先过 `/comate-gate` 门禁再拆分。
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## 参考附录
|
|
124
|
+
|
|
125
|
+
### 脚本定位(单一入口)
|
|
126
|
+
|
|
127
|
+
comate 收敛为**一个分发器** `comate/scripts/comate.sh`。skill 里只需定位这一个脚本并缓存到 `$COMATE`:
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
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
|
|
131
|
+
[ -d "$r" ] && find "$r" -maxdepth 6 -path '*/comate/scripts/comate.sh' -type f -print -quit 2>/dev/null
|
|
132
|
+
done | head -1)}"
|
|
133
|
+
if [ -z "$COMATE" ]; then
|
|
134
|
+
echo "ERROR: comate.sh 未找到,请确认 comate skill 已安装。" >&2
|
|
135
|
+
return 1 2>/dev/null || exit 1
|
|
136
|
+
fi
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
之后全程复用 `$COMATE`:
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
bash "$COMATE" state <name> init <full|fix>
|
|
143
|
+
bash "$COMATE" state <name> transition <event>
|
|
144
|
+
bash "$COMATE" state <name> check <phase> [--json]
|
|
145
|
+
bash "$COMATE" state <name> recover <phase>
|
|
146
|
+
bash "$COMATE" state <name> scale
|
|
147
|
+
bash "$COMATE" state <name> validate
|
|
148
|
+
bash "$COMATE" guard <name> <phase> [--apply] [--json]
|
|
149
|
+
bash "$COMATE" handoff <name> <design|build> --write [--full]
|
|
150
|
+
bash "$COMATE" sources <name> track <file...> [--note <text>]
|
|
151
|
+
bash "$COMATE" sources <name> check | list
|
|
152
|
+
bash "$COMATE" sources find <file>
|
|
153
|
+
bash "$COMATE" archive <name> [--dry-run]
|
|
154
|
+
bash "$COMATE" status
|
|
155
|
+
bash "$COMATE" doctor
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
`guard --apply` 在检查全 PASS 后委托 `state transition` 自动流转。退出码契约:`0` 通过 / `1` 校验阻塞 / `2` 用法错误 / `3` 环境缺失 / `4` 状态文件损坏。
|
|
159
|
+
|
|
160
|
+
### `.comate.yaml` 字段参考
|
|
161
|
+
|
|
162
|
+
状态文件为「扁平 `key: value`」子集(不允许嵌套/列表/多行)。完整字段模板见 `comate/scripts/comate-lib.sh` 的 `FIELD_ORDER`。关键字段:
|
|
163
|
+
|
|
164
|
+
| 字段 | 含义 |
|
|
165
|
+
|------|------|
|
|
166
|
+
| `schema_version` | 状态文件格式版本(当前 1) |
|
|
167
|
+
| `workflow` | `full` / `fix` |
|
|
168
|
+
| `phase` | `open` / `design` / `build` / `verify` / `archive` |
|
|
169
|
+
| `build_mode` | `subagent-driven-development` / `executing-plans` / `direct` |
|
|
170
|
+
| `tdd_mode` | `tdd` / `direct`(build→verify 前必须已选;fix 默认 `direct`) |
|
|
171
|
+
| `isolation` | `branch` / `worktree`(build→verify 前必须已选) |
|
|
172
|
+
| `verify_mode` | `light` / `full`(由 scale 评估写入) |
|
|
173
|
+
| `verify_result` | `pending` / `pass` / `fail` |
|
|
174
|
+
| `verification_report` | 验证报告路径,verify-pass 前必须指向真实文件 |
|
|
175
|
+
| `branch_status` | `pending` / `handled` |
|
|
176
|
+
| `handoff_context` / `handoff_hash` | design 交接包路径 + 源文件 sha256 |
|
|
177
|
+
| `impl_context` / `impl_hash` | build 交接包路径 + plan+tasks 的 sha256(防漂移) |
|
|
178
|
+
| `direct_override` | full 流程用 `direct` 需显式 `true` |
|
|
179
|
+
| `base_ref` / `base_branch` | init 记录的 HEAD + 探测到的默认分支 |
|
|
180
|
+
| `source_kind` / `source_manifest` | 需求来源类型(`conversation` / `file`)+ 知识库源文件清单路径(防漂移) |
|
|
181
|
+
| `build_command` / `verify_command` | 可选,项目构建/验证命令 |
|
|
182
|
+
|
|
183
|
+
状态机硬约束(由 `guard` 与 `state transition` 双重强制):
|
|
184
|
+
- `build → verify` 前 `isolation` 必须为 `branch` 或 `worktree`
|
|
185
|
+
- `build → verify` 前 `build_mode` 必须已选
|
|
186
|
+
- `build → verify` 前 `tdd_mode` 必须为 `tdd` 或 `direct`
|
|
187
|
+
- `build_mode: direct` 默认仅 fix;full 流程需 `direct_override: true`
|
|
188
|
+
- `verify → archive` 前 `verification_report` 指向真实文件、`branch_status: handled`、`impl_hash` 与当前 plan+tasks 一致
|
|
189
|
+
|
|
190
|
+
### 文件结构
|
|
191
|
+
|
|
192
|
+
```
|
|
193
|
+
openspec/ # OpenSpec —— WHAT
|
|
194
|
+
├── changes/<name>/
|
|
195
|
+
│ ├── .comate.yaml # comate 状态机真相源
|
|
196
|
+
│ ├── proposal.md / design.md / tasks.md
|
|
197
|
+
│ ├── specs/<capability>/spec.md # delta 能力规格
|
|
198
|
+
│ └── .comate/handoff/ # 脚本生成的阶段交接包
|
|
199
|
+
│ └── ../sources.manifest # 知识库源文件清单(source_kind=file 时)
|
|
200
|
+
└── specs/<capability>/spec.md # 主 spec(归档时由 delta 覆盖)
|
|
201
|
+
|
|
202
|
+
docs/knowledge-base/<...>.md # 可追踪的需求源文档(source_kind=file)
|
|
203
|
+
|
|
204
|
+
docs/superpowers/ # Superpowers —— HOW
|
|
205
|
+
├── specs/YYYY-MM-DD-<topic>-design.md # Design Doc
|
|
206
|
+
├── plans/YYYY-MM-DD-<feature>.md # 实施计划
|
|
207
|
+
└── reports/ # 验证报告
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### 最佳实践
|
|
211
|
+
|
|
212
|
+
1. brainstorming 不可跳过(fix 除外)
|
|
213
|
+
2. delta spec 是活文档,build 阶段随时改,归档时同步
|
|
214
|
+
3. 交接包由脚本生成(`handoff`),guard 校验 source/hash/mode
|
|
215
|
+
4. tasks.md 实时同步,每完成一个任务勾选并提交
|
|
216
|
+
5. 验证通过才归档
|
|
217
|
+
6. 预设有边界,命中升级条件及时转 full
|