@house365/comate 0.1.0
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 -0
- package/README.md +78 -0
- package/bin/cli.mjs +45 -0
- package/bin/init-run.mjs +99 -0
- package/bin/init.mjs +159 -0
- package/docs/COMATE_MANUAL.md +612 -0
- package/package.json +52 -0
- package/skills/comate/SKILL.md +213 -0
- package/skills/comate/reference/decision-points.md +54 -0
- package/skills/comate/reference/dirty-worktree.md +58 -0
- package/skills/comate/reference/prerequisites.md +88 -0
- package/skills/comate/scripts/comate-lib.sh +430 -0
- package/skills/comate/scripts/comate.sh +1681 -0
- package/skills/comate/tests/comate.bats +449 -0
- package/skills/comate/tests/run.sh +101 -0
- package/skills/comate-archive/SKILL.md +63 -0
- package/skills/comate-build/SKILL.md +152 -0
- package/skills/comate-design/SKILL.md +106 -0
- package/skills/comate-hotfix/SKILL.md +115 -0
- package/skills/comate-open/SKILL.md +109 -0
- package/skills/comate-tweak/SKILL.md +109 -0
- package/skills/comate-verify/SKILL.md +130 -0
|
@@ -0,0 +1,152 @@
|
|
|
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 . ./.claude/skills "$HOME"/.claude/skills "$HOME"/.config/skills "$HOME"/.cursor/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
|
+
**工作区隔离**:A 创建分支(简单快速)/ B 创建 Worktree(完全独立,适合并行)。推荐:≤ 3 文件→A;需并行或当前分支有未提交工作→B。
|
|
60
|
+
|
|
61
|
+
**执行方式**:A `superpowers:subagent-driven-development`(任务独立、复杂、需双阶段审查)/ B `superpowers:executing-plans`(任务简单、轻量)。推荐:任务 ≥ 3→A;≤ 2 且无跨模块依赖→B;来自 hotfix→B。
|
|
62
|
+
|
|
63
|
+
**必须使用 AskUserQuestion 工具暂停等待用户明确选择**,不得用推荐规则自行选择。用户选择后:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
bash "$COMATE" state <name> set isolation <branch|worktree>
|
|
67
|
+
bash "$COMATE" state <name> set build_mode <subagent-driven-development|executing-plans|direct>
|
|
68
|
+
bash "$COMATE" state <name> set tdd_mode <tdd|direct>
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
`isolation` 是脚本级硬约束,保持 `null` 时 `build → verify` 的 guard 和 `state transition build-complete` 都会失败。
|
|
72
|
+
|
|
73
|
+
`build_mode: direct` 默认仅 hotfix/tweak 预设使用。full 流程只有用户明确要求跳过计划执行技能、且已记录显式 override 时才允许:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
bash "$COMATE" state <name> set direct_override true
|
|
77
|
+
bash "$COMATE" state <name> set build_mode direct
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
无 `direct_override: true` 时,full 流程的 `build_mode=direct` 会被 guard 和状态转换同时拦截。
|
|
81
|
+
|
|
82
|
+
**TDD 模式**:
|
|
83
|
+
|
|
84
|
+
| 选项 | 含义 | 适用场景 |
|
|
85
|
+
|------|------|---------|
|
|
86
|
+
| `tdd` | 每个任务先写失败测试再实现 | 推荐。涉及业务逻辑、新功能、API 的改动 |
|
|
87
|
+
| `direct` | 直接实现,不强制 TDD 流程 | 不需要测试覆盖的改动,或用户选择跳过测试直接写代码。hotfix/tweak 预设默认 `direct` |
|
|
88
|
+
|
|
89
|
+
`tdd_mode` 是脚本级硬约束,full 流程在离开 build 阶段前必须选择 `tdd` 或 `direct`,否则 guard 和 `state transition build-complete` 都会失败。
|
|
90
|
+
|
|
91
|
+
**执行隔离**:
|
|
92
|
+
- **branch**:`git checkout -b <name>`,后续在新分支工作
|
|
93
|
+
- **worktree**:必须使用 Skill 工具加载 `superpowers:using-git-worktrees` 创建隔离工作区,禁止用普通 shell 绕过;不可用时停止并提示安装。
|
|
94
|
+
|
|
95
|
+
**加载执行技能**:使用 Skill 工具加载所选技能。不可用时停止并提示安装,不要用普通对话替代。加载后按其指引执行:按计划做任务、完成 tasks.md 勾选(`- [ ]` → `- [x]`)、每个任务完成后提交代码。
|
|
96
|
+
|
|
97
|
+
**TDD 执行约束(Step 3b)**:
|
|
98
|
+
|
|
99
|
+
若 `tdd_mode: tdd`:
|
|
100
|
+
- `build_mode: executing-plans`:加载执行技能后、执行第一个任务前,**立即**使用 Skill 工具加载 `superpowers:test-driven-development` 一次,禁止跳过。之后每个任务按已加载的 Red-Green-Refactor 循环执行,不得跳过失败测试验证阶段,后续任务不重复加载。上下文压缩恢复后重新加载一次,再从第一个未勾选任务继续。
|
|
101
|
+
- `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 中。
|
|
102
|
+
- `build_mode: direct`:仅在 full 流程已设置 `direct_override: true` 时允许。执行第一个任务前,**立即**使用 Skill 工具加载 `superpowers:test-driven-development` 一次,由当前 agent 按 Red-Green-Refactor 循环执行每个任务;不得把 `direct` 理解为跳过失败测试验证。
|
|
103
|
+
|
|
104
|
+
若 `tdd_mode: direct`:按正常流程执行,不强制 TDD。
|
|
105
|
+
|
|
106
|
+
### 4. Spec 增量更新(决策阻塞点 7)
|
|
107
|
+
|
|
108
|
+
实施中发现初版 spec 不完整时,按规模分级。规则见 `comate/reference/decision-points.md` 第 7 条。
|
|
109
|
+
|
|
110
|
+
| 规模 | 触发 | 做法 |
|
|
111
|
+
|------|------|------|
|
|
112
|
+
| 小 | 遗漏验收场景、边界条件 | 直接编辑 delta spec + design.md,追加 tasks.md |
|
|
113
|
+
| 中 | 接口变更、新增组件、数据流变化 | **AskUserQuestion 确认后**加载 `superpowers:brainstorming` 更新 Design Doc + delta spec |
|
|
114
|
+
| 大 | 全新 capability | **AskUserQuestion 确认拆分后**用 `/comate-open` 创建独立 change |
|
|
115
|
+
|
|
116
|
+
**50% 阈值**:以 tasks.md 初始任务总数为基准,新增任务超过总数一半即视为超范围,**必须 AskUserQuestion 暂停**决定是否拆分。创建独立 change 必须调 `/comate-open`,不得直接调 `/opsx:new`。
|
|
117
|
+
|
|
118
|
+
### 5. 上下文管理与 build 交接包
|
|
119
|
+
|
|
120
|
+
Build 是最长阶段。为支持断点恢复:
|
|
121
|
+
- **每完成一个 task**:立即勾选 tasks.md 并提交,确保状态持久化
|
|
122
|
+
- **上下文压缩恢复**:先 `bash "$COMATE" state <name> recover build`,按 Recovery action 决定下一步
|
|
123
|
+
- **用户手动修改恢复**:按 `comate/reference/dirty-worktree.md` 协议处理;归因后若 diff 暗示计划或 spec 变化,按 Step 4 分级
|
|
124
|
+
|
|
125
|
+
全部任务完成、代码提交后,**生成 build → verify 交接包**(防止 plan/tasks 在两阶段间被偷改):
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
bash "$COMATE" handoff <name> build --write
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
脚本写入 `impl_context` / `impl_hash`(plan + tasks 的 sha256)。verify 阶段 guard 会校验进入验证时的 plan/tasks 与此一致。
|
|
132
|
+
|
|
133
|
+
## 退出条件
|
|
134
|
+
|
|
135
|
+
- tasks.md 全部勾选,代码已提交
|
|
136
|
+
- 已显式运行项目构建/测试命令并通过
|
|
137
|
+
- `isolation` 已写为 `branch` 或 `worktree`
|
|
138
|
+
- `build_mode` 已选(full 用 `direct` 需 `direct_override: true`)
|
|
139
|
+
- `tdd_mode` 已写为 `tdd` 或 `direct`
|
|
140
|
+
- `impl_context` / `impl_hash` 已写入
|
|
141
|
+
- 源文件未漂移(`source_kind: file` 时,guard 复算知识库文件哈希与清单比对;`conversation` 跳过)
|
|
142
|
+
- **阶段守卫**:`bash "$COMATE" guard <name> build --apply` 全 PASS 后自动流转到 `phase: verify`
|
|
143
|
+
|
|
144
|
+
guard 优先读项目配置命令(change 的 `.comate.yaml` 或仓库根 `.comate.yaml`/`comate.yaml`)的 `build_command` / `verify_command`;未配置才回退 `npm run build`、Maven、Cargo 探测。构建失败时 guard 打印失败输出作为排查证据。
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
bash "$COMATE" guard <name> build --apply
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## 自动流转
|
|
151
|
+
|
|
152
|
+
> **REQUIRED NEXT SKILL:** 调用 `comate-verify` skill 进入验证与收尾。
|
|
@@ -0,0 +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 . ./.claude/skills "$HOME"/.claude/skills "$HOME"/.config/skills "$HOME"/.cursor/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 进入计划与构建。
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: comate-hotfix
|
|
3
|
+
description: "comate 预设路径:Bug fix / 热修复。跳过 brainstorming,直接 open → build → verify → archive。适用于行为修复、不涉及新 capability 设计的场景。"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# comate 预设路径:Hotfix
|
|
7
|
+
|
|
8
|
+
快速 bug fix 工作流:open → build → verify → archive。跳过 brainstorming 和完整 plan。
|
|
9
|
+
|
|
10
|
+
**适用条件**(必须全部满足):
|
|
11
|
+
1. 修复已有功能 bug,不新增 capability
|
|
12
|
+
2. 不涉及接口变更或架构调整
|
|
13
|
+
3. 改动范围可预估(通常 ≤ 2 文件)
|
|
14
|
+
|
|
15
|
+
**不适用**:修复过程发现需架构调整时,升级为完整 `/comate`。
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## 流程(5 阶段)
|
|
20
|
+
|
|
21
|
+
执行链路:open → build → verify → archive。先定位脚本:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
COMATE="${COMATE:-$(for r in . ./.claude/skills "$HOME"/.claude/skills "$HOME"/.config/skills "$HOME"/.cursor/skills; do
|
|
25
|
+
[ -d "$r" ] && find "$r" -maxdepth 6 -path '*/comate/scripts/comate.sh' -type f -print -quit 2>/dev/null
|
|
26
|
+
done | head -1)}"
|
|
27
|
+
if [ -z "$COMATE" ]; then
|
|
28
|
+
echo "ERROR: comate.sh 未找到,请确认 comate skill 已安装。" >&2
|
|
29
|
+
return 1 2>/dev/null || exit 1
|
|
30
|
+
fi
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### 1. 快速开启(preset open)
|
|
34
|
+
|
|
35
|
+
复用 open 能力但用 hotfix 默认值:不执行 `openspec-explore` 长探索,直接精简创建。
|
|
36
|
+
|
|
37
|
+
**立即执行:** 使用 Skill 工具加载 `openspec-new-change`。按其指引创建精简产物:proposal.md(问题 + 根因 + 修复目标)、design.md(1 个修复方案)、tasks.md(修复任务)。**无需 delta spec**(除非修复改变已有 spec 验收场景)。
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
bash "$COMATE" state <name> init hotfix
|
|
41
|
+
bash "$COMATE" state <name> check open
|
|
42
|
+
bash "$COMATE" guard <name> open --apply
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### 2. 直接构建(preset build)
|
|
46
|
+
|
|
47
|
+
用 hotfix 默认值 `build_mode: direct`。跳过 `superpowers:brainstorming` 和 `superpowers:writing-plans`(除非任务 > 3,则转入 `/comate-build` 的计划与执行方式选择)。
|
|
48
|
+
|
|
49
|
+
继续或开始修改前,按 `comate/reference/dirty-worktree.md` 处理未提交改动。归因后若发现超出 hotfix,按「升级条件」处理。
|
|
50
|
+
|
|
51
|
+
**立即执行:** 按 tasks.md 逐个执行:读未完成任务 → 改代码 → 运行格式化命令 → 运行测试 → 勾选 `- [x]` → 提交(`fix: <简述>`)。全部完成后显式运行测试和构建命令。
|
|
52
|
+
|
|
53
|
+
修复影响已有 spec 验收场景时,在 `specs/<capability>/spec.md` 创建仅含 `## MODIFIED Requirements` 的 delta spec。
|
|
54
|
+
|
|
55
|
+
### 3. 根因消除检查
|
|
56
|
+
|
|
57
|
+
**在运行 build guard 之前**:读 proposal.md 的 bug 与根因,搜索验证问题代码不再存在。根因未消除则回 Step 2 继续(仍在 build,无需状态回退)。
|
|
58
|
+
|
|
59
|
+
升级条件命中(深层架构问题 / 需额外接口变更)→ 停止 hotfix,按升级条件阻塞确认。
|
|
60
|
+
|
|
61
|
+
根因确认消除后,生成 build 交接包并流转:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
bash "$COMATE" handoff <name> build --write
|
|
65
|
+
bash "$COMATE" guard <name> build --apply
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### 4. 验证(preset verify)
|
|
69
|
+
|
|
70
|
+
**立即执行:** 使用 Skill 工具加载 `comate-verify`。由其规模评估决定轻量或完整验证。无 delta spec 的小 hotfix 通常走轻量验证。验证通过后按其规则记录 `verify_result: pass`。
|
|
71
|
+
|
|
72
|
+
### 5. 归档(preset archive)
|
|
73
|
+
|
|
74
|
+
**立即执行:** 使用 Skill 工具加载 `comate-archive`。归档前必须 `verify_result: pass`。有 delta spec 则同步到 main spec。
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## 连续执行模式
|
|
79
|
+
|
|
80
|
+
<IMPORTANT>
|
|
81
|
+
Hotfix 为**一次性连续执行**。调用后在自有步骤间自动推进,但以下必须暂停(决策点见 `comate/reference/decision-points.md`):
|
|
82
|
+
1. 命中升级条件(决策点 6)→ AskUserQuestion 确认升级
|
|
83
|
+
2. 任务 > 3 转入 `/comate-build` 时的隔离和执行方式选择(决策点 3)
|
|
84
|
+
3. comate-verify 的验证失败决策(决策点 4)和分支处理决策(决策点 5)
|
|
85
|
+
|
|
86
|
+
执行顺序:快速开启 → 直接构建 → 根因消除检查 → 验证 → 归档 → 完成。
|
|
87
|
+
</IMPORTANT>
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## 升级条件(决策阻塞点 6)
|
|
92
|
+
|
|
93
|
+
满足**任一**即停止 hotfix 升级为完整 `/comate`:
|
|
94
|
+
|
|
95
|
+
| 条件 | 说明 |
|
|
96
|
+
|------|------|
|
|
97
|
+
| 改动 **3+ 文件** | 超出单点修复 |
|
|
98
|
+
| 架构变更 | 新模块、新接口、新依赖 |
|
|
99
|
+
| 数据库 schema 变更 | 结构性调整 |
|
|
100
|
+
| 引入新 public API | 修复产生新对外接口 |
|
|
101
|
+
| 范围超出单一函数/模块 | 需多处协调 |
|
|
102
|
+
|
|
103
|
+
**必须使用 AskUserQuestion 工具暂停确认升级**。不得直接进 `/comate-design`,不得自动补 Design Doc。用户确认后**先更新 workflow**:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
bash "$COMATE" state <name> set workflow full
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
然后**立即加载 `comate-design` skill** 补 Design Doc,走完整流程。用户不确认则停止 hotfix 并报告超出适用范围。
|
|
110
|
+
|
|
111
|
+
## 退出条件
|
|
112
|
+
|
|
113
|
+
- Bug 已修复,测试通过,change 已归档
|
|
114
|
+
- 如有 spec 变更已同步到 main spec
|
|
115
|
+
- **阶段守卫**:build → verify 前 `bash "$COMATE" guard <name> build --apply`,verify → archive 按 `/comate-verify` 规则运行
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: comate-open
|
|
3
|
+
description: "comate 阶段 1:开题。用 /comate-open 调用。通过 OpenSpec 探索想法、创建 change 结构(proposal + design + tasks)并初始化 .comate.yaml。"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# comate 阶段 1:开题(Open)
|
|
7
|
+
|
|
8
|
+
## 前置条件
|
|
9
|
+
|
|
10
|
+
- 无活跃 change,或用户希望创建新 change
|
|
11
|
+
|
|
12
|
+
## 步骤
|
|
13
|
+
|
|
14
|
+
### 1. 探索想法
|
|
15
|
+
|
|
16
|
+
**立即执行:** 使用 Skill 工具加载 `openspec-explore` 技能。禁止跳过。加载后按其指引自由探索问题空间。
|
|
17
|
+
|
|
18
|
+
### 2. 创建 Change 结构 + 初始化状态
|
|
19
|
+
|
|
20
|
+
**立即执行:** 使用 Skill 工具加载 `openspec-new-change` 技能。若用户意图未明确、需先形成建议,改为加载 `openspec-propose`。禁止跳过。
|
|
21
|
+
|
|
22
|
+
**命名与范围守卫**:change name 必须用用户指定或经 AskUserQuestion 确认的名称,不得自动生成或推断。变更范围必须与用户描述一致,不得自行扩大或缩小。
|
|
23
|
+
|
|
24
|
+
确认产物已创建:
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
openspec/changes/<name>/
|
|
28
|
+
├── .openspec.yaml
|
|
29
|
+
├── proposal.md # Why + What:问题、目标、范围、非目标
|
|
30
|
+
├── design.md # How(高层):架构决策、方案选型、数据流
|
|
31
|
+
└── tasks.md # 任务清单(勾选框)
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
定位 comate 脚本并初始化 `.comate.yaml`:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
COMATE="${COMATE:-$(for r in . ./.claude/skills "$HOME"/.claude/skills "$HOME"/.config/skills "$HOME"/.cursor/skills; do
|
|
38
|
+
[ -d "$r" ] && find "$r" -maxdepth 6 -path '*/comate/scripts/comate.sh' -type f -print -quit 2>/dev/null
|
|
39
|
+
done | head -1)}"
|
|
40
|
+
if [ -z "$COMATE" ]; then
|
|
41
|
+
echo "ERROR: comate.sh 未找到,请确认 comate skill 已安装。" >&2
|
|
42
|
+
return 1 2>/dev/null || exit 1
|
|
43
|
+
fi
|
|
44
|
+
|
|
45
|
+
bash "$COMATE" state <name> init full
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### 2b. 判定需求来源(源文件追踪)
|
|
49
|
+
|
|
50
|
+
`state init` 默认写入 `source_kind: conversation`、`source_manifest: null`(需求由对话产生)。
|
|
51
|
+
|
|
52
|
+
若本次需求来自 `docs/knowledge-base/` 下的一份或多份知识库文档,追踪它们以支持后续双向排查:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
bash "$COMATE" sources <name> track docs/knowledge-base/<path>.md --note "<可选说明>"
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
- 追踪成功后 `source_kind` 自动改为 `file`,并在 `openspec/changes/<name>/.comate/sources.manifest` 钉住每个文件当时的 sha256 与 commit ref。
|
|
59
|
+
- 仅 `docs/knowledge-base/` 范围内的文件可追踪;范围外文件会被跳过并提示,`source_kind` 保持 `conversation`,不影响流程。
|
|
60
|
+
- 边追踪边产生:若开题时为对话来源、设计中途才拿到知识库文档,后续任意阶段补 `sources <name> track` 即可,无需回到 open。
|
|
61
|
+
|
|
62
|
+
### 3. 入口状态验证
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
bash "$COMATE" state <name> check open
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
验证通过后继续 Step 4。失败时脚本输出具体原因。
|
|
69
|
+
|
|
70
|
+
**幂等性**:open 阶段所有操作可安全重复。若 `.comate.yaml` 已是 `phase: open` 且三件套已存在,跳过已完成步骤,从第一个缺失步骤继续。
|
|
71
|
+
|
|
72
|
+
### 4. 内容完整性检查
|
|
73
|
+
|
|
74
|
+
逐个确认三个文件路径存在且非空:
|
|
75
|
+
- **proposal.md**:问题背景、目标、范围、非目标
|
|
76
|
+
- **design.md**:高层架构决策、方案选型、数据流
|
|
77
|
+
- **tasks.md**:任务列表,每个任务有明确描述
|
|
78
|
+
|
|
79
|
+
任一文件缺失或为空时,不得进入 Step 5 或执行守卫,必须回创建步骤补充。
|
|
80
|
+
|
|
81
|
+
### 5. 用户审视确认(决策阻塞点 1)
|
|
82
|
+
|
|
83
|
+
三件套完成且完整性检查通过后,**必须使用 AskUserQuestion 工具暂停等待用户确认**。规则见 `comate/reference/decision-points.md` 第 1 条。
|
|
84
|
+
|
|
85
|
+
以单选题呈现摘要(proposal 问题/目标/范围、design 架构决策/选型、tasks 数量与关键任务)和选项:
|
|
86
|
+
- 「确认,继续下一阶段」— 执行守卫流转
|
|
87
|
+
- 「需要调整」— 附调整说明,修改后重新请求确认
|
|
88
|
+
|
|
89
|
+
## 退出条件
|
|
90
|
+
|
|
91
|
+
- 三件套已创建且内容完整
|
|
92
|
+
- **用户已确认**
|
|
93
|
+
- **阶段守卫**:运行 `bash "$COMATE" guard <name> open --apply`,全 PASS 后自动流转
|
|
94
|
+
|
|
95
|
+
退出前必须 `--apply`,否则 `.comate.yaml` 停留在 `phase: open`,下阶段入口检查会失败。
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
bash "$COMATE" guard <name> open --apply
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
full 流程自动更新为 `phase: design`;hotfix/tweak 预设自动更新为 `phase: build`。
|
|
102
|
+
|
|
103
|
+
## 自动流转
|
|
104
|
+
|
|
105
|
+
用户确认后退出条件满足,自动流转:
|
|
106
|
+
|
|
107
|
+
> **REQUIRED NEXT SKILL(完整流程):** 调用 `comate-design` skill 进入深度设计。
|
|
108
|
+
>
|
|
109
|
+
> hotfix/tweak 预设由对应预设 skill 控制后续流转(phase 直接进 build),不经过本节。
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: comate-tweak
|
|
3
|
+
description: "comate 预设路径:非 bug 的小改动(tweak)。跳过 brainstorming 和完整 plan,直接 open → 轻量 build → 轻量 verify → archive。适用于文案、配置、文档或 prompt 的局部优化。"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# comate 预设路径:Tweak
|
|
7
|
+
|
|
8
|
+
Tweak 是 comate 五阶段能力的预设工作流,复用 open/build/verify/archive,仅跳过 brainstorming 和完整 plan。
|
|
9
|
+
|
|
10
|
+
适用于非 bug 的小范围变更(文案、配置、文档、prompt 局部优化)。
|
|
11
|
+
|
|
12
|
+
**适用条件**(必须全部满足):
|
|
13
|
+
1. 不新增 capability
|
|
14
|
+
2. 不改变架构
|
|
15
|
+
3. 不涉及接口变化
|
|
16
|
+
4. 通常不超过 3 个 tasks、4 个文件
|
|
17
|
+
|
|
18
|
+
**不适用**:发现需 capability、架构或接口调整时升级为完整 `/comate`。
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 流程(4 阶段)
|
|
23
|
+
|
|
24
|
+
执行链路:open → 轻量 build → 轻量 verify → archive。先定位脚本:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
COMATE="${COMATE:-$(for r in . ./.claude/skills "$HOME"/.claude/skills "$HOME"/.config/skills "$HOME"/.cursor/skills; do
|
|
28
|
+
[ -d "$r" ] && find "$r" -maxdepth 6 -path '*/comate/scripts/comate.sh' -type f -print -quit 2>/dev/null
|
|
29
|
+
done | head -1)}"
|
|
30
|
+
if [ -z "$COMATE" ]; then
|
|
31
|
+
echo "ERROR: comate.sh 未找到,请确认 comate skill 已安装。" >&2
|
|
32
|
+
return 1 2>/dev/null || exit 1
|
|
33
|
+
fi
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### 1. 快速开启(preset open)
|
|
37
|
+
|
|
38
|
+
复用 open 能力但用 tweak 默认值:不执行 `openspec-explore` 长探索。
|
|
39
|
+
|
|
40
|
+
**立即执行:** 使用 Skill 工具加载 `openspec-new-change`。创建精简产物:proposal.md(动机 + 目标 + 范围)、design.md(简短实现说明)、tasks.md(≤ 3 任务)。**无需 delta spec**(一旦需要 delta spec 即升级为完整 `/comate`)。
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
bash "$COMATE" state <name> init tweak
|
|
44
|
+
bash "$COMATE" state <name> check open
|
|
45
|
+
bash "$COMATE" guard <name> open --apply
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### 2. 轻量构建(preset build)
|
|
49
|
+
|
|
50
|
+
用 tweak 默认值 `build_mode: direct`。跳过 `superpowers:brainstorming` 和 `superpowers:writing-plans`。
|
|
51
|
+
|
|
52
|
+
继续或开始修改前,按 `comate/reference/dirty-worktree.md` 处理未提交改动。归因后若超出 tweak,按「升级条件」处理。
|
|
53
|
+
|
|
54
|
+
**立即执行:** 按 tasks.md 逐个执行:改目标文件 → 运行格式化命令 → 运行测试 → 勾选 `- [x]` → 提交(`tweak: <简述>`)。全部完成后显式运行测试和构建命令,然后流转:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
bash "$COMATE" guard <name> build --apply
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
> tweak 默认无 plan,build guard 的 impl-context 检查可能要求 `handoff <name> build --write`。tweak 若未写 plan,仍应在全部任务完成后运行 `bash "$COMATE" handoff <name> build --write` 以记录 tasks 的 impl_hash,再跑 build guard。
|
|
61
|
+
|
|
62
|
+
### 3. 轻量验证(preset verify)
|
|
63
|
+
|
|
64
|
+
**立即执行:** 使用 Skill 工具加载 `comate-verify`。Tweak 必须保持轻量验证条件(≤ 3 tasks、≤ 4 files、无 delta spec、无新 capability)。若规模评估进入完整验证路径,停止 tweak 按升级条件确认。验证通过后记录 `verify_result: pass`。
|
|
65
|
+
|
|
66
|
+
### 4. 归档(preset archive)
|
|
67
|
+
|
|
68
|
+
**立即执行:** 使用 Skill 工具加载 `comate-archive`。归档前必须 `verify_result: pass`。
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## 连续执行模式
|
|
73
|
+
|
|
74
|
+
<IMPORTANT>
|
|
75
|
+
Tweak 为**一次性连续执行**。调用后在自有步骤间自动推进,但以下必须暂停(决策点见 `comate/reference/decision-points.md`):
|
|
76
|
+
1. 命中升级条件(决策点 6)→ AskUserQuestion 确认升级
|
|
77
|
+
2. comate-verify 的验证失败决策(决策点 4)和分支处理决策(决策点 5)
|
|
78
|
+
|
|
79
|
+
执行顺序:快速开启 → 轻量构建 → 轻量验证 → 归档 → 完成。
|
|
80
|
+
</IMPORTANT>
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## 升级条件(决策阻塞点 6)
|
|
85
|
+
|
|
86
|
+
满足**任一**即停止 tweak 升级为完整 `/comate`:
|
|
87
|
+
|
|
88
|
+
| 条件 | 说明 |
|
|
89
|
+
|------|------|
|
|
90
|
+
| 改动 **5+ 文件** | 超出小改动 |
|
|
91
|
+
| 多模块协调 | 跨组件协调 |
|
|
92
|
+
| 需新增 **5+** 测试用例 | 复杂度上升 |
|
|
93
|
+
| 配置项增删 | 非值修改的配置变更 |
|
|
94
|
+
| 需新增 capability | 超出局部优化 |
|
|
95
|
+
| 需 delta spec | 影响已有规格 |
|
|
96
|
+
|
|
97
|
+
**必须使用 AskUserQuestion 工具暂停确认升级**。用户确认后**先更新 workflow** 再走完整流程:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
bash "$COMATE" state <name> set workflow full
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
然后**立即加载 `comate-design` skill** 补 Design Doc。用户不确认则停止 tweak 并报告超出适用范围。
|
|
104
|
+
|
|
105
|
+
## 退出条件
|
|
106
|
+
|
|
107
|
+
- 小改动已完成,测试通过,change 已归档
|
|
108
|
+
- 未新增 capability、架构调整或接口变化
|
|
109
|
+
- **阶段守卫**:build → verify 前 `bash "$COMATE" guard <name> build --apply`,verify → archive 按 `/comate-verify` 规则运行
|