@house365/comate 0.7.0 → 0.9.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 -21
- package/README.md +102 -102
- package/bin/init-run.mjs +9 -0
- package/bin/init.mjs +82 -1
- package/bin/postinstall.mjs +21 -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 -74
- 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-fix/SKILL.md +1 -1
- package/skills/comate-gate/SKILL.md +245 -242
- 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 -128
- package/skills/comate-verify/SKILL.md +146 -146
|
@@ -1,58 +1,58 @@
|
|
|
1
|
-
# Dirty Worktree 协议
|
|
2
|
-
|
|
3
|
-
规范路径:`comate/reference/dirty-worktree.md`
|
|
4
|
-
|
|
5
|
-
本协议由所有涉及代码修改的 comate 子 skill 共享。当 agent 恢复上下文或继续执行时,必须按本协议处理未提交的工作区改动。
|
|
6
|
-
|
|
7
|
-
## 1. 检查步骤
|
|
8
|
-
|
|
9
|
-
继续或开始修改前,必须先运行以下命令:
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
git status --short
|
|
13
|
-
git diff --stat
|
|
14
|
-
git diff --cached --stat
|
|
15
|
-
git ls-files --others --exclude-standard
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
必要时再查看 `git diff` / `git diff --cached` / 新建文件内容。
|
|
19
|
-
|
|
20
|
-
## 2. 核心规则
|
|
21
|
-
|
|
22
|
-
- 用户可能不会说明自己改了哪里。只要存在 dirty worktree(包括 Git 状态里显示为 `??` 的新建文件),就先假设改动可能来自用户或混合来源。
|
|
23
|
-
- dirty worktree 只代表代码事实,不会自动推进 `.comate.yaml` 的 `phase` 或勾选 `tasks.md`;只有完成归因、验证、同步必要文档,并通过对应阶段 guard 后,才允许推进 comate 状态。
|
|
24
|
-
|
|
25
|
-
## 3. 归因分类
|
|
26
|
-
|
|
27
|
-
将 dirty diff 分为三类:
|
|
28
|
-
|
|
29
|
-
1. **属于当前 change**:文件和内容能对应当前 change 的目标、tasks.md、plan 或 delta spec。纳入当前任务继续,不重复改同一处。
|
|
30
|
-
2. **不属于当前 change**:文件或内容与当前目标无关。暂停并询问用户:并入当前 change、拆成新 change、保留不处理,或明确授权丢弃。
|
|
31
|
-
3. **来源不确定**:无法从 diff 和文档判断归属。暂停并向用户汇报文件列表和判断依据,不继续推进阶段。
|
|
32
|
-
|
|
33
|
-
## 4. 常见处理模式
|
|
34
|
-
|
|
35
|
-
### 已实现但 tasks.md 未勾选
|
|
36
|
-
|
|
37
|
-
先验证实现(运行构建和测试),通过后补勾任务。不要因为任务未勾选就重做一遍,也不要因为状态文件滞后而忽略代码事实。若当前子 skill 定义了阶段特例,以子 skill 为准。
|
|
38
|
-
|
|
39
|
-
### 暗示计划或范围已变化
|
|
40
|
-
|
|
41
|
-
按当前子 skill 的升级、增量更新或回退规则处理,本协议不重复阶段特例。
|
|
42
|
-
|
|
43
|
-
### 模糊恢复意图
|
|
44
|
-
|
|
45
|
-
用户说“继续”“接着跑”“我改了一点”“刚才不满意”“重新弄”“代码动过”“先按现在的来”等模糊恢复意图时,按本协议处理。不要要求用户先回忆具体改了哪里。
|
|
46
|
-
|
|
47
|
-
### open/design 阶段出现代码改动
|
|
48
|
-
|
|
49
|
-
若当前仍处于 `open` 或 `design`,但 dirty worktree 已经包含代码改动,先按本协议归因,不要直接推进阶段:
|
|
50
|
-
|
|
51
|
-
- 属于当前 change 的改动:作为需求或设计输入记录到 proposal/design/spec/design doc/tasks 中;进入 build 前仍需完成对应阶段 guard。
|
|
52
|
-
- 不属于当前 change 或来源不确定:暂停询问用户是并入当前 change、拆成新 change、保留不处理,还是明确授权丢弃。
|
|
53
|
-
- 禁止在 open/design 阶段直接把代码改动当作已完成实现并推进到 verify。
|
|
54
|
-
|
|
55
|
-
## 5. 禁令
|
|
56
|
-
|
|
57
|
-
- 禁止在未理解 dirty diff 来源时覆盖、回滚、格式化重写或忽略用户改动。
|
|
58
|
-
- 禁止在 dirty diff 未解释清楚时判定验证通过。
|
|
1
|
+
# Dirty Worktree 协议
|
|
2
|
+
|
|
3
|
+
规范路径:`comate/reference/dirty-worktree.md`
|
|
4
|
+
|
|
5
|
+
本协议由所有涉及代码修改的 comate 子 skill 共享。当 agent 恢复上下文或继续执行时,必须按本协议处理未提交的工作区改动。
|
|
6
|
+
|
|
7
|
+
## 1. 检查步骤
|
|
8
|
+
|
|
9
|
+
继续或开始修改前,必须先运行以下命令:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
git status --short
|
|
13
|
+
git diff --stat
|
|
14
|
+
git diff --cached --stat
|
|
15
|
+
git ls-files --others --exclude-standard
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
必要时再查看 `git diff` / `git diff --cached` / 新建文件内容。
|
|
19
|
+
|
|
20
|
+
## 2. 核心规则
|
|
21
|
+
|
|
22
|
+
- 用户可能不会说明自己改了哪里。只要存在 dirty worktree(包括 Git 状态里显示为 `??` 的新建文件),就先假设改动可能来自用户或混合来源。
|
|
23
|
+
- dirty worktree 只代表代码事实,不会自动推进 `.comate.yaml` 的 `phase` 或勾选 `tasks.md`;只有完成归因、验证、同步必要文档,并通过对应阶段 guard 后,才允许推进 comate 状态。
|
|
24
|
+
|
|
25
|
+
## 3. 归因分类
|
|
26
|
+
|
|
27
|
+
将 dirty diff 分为三类:
|
|
28
|
+
|
|
29
|
+
1. **属于当前 change**:文件和内容能对应当前 change 的目标、tasks.md、plan 或 delta spec。纳入当前任务继续,不重复改同一处。
|
|
30
|
+
2. **不属于当前 change**:文件或内容与当前目标无关。暂停并询问用户:并入当前 change、拆成新 change、保留不处理,或明确授权丢弃。
|
|
31
|
+
3. **来源不确定**:无法从 diff 和文档判断归属。暂停并向用户汇报文件列表和判断依据,不继续推进阶段。
|
|
32
|
+
|
|
33
|
+
## 4. 常见处理模式
|
|
34
|
+
|
|
35
|
+
### 已实现但 tasks.md 未勾选
|
|
36
|
+
|
|
37
|
+
先验证实现(运行构建和测试),通过后补勾任务。不要因为任务未勾选就重做一遍,也不要因为状态文件滞后而忽略代码事实。若当前子 skill 定义了阶段特例,以子 skill 为准。
|
|
38
|
+
|
|
39
|
+
### 暗示计划或范围已变化
|
|
40
|
+
|
|
41
|
+
按当前子 skill 的升级、增量更新或回退规则处理,本协议不重复阶段特例。
|
|
42
|
+
|
|
43
|
+
### 模糊恢复意图
|
|
44
|
+
|
|
45
|
+
用户说“继续”“接着跑”“我改了一点”“刚才不满意”“重新弄”“代码动过”“先按现在的来”等模糊恢复意图时,按本协议处理。不要要求用户先回忆具体改了哪里。
|
|
46
|
+
|
|
47
|
+
### open/design 阶段出现代码改动
|
|
48
|
+
|
|
49
|
+
若当前仍处于 `open` 或 `design`,但 dirty worktree 已经包含代码改动,先按本协议归因,不要直接推进阶段:
|
|
50
|
+
|
|
51
|
+
- 属于当前 change 的改动:作为需求或设计输入记录到 proposal/design/spec/design doc/tasks 中;进入 build 前仍需完成对应阶段 guard。
|
|
52
|
+
- 不属于当前 change 或来源不确定:暂停询问用户是并入当前 change、拆成新 change、保留不处理,还是明确授权丢弃。
|
|
53
|
+
- 禁止在 open/design 阶段直接把代码改动当作已完成实现并推进到 verify。
|
|
54
|
+
|
|
55
|
+
## 5. 禁令
|
|
56
|
+
|
|
57
|
+
- 禁止在未理解 dirty diff 来源时覆盖、回滚、格式化重写或忽略用户改动。
|
|
58
|
+
- 禁止在 dirty diff 未解释清楚时判定验证通过。
|
|
@@ -1,89 +1,89 @@
|
|
|
1
|
-
# 前置依赖检查清单(prerequisites)
|
|
2
|
-
|
|
3
|
-
规范路径:`comate/reference/prerequisites.md`
|
|
4
|
-
|
|
5
|
-
`comate init` 会自动装好 OpenSpec CLI、Superpowers 和 comate 自身,正常情况下不需要手动执行本清单。清单保留下来用于排查:init 报某项失败时,对照这里确认要装什么、怎么自查、怎么补。
|
|
6
|
-
|
|
7
|
-
> 一键自查:`comate doctor`(或直接 `bash comate/scripts/comate.sh doctor`)。它会检查下列大部分项目并给出可执行提示。
|
|
8
|
-
|
|
9
|
-
## 1. 运行环境
|
|
10
|
-
|
|
11
|
-
| 依赖 | 要求 | 检查 | 缺失处理 |
|
|
12
|
-
|------|------|------|----------|
|
|
13
|
-
| bash | ≥ 4(需要关联数组) | `bash --version` | Windows 用 Git Bash / WSL;macOS 自带 3.2,需 `brew install bash` |
|
|
14
|
-
| git | 任意近代版本 | `git --version` | 安装 git |
|
|
15
|
-
| sha256 工具 | `sha256sum` 或 `shasum` 至少其一 | `command -v sha256sum shasum` | Linux 装 coreutils;macOS 自带 `shasum`(perl) |
|
|
16
|
-
| LF 换行 | 所有 `.sh` 必须是 LF | `doctor` 会检测 CRLF | 仓库已带 `.gitattributes` 强制 `eol=lf`;若被改坏,用 `dos2unix` 或重新 checkout |
|
|
17
|
-
|
|
18
|
-
## 2. OpenSpec(WHAT 侧)
|
|
19
|
-
|
|
20
|
-
负责 proposal / spec 生命周期 / 归档。comate 的 open / archive 阶段依赖它。
|
|
21
|
-
|
|
22
|
-
安装:
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
npm install -g @fission-ai/openspec@latest
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
初始化(在项目根目录)。`comate init` 已经做过这一步,手动补做时需要 `--tools`:openspec 靠探测已有的 agent 配置目录决定写哪些 tool 文件,干净项目里探测不到会直接报 `No tools detected` 退出。
|
|
29
|
-
|
|
30
|
-
```bash
|
|
31
|
-
openspec init . --tools none
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
自查:
|
|
35
|
-
|
|
36
|
-
```bash
|
|
37
|
-
openspec --version
|
|
38
|
-
openspec list --json # 列出活跃 change,应能正常返回
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
comate 用到的 OpenSpec 能力(以 skill 形式调用):`openspec-explore`、`openspec-new-change`、`openspec-propose`、`openspec-verify-change`。确认这些 skill 在你的平台 skills 目录中可用。
|
|
42
|
-
|
|
43
|
-
## 3. Superpowers(HOW 侧)
|
|
44
|
-
|
|
45
|
-
负责技术设计 / 计划 / 执行 / 收尾。comate 的 design / build / verify 阶段依赖它。
|
|
46
|
-
|
|
47
|
-
`comate init` 已用 `skills add obra/superpowers -g` 装到用户级。手动补装同理。安装后确认下列 skill 可加载:
|
|
48
|
-
|
|
49
|
-
- `superpowers:brainstorming`
|
|
50
|
-
- `superpowers:writing-plans`
|
|
51
|
-
- `superpowers:subagent-driven-development`
|
|
52
|
-
- `superpowers:executing-plans`
|
|
53
|
-
- `superpowers:test-driven-development`
|
|
54
|
-
- `superpowers:using-git-worktrees`
|
|
55
|
-
- `superpowers:finishing-a-development-branch`
|
|
56
|
-
|
|
57
|
-
自查:在 agent 中尝试加载 `superpowers:brainstorming`。若不可用,按你平台的安装说明补装。**任一 Superpowers 步骤不可用时,对应阶段必须停止并提示安装,不得用普通对话替代该步骤。**
|
|
58
|
-
|
|
59
|
-
## 4. comate 自身
|
|
60
|
-
|
|
61
|
-
comate 以 npm 包分发(`npm install -g @house365/comate`),`comate init` 通过 skills CLI 装到用户级 `~/.agents/skills`,一次装完所有项目共用,支持 Claude Code、Codex、Cursor 等 70+ agent。
|
|
62
|
-
|
|
63
|
-
采用**平铺布局**——每个 phase 是顶层 skill 目录,而非 `comate/<phase>/` 嵌套。部分 agent(含 Claude Code)只发现顶层目录,平铺是共同可用的最小公倍数:
|
|
64
|
-
|
|
65
|
-
```
|
|
66
|
-
skills/
|
|
67
|
-
├── comate/ # 主入口 + 共享资源
|
|
68
|
-
│ ├── SKILL.md # /comate:探测并分派
|
|
69
|
-
│ ├── reference/
|
|
70
|
-
│ │ ├── dirty-worktree.md
|
|
71
|
-
│ │ ├── decision-points.md
|
|
72
|
-
│ │ └── prerequisites.md
|
|
73
|
-
│ ├── scripts/
|
|
74
|
-
│ │ ├── comate-lib.sh
|
|
75
|
-
│ │ └── comate.sh
|
|
76
|
-
│ └── tests/
|
|
77
|
-
│ ├── comate.bats
|
|
78
|
-
│ └── run.sh
|
|
79
|
-
├── comate-open/SKILL.md # 阶段 1
|
|
80
|
-
├── comate-design/SKILL.md # 阶段 2
|
|
81
|
-
├── comate-build/SKILL.md # 阶段 3
|
|
82
|
-
├── comate-verify/SKILL.md # 阶段 4
|
|
83
|
-
├── comate-archive/SKILL.md # 阶段 5
|
|
84
|
-
├── comate-fix/SKILL.md # 预设(bug + 调整)
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
各 phase skill 通过 `*/comate/scripts/comate.sh` glob 定位脚本,共享 `comate/reference/*` 和 `comate/scripts/*`。若目标平台支持嵌套 skill 发现,也可改回 `comate/<phase>/SKILL.md` 子目录布局,纯命名调整,不影响脚本。
|
|
88
|
-
|
|
89
|
-
`doctor` 会校验 `comate/scripts/` 下文件齐全且为 LF。
|
|
1
|
+
# 前置依赖检查清单(prerequisites)
|
|
2
|
+
|
|
3
|
+
规范路径:`comate/reference/prerequisites.md`
|
|
4
|
+
|
|
5
|
+
`comate init` 会自动装好 OpenSpec CLI、Superpowers 和 comate 自身,正常情况下不需要手动执行本清单。清单保留下来用于排查:init 报某项失败时,对照这里确认要装什么、怎么自查、怎么补。
|
|
6
|
+
|
|
7
|
+
> 一键自查:`comate doctor`(或直接 `bash comate/scripts/comate.sh doctor`)。它会检查下列大部分项目并给出可执行提示。
|
|
8
|
+
|
|
9
|
+
## 1. 运行环境
|
|
10
|
+
|
|
11
|
+
| 依赖 | 要求 | 检查 | 缺失处理 |
|
|
12
|
+
|------|------|------|----------|
|
|
13
|
+
| bash | ≥ 4(需要关联数组) | `bash --version` | Windows 用 Git Bash / WSL;macOS 自带 3.2,需 `brew install bash` |
|
|
14
|
+
| git | 任意近代版本 | `git --version` | 安装 git |
|
|
15
|
+
| sha256 工具 | `sha256sum` 或 `shasum` 至少其一 | `command -v sha256sum shasum` | Linux 装 coreutils;macOS 自带 `shasum`(perl) |
|
|
16
|
+
| LF 换行 | 所有 `.sh` 必须是 LF | `doctor` 会检测 CRLF | 仓库已带 `.gitattributes` 强制 `eol=lf`;若被改坏,用 `dos2unix` 或重新 checkout |
|
|
17
|
+
|
|
18
|
+
## 2. OpenSpec(WHAT 侧)
|
|
19
|
+
|
|
20
|
+
负责 proposal / spec 生命周期 / 归档。comate 的 open / archive 阶段依赖它。
|
|
21
|
+
|
|
22
|
+
安装:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npm install -g @fission-ai/openspec@latest
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
初始化(在项目根目录)。`comate init` 已经做过这一步,手动补做时需要 `--tools`:openspec 靠探测已有的 agent 配置目录决定写哪些 tool 文件,干净项目里探测不到会直接报 `No tools detected` 退出。
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
openspec init . --tools none
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
自查:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
openspec --version
|
|
38
|
+
openspec list --json # 列出活跃 change,应能正常返回
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
comate 用到的 OpenSpec 能力(以 skill 形式调用):`openspec-explore`、`openspec-new-change`、`openspec-propose`、`openspec-verify-change`。确认这些 skill 在你的平台 skills 目录中可用。
|
|
42
|
+
|
|
43
|
+
## 3. Superpowers(HOW 侧)
|
|
44
|
+
|
|
45
|
+
负责技术设计 / 计划 / 执行 / 收尾。comate 的 design / build / verify 阶段依赖它。
|
|
46
|
+
|
|
47
|
+
`comate init` 已用 `skills add obra/superpowers -g` 装到用户级。手动补装同理。安装后确认下列 skill 可加载:
|
|
48
|
+
|
|
49
|
+
- `superpowers:brainstorming`
|
|
50
|
+
- `superpowers:writing-plans`
|
|
51
|
+
- `superpowers:subagent-driven-development`
|
|
52
|
+
- `superpowers:executing-plans`
|
|
53
|
+
- `superpowers:test-driven-development`
|
|
54
|
+
- `superpowers:using-git-worktrees`
|
|
55
|
+
- `superpowers:finishing-a-development-branch`
|
|
56
|
+
|
|
57
|
+
自查:在 agent 中尝试加载 `superpowers:brainstorming`。若不可用,按你平台的安装说明补装。**任一 Superpowers 步骤不可用时,对应阶段必须停止并提示安装,不得用普通对话替代该步骤。**
|
|
58
|
+
|
|
59
|
+
## 4. comate 自身
|
|
60
|
+
|
|
61
|
+
comate 以 npm 包分发(`npm install -g @house365/comate`),`comate init` 通过 skills CLI 装到用户级 `~/.agents/skills`,一次装完所有项目共用,支持 Claude Code、Codex、Cursor 等 70+ agent。
|
|
62
|
+
|
|
63
|
+
采用**平铺布局**——每个 phase 是顶层 skill 目录,而非 `comate/<phase>/` 嵌套。部分 agent(含 Claude Code)只发现顶层目录,平铺是共同可用的最小公倍数:
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
skills/
|
|
67
|
+
├── comate/ # 主入口 + 共享资源
|
|
68
|
+
│ ├── SKILL.md # /comate:探测并分派
|
|
69
|
+
│ ├── reference/
|
|
70
|
+
│ │ ├── dirty-worktree.md
|
|
71
|
+
│ │ ├── decision-points.md
|
|
72
|
+
│ │ └── prerequisites.md
|
|
73
|
+
│ ├── scripts/
|
|
74
|
+
│ │ ├── comate-lib.sh
|
|
75
|
+
│ │ └── comate.sh
|
|
76
|
+
│ └── tests/
|
|
77
|
+
│ ├── comate.bats
|
|
78
|
+
│ └── run.sh
|
|
79
|
+
├── comate-open/SKILL.md # 阶段 1
|
|
80
|
+
├── comate-design/SKILL.md # 阶段 2
|
|
81
|
+
├── comate-build/SKILL.md # 阶段 3
|
|
82
|
+
├── comate-verify/SKILL.md # 阶段 4
|
|
83
|
+
├── comate-archive/SKILL.md # 阶段 5
|
|
84
|
+
├── comate-fix/SKILL.md # 预设(bug + 调整)
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
各 phase skill 通过 `*/comate/scripts/comate.sh` glob 定位脚本,共享 `comate/reference/*` 和 `comate/scripts/*`。若目标平台支持嵌套 skill 发现,也可改回 `comate/<phase>/SKILL.md` 子目录布局,纯命名调整,不影响脚本。
|
|
88
|
+
|
|
89
|
+
`doctor` 会校验 `comate/scripts/` 下文件齐全且为 LF。
|
|
@@ -1,63 +1,63 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: comate-archive
|
|
3
|
-
description: "comate 阶段 5:归档。用 /comate-archive 调用。委托 OpenSpec 合并 delta spec 并归档 change。"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# comate 阶段 5:归档(Archive)
|
|
7
|
-
|
|
8
|
-
## 前置条件
|
|
9
|
-
|
|
10
|
-
- 验证已通过(阶段 4 完成),分支已处理
|
|
11
|
-
- `openspec/changes/<name>/.comate.yaml` 中 `verify_result: pass`
|
|
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 archive
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
### 1. 执行归档
|
|
29
|
-
|
|
30
|
-
```bash
|
|
31
|
-
bash "$COMATE" archive "<name>"
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
脚本自动完成:
|
|
35
|
-
1. 入口状态验证(phase=archive, verify_result=pass, archived=false)
|
|
36
|
-
2. 委托 `openspec archive <name> -y` 合并 delta spec 到主 spec;无 delta spec 时使用 `--skip-specs`
|
|
37
|
-
3. Design doc 前置元数据标注(archived-with, status: final),并把正文中指向 `openspec/changes/<name>/` 的引用重写为归档路径
|
|
38
|
-
4. Plan 前置元数据标注(archived-with),同样重写正文 OpenSpec 路径引用
|
|
39
|
-
5. 由 OpenSpec 移动 change 到 `openspec/changes/archive/YYYY-MM-DD-<name>/`
|
|
40
|
-
6. 通过 `state transition <archive-name> archived` 设 `archived: true`
|
|
41
|
-
7. 重写归档后 `.comate.yaml` 中随 change 移动的自指字段(`source_manifest` / `handoff_context` / `impl_context`)指向新归档路径,使 `sources <name> check/list` 等命令对归档 change 仍可用
|
|
42
|
-
|
|
43
|
-
非零退出码 → 报告错误并停止。零退出码 → 归档完成。摘要 `X/Y steps succeeded` 以真实执行步骤计数。
|
|
44
|
-
|
|
45
|
-
需预览不实际执行:加 `--dry-run`。
|
|
46
|
-
|
|
47
|
-
### 2. 生命周期闭环
|
|
48
|
-
|
|
49
|
-
```
|
|
50
|
-
brainstorming → delta spec → 实施 → 验证 → OpenSpec 合并主 spec → design doc 标注 → 归档
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
## 退出条件
|
|
54
|
-
|
|
55
|
-
- 归档脚本退出码 0
|
|
56
|
-
- 归档目录 `openspec/changes/archive/YYYY-MM-DD-<name>/` 存在
|
|
57
|
-
- 归档后 `.comate.yaml` 中 `archived: true`
|
|
58
|
-
|
|
59
|
-
归档成功后**不要再对原 change 名跑 guard**,原活跃目录已不存在。
|
|
60
|
-
|
|
61
|
-
## 完成
|
|
62
|
-
|
|
63
|
-
comate 流程全部完成。如需开始新工作,调用 `/comate` 或 `/comate-open`。
|
|
1
|
+
---
|
|
2
|
+
name: comate-archive
|
|
3
|
+
description: "comate 阶段 5:归档。用 /comate-archive 调用。委托 OpenSpec 合并 delta spec 并归档 change。"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# comate 阶段 5:归档(Archive)
|
|
7
|
+
|
|
8
|
+
## 前置条件
|
|
9
|
+
|
|
10
|
+
- 验证已通过(阶段 4 完成),分支已处理
|
|
11
|
+
- `openspec/changes/<name>/.comate.yaml` 中 `verify_result: pass`
|
|
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 archive
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### 1. 执行归档
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
bash "$COMATE" archive "<name>"
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
脚本自动完成:
|
|
35
|
+
1. 入口状态验证(phase=archive, verify_result=pass, archived=false)
|
|
36
|
+
2. 委托 `openspec archive <name> -y` 合并 delta spec 到主 spec;无 delta spec 时使用 `--skip-specs`
|
|
37
|
+
3. Design doc 前置元数据标注(archived-with, status: final),并把正文中指向 `openspec/changes/<name>/` 的引用重写为归档路径
|
|
38
|
+
4. Plan 前置元数据标注(archived-with),同样重写正文 OpenSpec 路径引用
|
|
39
|
+
5. 由 OpenSpec 移动 change 到 `openspec/changes/archive/YYYY-MM-DD-<name>/`
|
|
40
|
+
6. 通过 `state transition <archive-name> archived` 设 `archived: true`
|
|
41
|
+
7. 重写归档后 `.comate.yaml` 中随 change 移动的自指字段(`source_manifest` / `handoff_context` / `impl_context`)指向新归档路径,使 `sources <name> check/list` 等命令对归档 change 仍可用
|
|
42
|
+
|
|
43
|
+
非零退出码 → 报告错误并停止。零退出码 → 归档完成。摘要 `X/Y steps succeeded` 以真实执行步骤计数。
|
|
44
|
+
|
|
45
|
+
需预览不实际执行:加 `--dry-run`。
|
|
46
|
+
|
|
47
|
+
### 2. 生命周期闭环
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
brainstorming → delta spec → 实施 → 验证 → OpenSpec 合并主 spec → design doc 标注 → 归档
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## 退出条件
|
|
54
|
+
|
|
55
|
+
- 归档脚本退出码 0
|
|
56
|
+
- 归档目录 `openspec/changes/archive/YYYY-MM-DD-<name>/` 存在
|
|
57
|
+
- 归档后 `.comate.yaml` 中 `archived: true`
|
|
58
|
+
|
|
59
|
+
归档成功后**不要再对原 change 名跑 guard**,原活跃目录已不存在。
|
|
60
|
+
|
|
61
|
+
## 完成
|
|
62
|
+
|
|
63
|
+
comate 流程全部完成。如需开始新工作,调用 `/comate` 或 `/comate-open`。
|