@rpamis/comet 0.1.6 → 0.1.8
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/README.md +24 -11
- package/assets/skills/comet/SKILL.md +16 -3
- package/assets/skills/comet/scripts/comet-archive.sh +258 -0
- package/assets/skills/comet/scripts/comet-guard.sh +51 -1
- package/assets/skills/comet/scripts/comet-state.sh +495 -0
- package/assets/skills/comet-archive/SKILL.md +21 -109
- package/assets/skills/comet-build/SKILL.md +23 -73
- package/assets/skills/comet-design/SKILL.md +14 -31
- package/assets/skills/comet-hotfix/SKILL.md +9 -43
- package/assets/skills/comet-open/SKILL.md +8 -61
- package/assets/skills/comet-tweak/SKILL.md +9 -43
- package/assets/skills/comet-verify/SKILL.md +13 -61
- package/assets/skills-zh/comet/SKILL.md +23 -4
- package/assets/skills-zh/comet-archive/SKILL.md +21 -109
- package/assets/skills-zh/comet-build/SKILL.md +23 -73
- package/assets/skills-zh/comet-design/SKILL.md +14 -31
- package/assets/skills-zh/comet-hotfix/SKILL.md +9 -43
- package/assets/skills-zh/comet-open/SKILL.md +8 -61
- package/assets/skills-zh/comet-tweak/SKILL.md +9 -43
- package/assets/skills-zh/comet-verify/SKILL.md +13 -61
- package/package.json +1 -1
|
@@ -15,137 +15,49 @@ description: "Comet 阶段 5:归档。用 /comet-archive 调用。同步 delta
|
|
|
15
15
|
|
|
16
16
|
### 0. 入口状态验证(Entry Check)
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
执行入口验证:
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
3. `verify_result` 字段的值为 `"pass"`
|
|
24
|
-
4. `archived` 字段为 `"false"` 或 null(尚未归档)
|
|
25
|
-
|
|
26
|
-
**验证方式:**
|
|
27
|
-
- `cat openspec/changes/<name>/.comet.yaml` 读取全部字段
|
|
28
|
-
- 如 `verify_result` 不是 `"pass"`,必须先完成验证
|
|
29
|
-
|
|
30
|
-
**失败输出:**
|
|
31
|
-
```
|
|
32
|
-
[HARD STOP] Entry check failed for comet-archive
|
|
33
|
-
Expected: phase=archive, verify_result=pass, archived=false|null
|
|
34
|
-
Actual: phase=<实际值>, verify_result=<实际值>, archived=<实际值>
|
|
35
|
-
Suggestion: Run comet-verify first, or this change was already archived.
|
|
20
|
+
```bash
|
|
21
|
+
COMET_STATE=$(find . -path '*/comet/scripts/comet-state.sh' -type f -print -quit)
|
|
22
|
+
bash "$COMET_STATE" check <name> archive
|
|
36
23
|
```
|
|
37
24
|
|
|
38
|
-
|
|
25
|
+
验证通过后继续 Step 1。验证失败时脚本会输出具体失败原因。
|
|
39
26
|
|
|
40
27
|
### 1. 执行归档
|
|
41
28
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
**立即执行:** 使用 Skill 工具加载 `openspec-archive-change` 技能。禁止跳过此步骤。
|
|
45
|
-
|
|
46
|
-
技能加载后,按其指引归档。自动检查:
|
|
47
|
-
1. artifact 完成状态(proposal、design、specs、tasks)
|
|
48
|
-
2. 所有任务已标记 `[x]`
|
|
49
|
-
3. delta specs 同步状态
|
|
50
|
-
|
|
51
|
-
### 1b. 移动 Comet 状态文件
|
|
52
|
-
|
|
53
|
-
`openspec-archive-change` 不感知 `.comet.yaml`,因此 Comet 需要在 OpenSpec 归档完成后自行移动该文件:
|
|
29
|
+
运行归档脚本,自动完成以下全部步骤:
|
|
54
30
|
|
|
55
31
|
```bash
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
【写入验证】移动完成后必须验证:
|
|
60
|
-
test -f openspec/changes/archive/YYYY-MM-DD-<name>/.comet.yaml
|
|
61
|
-
确认归档目录中 .comet.yaml 存在
|
|
62
|
-
如文件不在预期位置,检查 mv 命令是否成功执行。
|
|
63
|
-
|
|
64
|
-
### 2. Delta Spec 同步
|
|
65
|
-
|
|
66
|
-
归档时将 delta specs 同步到主 specs:
|
|
67
|
-
|
|
68
|
-
```
|
|
69
|
-
openspec/changes/<name>/specs/<capability>/spec.md
|
|
70
|
-
↓ 同步
|
|
71
|
-
openspec/specs/<capability>/spec.md ← 主 spec(持久化)
|
|
32
|
+
COMET_ARCHIVE=$(find . -path '*/comet/scripts/comet-archive.sh' -type f -print -quit)
|
|
33
|
+
bash "$COMET_ARCHIVE" "<change-name>"
|
|
72
34
|
```
|
|
73
35
|
|
|
74
|
-
|
|
36
|
+
脚本自动执行:
|
|
37
|
+
1. 入口状态验证(phase=archive, verify_result=pass, archived=false)
|
|
38
|
+
2. Delta spec 同步到主 spec
|
|
39
|
+
3. Design doc 前置元数据标注(archived-with, status)
|
|
40
|
+
4. Plan 前置元数据标注(archived-with)
|
|
41
|
+
5. 移动 change 到归档目录
|
|
42
|
+
6. 更新 archived: true
|
|
75
43
|
|
|
76
|
-
|
|
44
|
+
如脚本返回非零退出码,报告错误并停止。
|
|
45
|
+
如脚本返回零退出码,归档完成。
|
|
77
46
|
|
|
78
|
-
|
|
47
|
+
如需预览而不实际执行,使用 `--dry-run` 参数。
|
|
79
48
|
|
|
80
|
-
|
|
81
|
-
- 对比 delta spec 最终版与 design doc 内容
|
|
82
|
-
- 如有偏差(实施过程中 spec 发生了增量修改),在 design doc 的 YAML frontmatter 中设置以下元数据:
|
|
83
|
-
|
|
84
|
-
```yaml
|
|
85
|
-
---
|
|
86
|
-
archived-with: YYYY-MM-DD-<name>
|
|
87
|
-
status: superseded-by-main-spec
|
|
88
|
-
implementation-notes: |
|
|
89
|
-
<简述实施过程中偏离原设计的关键变化>
|
|
90
|
-
---
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
- 如完全一致,仅设置:
|
|
94
|
-
|
|
95
|
-
```yaml
|
|
96
|
-
---
|
|
97
|
-
archived-with: YYYY-MM-DD-<name>
|
|
98
|
-
status: final
|
|
99
|
-
---
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
**3b. Plan 关联标注**
|
|
103
|
-
|
|
104
|
-
查找 `docs/superpowers/plans/` 中与当前 change 关联的实施计划,在 YAML frontmatter 中设置相同的 `archived-with` 元数据。
|
|
105
|
-
|
|
106
|
-
### 4. 归档目录
|
|
107
|
-
|
|
108
|
-
change 移入归档目录:
|
|
109
|
-
|
|
110
|
-
```
|
|
111
|
-
openspec/changes/archive/YYYY-MM-DD-<name>/
|
|
112
|
-
├── .openspec.yaml
|
|
113
|
-
├── .comet.yaml
|
|
114
|
-
├── proposal.md
|
|
115
|
-
├── design.md
|
|
116
|
-
├── specs/<capability>/spec.md
|
|
117
|
-
└── tasks.md
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
### 5. 生命周期闭环
|
|
49
|
+
### 2. 生命周期闭环
|
|
121
50
|
|
|
122
51
|
Spec 生命周期在此完成:
|
|
123
52
|
```
|
|
124
|
-
brainstorming → delta spec →
|
|
53
|
+
brainstorming → delta spec → 实施 → 验证 → 主 spec 覆盖 → design doc 标注 → 归档
|
|
125
54
|
```
|
|
126
55
|
|
|
127
56
|
## 退出条件
|
|
128
57
|
|
|
129
|
-
-
|
|
130
|
-
- 主 specs 已更新(delta → main 同步完成)
|
|
131
|
-
- 关联 design doc 已标注归档状态
|
|
132
|
-
- 关联 plan 已标注归档状态
|
|
133
|
-
- `.comet.yaml` 中 `archived` 已记录为 `true`
|
|
58
|
+
- 归档脚本执行成功(退出码 0)
|
|
134
59
|
- **阶段守卫**:运行 `bash $COMET_GUARD <change-name> archive`,全部 PASS 后确认归档完整
|
|
135
60
|
|
|
136
|
-
归档完成后,在归档目录的 `.comet.yaml` 中更新:
|
|
137
|
-
|
|
138
|
-
```yaml
|
|
139
|
-
phase: archive
|
|
140
|
-
archived: true
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
【写入验证】更新完成后必须验证:
|
|
144
|
-
cat openspec/changes/archive/YYYY-MM-DD-<name>/.comet.yaml
|
|
145
|
-
确认 phase 行的值为 "archive"
|
|
146
|
-
确认 archived 行的值为 "true"
|
|
147
|
-
如任一字段不匹配,重试写入后再次验证。最多重试 2 次,仍失败则报告错误并终止。
|
|
148
|
-
|
|
149
61
|
## 完成
|
|
150
62
|
|
|
151
63
|
Comet 流程全部完成。如需开始新工作,调用 `/comet` 或 `/comet-open`。
|
|
@@ -14,29 +14,14 @@ description: "Comet 阶段 3:计划与构建。用 /comet-build 调用。制
|
|
|
14
14
|
|
|
15
15
|
### 0. 入口状态验证(Entry Check)
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
执行入口验证:
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
3. `design_doc` 字段非 null 且非空
|
|
23
|
-
4. `design_doc` 引用的文件存在(例如 `docs/superpowers/specs/YYYY-MM-DD-topic-design.md`)
|
|
24
|
-
5. `openspec/changes/<name>/proposal.md` 存在且非空
|
|
25
|
-
6. `openspec/changes/<name>/tasks.md` 存在且非空
|
|
26
|
-
|
|
27
|
-
**验证方式:**
|
|
28
|
-
- `cat openspec/changes/<name>/.comet.yaml` 读取全部字段
|
|
29
|
-
- 用 `ls` 或 `test -f` 确认 design_doc 文件存在
|
|
30
|
-
|
|
31
|
-
**失败输出:**
|
|
32
|
-
```
|
|
33
|
-
[HARD STOP] Entry check failed for comet-build
|
|
34
|
-
Expected: phase=build, design_doc=<path> exists
|
|
35
|
-
Actual: phase=<实际值>, design_doc=<实际值或文件不存在>
|
|
36
|
-
Suggestion: Run comet-design first, or verify design_doc file exists.
|
|
19
|
+
```bash
|
|
20
|
+
COMET_STATE=$(find . -path '*/comet/scripts/comet-state.sh' -type f -print -quit)
|
|
21
|
+
bash "$COMET_STATE" check <name> build
|
|
37
22
|
```
|
|
38
23
|
|
|
39
|
-
|
|
24
|
+
验证通过后继续 Step 1。验证失败时脚本会输出具体失败原因。
|
|
40
25
|
|
|
41
26
|
### 1. 制定计划
|
|
42
27
|
|
|
@@ -56,17 +41,13 @@ design-doc: docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md
|
|
|
56
41
|
|
|
57
42
|
### 2. 更新计划状态
|
|
58
43
|
|
|
59
|
-
|
|
44
|
+
先记录 plan 路径:
|
|
60
45
|
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
plan: docs/superpowers/plans/YYYY-MM-DD-feature.md
|
|
46
|
+
```bash
|
|
47
|
+
bash "$COMET_STATE" set <name> plan docs/superpowers/plans/YYYY-MM-DD-feature.md
|
|
64
48
|
```
|
|
65
49
|
|
|
66
|
-
|
|
67
|
-
cat openspec/changes/<name>/.comet.yaml
|
|
68
|
-
确认 plan 行的值为 "docs/superpowers/plans/YYYY-MM-DD-feature.md"
|
|
69
|
-
如不匹配,重试写入后再次验证。最多重试 2 次,仍失败则报告错误并终止。
|
|
50
|
+
无需手动更新 phase,guard 会在退出条件满足后自动流转。
|
|
70
51
|
|
|
71
52
|
### 3. 工作区隔离
|
|
72
53
|
|
|
@@ -81,27 +62,14 @@ plan: docs/superpowers/plans/YYYY-MM-DD-feature.md
|
|
|
81
62
|
- 变更涉及 ≤ 3 个文件 → 推荐 A
|
|
82
63
|
- 需要并行开发、当前分支有未提交工作 → 推荐 B
|
|
83
64
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
- `branch`
|
|
87
|
-
- `worktree`
|
|
65
|
+
用户选择后,更新 `isolation` 字段。`isolation` 只允许以下值之一:
|
|
88
66
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
```yaml
|
|
92
|
-
# 用户选择创建分支 / A
|
|
93
|
-
isolation: branch
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
```yaml
|
|
97
|
-
# 用户选择创建 worktree / B
|
|
98
|
-
isolation: worktree
|
|
67
|
+
```bash
|
|
68
|
+
bash "$COMET_STATE" set <name> isolation <value>
|
|
99
69
|
```
|
|
100
70
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
确认 isolation 行的值为 "<branch 或 worktree>"
|
|
104
|
-
如不匹配,重试写入后再次验证。最多重试 2 次,仍失败则报告错误并终止。
|
|
71
|
+
- `branch`
|
|
72
|
+
- `worktree`
|
|
105
73
|
|
|
106
74
|
**执行隔离**:
|
|
107
75
|
|
|
@@ -124,29 +92,16 @@ isolation: worktree
|
|
|
124
92
|
- 任务数 ≤ 2 且无跨模块依赖 → 推荐 B
|
|
125
93
|
- 来自 hotfix 路径 → 推荐 B
|
|
126
94
|
|
|
127
|
-
|
|
95
|
+
用户选择后,更新 `build_mode` 字段。`build_mode` 只允许以下值之一:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
bash "$COMET_STATE" set <name> build_mode <value>
|
|
99
|
+
```
|
|
128
100
|
|
|
129
101
|
- `subagent-driven-development`
|
|
130
102
|
- `executing-plans`
|
|
131
103
|
- `direct`(仅 hotfix preset 使用)
|
|
132
104
|
|
|
133
|
-
Few-shot 示例:
|
|
134
|
-
|
|
135
|
-
```yaml
|
|
136
|
-
# 用户选择稳健模式 / A
|
|
137
|
-
build_mode: subagent-driven-development
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
```yaml
|
|
141
|
-
# 用户选择快速模式 / B
|
|
142
|
-
build_mode: executing-plans
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
【写入验证】更新完成后必须验证:
|
|
146
|
-
cat openspec/changes/<name>/.comet.yaml
|
|
147
|
-
确认 build_mode 行的值为 "<subagent-driven-development 或 executing-plans 或 direct>"
|
|
148
|
-
如不匹配,重试写入后再次验证。最多重试 2 次,仍失败则报告错误并终止。
|
|
149
|
-
|
|
150
105
|
然后,**立即执行:** 使用 Skill 工具加载对应技能。禁止跳过此步骤。
|
|
151
106
|
|
|
152
107
|
如所选 Superpowers 技能不可用,停止流程并提示安装或启用对应技能,不要用普通对话替代该步骤。
|
|
@@ -183,18 +138,13 @@ build_mode: executing-plans
|
|
|
183
138
|
- `.comet.yaml` 中 `phase` 已更新为 `verify`
|
|
184
139
|
- **阶段守卫**:运行 `bash $COMET_GUARD <change-name> build`,全部 PASS 后才允许流转
|
|
185
140
|
|
|
186
|
-
|
|
141
|
+
退出前运行 guard 自动流转:
|
|
187
142
|
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
verify_result: pending
|
|
143
|
+
```bash
|
|
144
|
+
bash $COMET_GUARD <change-name> build --apply
|
|
191
145
|
```
|
|
192
146
|
|
|
193
|
-
|
|
194
|
-
cat openspec/changes/<name>/.comet.yaml
|
|
195
|
-
确认 phase 行的值为 "verify"
|
|
196
|
-
确认 verify_result 行的值为 "pending"
|
|
197
|
-
如任一字段不匹配,重试写入后再次验证。最多重试 2 次,仍失败则报告错误并终止。
|
|
147
|
+
状态文件自动更新为 `phase: verify`、`verify_result: pending`。
|
|
198
148
|
|
|
199
149
|
## 自动流转
|
|
200
150
|
|
|
@@ -14,30 +14,14 @@ description: "Comet 阶段 2:深度设计。用 /comet-design 调用。通过
|
|
|
14
14
|
|
|
15
15
|
### 0. 入口状态验证(Entry Check)
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
3. `workflow` 字段的值为 `"full"`
|
|
23
|
-
4. `design_doc` 字段为 `null` 或空
|
|
24
|
-
5. `openspec/changes/<name>/proposal.md` 存在且非空
|
|
25
|
-
6. `openspec/changes/<name>/design.md` 存在且非空
|
|
26
|
-
7. `openspec/changes/<name>/tasks.md` 存在且非空
|
|
27
|
-
|
|
28
|
-
**验证方式:**
|
|
29
|
-
- `cat openspec/changes/<name>/.comet.yaml` 读取全部字段
|
|
30
|
-
- 逐条比对检查清单
|
|
31
|
-
|
|
32
|
-
**失败输出:**
|
|
33
|
-
```
|
|
34
|
-
[HARD STOP] Entry check failed for comet-design
|
|
35
|
-
Expected: phase=design, design_doc=<empty/null>, workflow=full
|
|
36
|
-
Actual: phase=<实际值>, design_doc=<实际值>, workflow=<实际值>
|
|
37
|
-
Suggestion: Run comet-open first, or check if .comet.yaml was modified out of sequence.
|
|
17
|
+
执行入口验证:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
COMET_STATE=$(find . -path '*/comet/scripts/comet-state.sh' -type f -print -quit)
|
|
21
|
+
bash "$COMET_STATE" check <name> design
|
|
38
22
|
```
|
|
39
23
|
|
|
40
|
-
|
|
24
|
+
验证通过后继续 Step 1。验证失败时脚本会输出具体失败原因。
|
|
41
25
|
|
|
42
26
|
### 1a. 读取已有上下文
|
|
43
27
|
|
|
@@ -66,18 +50,17 @@ Design 摘要: <design.md 架构决策>
|
|
|
66
50
|
|
|
67
51
|
### 2. 更新 Comet 状态
|
|
68
52
|
|
|
69
|
-
|
|
53
|
+
先记录 design_doc 路径,再运行 guard 自动流转:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
# 记录 design_doc 路径
|
|
57
|
+
bash "$COMET_STATE" set <name> design_doc docs/superpowers/specs/YYYY-MM-DD-topic-design.md
|
|
70
58
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
design_doc: docs/superpowers/specs/YYYY-MM-DD-topic-design.md
|
|
59
|
+
# 自动流转到下一阶段
|
|
60
|
+
bash $COMET_GUARD <change-name> design --apply
|
|
74
61
|
```
|
|
75
62
|
|
|
76
|
-
|
|
77
|
-
cat openspec/changes/<name>/.comet.yaml
|
|
78
|
-
确认 phase 行的值为 "build"
|
|
79
|
-
确认 design_doc 行的值为 "docs/superpowers/specs/YYYY-MM-DD-topic-design.md"
|
|
80
|
-
如任一字段不匹配,重试写入后再次验证。最多重试 2 次,仍失败则报告错误并终止。
|
|
63
|
+
状态文件自动更新,无需手动编辑其他字段。
|
|
81
64
|
|
|
82
65
|
### 3. 双 Spec 分工
|
|
83
66
|
|
|
@@ -22,25 +22,14 @@ Hotfix 是 Comet 五阶段能力的预设工作流,不是独立的平行流程
|
|
|
22
22
|
|
|
23
23
|
### 0. 入口状态验证(Entry Check)
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
执行入口验证:
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
**验证方式:**
|
|
31
|
-
- `test -d openspec/changes/<name>` 检查目录
|
|
32
|
-
- 如目录存在,`test -f openspec/changes/<name>/.comet.yaml` 检查配置文件
|
|
33
|
-
- 如 `.comet.yaml` 已存在,读取 `phase` 检查是否为未完成的 hotfix
|
|
34
|
-
|
|
35
|
-
**失败输出(有冲突):**
|
|
36
|
-
```
|
|
37
|
-
[HARD STOP] Entry check failed for comet-hotfix
|
|
38
|
-
Expected: openspec/changes/<name>/.comet.yaml does not exist (new change)
|
|
39
|
-
Actual: .comet.yaml exists with phase=<实际值>
|
|
40
|
-
Suggestion: Pick a different change name, or check if an existing hotfix is in progress.
|
|
27
|
+
```bash
|
|
28
|
+
COMET_STATE=$(find . -path '*/comet/scripts/comet-state.sh' -type f -print -quit)
|
|
29
|
+
bash "$COMET_STATE" check <name> open
|
|
41
30
|
```
|
|
42
31
|
|
|
43
|
-
|
|
32
|
+
验证通过后继续流程步骤。验证失败时脚本会输出具体失败原因。
|
|
44
33
|
|
|
45
34
|
执行链路:open → build → verify → archive。Hotfix 为每个阶段提供默认决策:精简开启、直接构建、按规模验证、验证通过后归档。
|
|
46
35
|
|
|
@@ -56,34 +45,11 @@ Hotfix 是 Comet 五阶段能力的预设工作流,不是独立的平行流程
|
|
|
56
45
|
- `tasks.md` — 修复任务清单
|
|
57
46
|
- **无需 delta spec**(除非修复改变了已有 spec 的验收场景)
|
|
58
47
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
```yaml
|
|
62
|
-
workflow: hotfix
|
|
63
|
-
phase: build
|
|
64
|
-
design_doc: null
|
|
65
|
-
plan: null
|
|
66
|
-
build_mode: direct
|
|
67
|
-
isolation: branch
|
|
68
|
-
verify_mode: light
|
|
69
|
-
verify_result: pending
|
|
70
|
-
verified_at: null
|
|
71
|
-
archived: false
|
|
72
|
-
```
|
|
48
|
+
初始化 Comet 状态文件:
|
|
73
49
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
确认 phase 行的值为 "build"
|
|
78
|
-
确认 design_doc 行的值为 "null"
|
|
79
|
-
确认 plan 行的值为 "null"
|
|
80
|
-
确认 build_mode 行的值为 "direct"
|
|
81
|
-
确认 isolation 行的值为 "branch"
|
|
82
|
-
确认 verify_mode 行的值为 "light"
|
|
83
|
-
确认 verify_result 行的值为 "pending"
|
|
84
|
-
确认 verified_at 行的值为 "null"
|
|
85
|
-
确认 archived 行的值为 "false"
|
|
86
|
-
如任一字段不匹配,重试写入后再次验证。最多重试 2 次,仍失败则报告错误并终止。
|
|
50
|
+
```bash
|
|
51
|
+
bash "$COMET_STATE" init <name> hotfix
|
|
52
|
+
```
|
|
87
53
|
|
|
88
54
|
### 2. 直接构建(preset build)
|
|
89
55
|
|
|
@@ -13,28 +13,14 @@ description: "Comet 阶段 1:开启。用 /comet-open 调用。通过 OpenSpec
|
|
|
13
13
|
|
|
14
14
|
### 0. 入口状态验证(Entry Check)
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
执行入口验证:
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
3. `openspec/changes/<name>/proposal.md` 存在且非空
|
|
22
|
-
4. `openspec/changes/<name>/design.md` 存在且非空
|
|
23
|
-
5. `openspec/changes/<name>/tasks.md` 存在且非空
|
|
24
|
-
|
|
25
|
-
**验证方式:**
|
|
26
|
-
- 读取以上路径确认存在/不存在
|
|
27
|
-
- 如 `.comet.yaml` 已存在,读取其 `phase` 字段:如 phase 不为空,输出 `[HARD STOP]` 并提示可能已有活跃 change
|
|
28
|
-
|
|
29
|
-
**失败输出:**
|
|
30
|
-
```
|
|
31
|
-
[HARD STOP] Entry check failed for comet-open
|
|
32
|
-
Expected: .comet.yaml does not exist, proposal.md + design.md + tasks.md exist
|
|
33
|
-
Actual: phase=<实际值>, design_doc=<实际值> (或文件不存在)
|
|
34
|
-
Suggestion: Check if another change with the same name is already active.
|
|
18
|
+
```bash
|
|
19
|
+
COMET_STATE=$(find . -path '*/comet/scripts/comet-state.sh' -type f -print -quit)
|
|
20
|
+
bash "$COMET_STATE" check <name> open
|
|
35
21
|
```
|
|
36
22
|
|
|
37
|
-
|
|
23
|
+
验证通过后继续 Step 1。验证失败时脚本会输出具体失败原因。
|
|
38
24
|
|
|
39
25
|
### 1. 探索想法
|
|
40
26
|
|
|
@@ -57,53 +43,14 @@ openspec/changes/<name>/
|
|
|
57
43
|
└── tasks.md # 任务清单(勾选框)
|
|
58
44
|
```
|
|
59
45
|
|
|
60
|
-
###
|
|
61
|
-
|
|
62
|
-
**触发条件**:proposal.md 中提到修改已有 capability,或用户明确要求增量修改。
|
|
63
|
-
|
|
64
|
-
**适用场景**:对已归档功能做增量修改(而非全新 capability)。
|
|
46
|
+
### 3. 初始化 Comet 状态
|
|
65
47
|
|
|
66
|
-
|
|
67
|
-
1. 查找 `openspec/specs/<capability>/spec.md` 是否已存在主 spec
|
|
68
|
-
2. 如已存在,将主 spec 复制为 delta spec 基线:
|
|
48
|
+
初始化 Comet 状态文件:
|
|
69
49
|
|
|
70
50
|
```bash
|
|
71
|
-
|
|
72
|
-
cp openspec/specs/<capability>/spec.md openspec/changes/<name>/specs/<capability>/spec.md
|
|
51
|
+
bash "$COMET_STATE" init <name> full
|
|
73
52
|
```
|
|
74
53
|
|
|
75
|
-
3. 在复制的 delta spec 中,按 delta 格式组织变更(`## ADDED`、`## MODIFIED`、`## REMOVED`)
|
|
76
|
-
4. 在 proposal.md 中注明 `基于已有 capability: <capability-name>`
|
|
77
|
-
|
|
78
|
-
### 3. 初始化 Comet 状态
|
|
79
|
-
|
|
80
|
-
在 `openspec/changes/<name>/` 下创建独立的 `.comet.yaml` 文件:
|
|
81
|
-
|
|
82
|
-
```yaml
|
|
83
|
-
workflow: full
|
|
84
|
-
phase: design
|
|
85
|
-
design_doc: null
|
|
86
|
-
plan: null
|
|
87
|
-
build_mode: null
|
|
88
|
-
verify_mode: null
|
|
89
|
-
verify_result: pending
|
|
90
|
-
verified_at: null
|
|
91
|
-
archived: false
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
【写入验证】创建完成后必须验证:
|
|
95
|
-
cat openspec/changes/<name>/.comet.yaml
|
|
96
|
-
确认 workflow 行的值为 "full"
|
|
97
|
-
确认 phase 行的值为 "design"
|
|
98
|
-
确认 design_doc 行的值为 "null"
|
|
99
|
-
确认 plan 行的值为 "null"
|
|
100
|
-
确认 build_mode 行的值为 "null"
|
|
101
|
-
确认 verify_mode 行的值为 "null"
|
|
102
|
-
确认 verify_result 行的值为 "pending"
|
|
103
|
-
确认 verified_at 行的值为 "null"
|
|
104
|
-
确认 archived 行的值为 "false"
|
|
105
|
-
如任一字段不匹配,重试写入后再次验证。最多重试 2 次,仍失败则报告错误并终止。
|
|
106
|
-
|
|
107
54
|
### 4. 内容完整性检查
|
|
108
55
|
|
|
109
56
|
确认三个文档内容完整:
|
|
@@ -23,25 +23,14 @@ Tweak 是 Comet 五阶段能力的预设工作流,不是独立的平行流程
|
|
|
23
23
|
|
|
24
24
|
### 0. 入口状态验证(Entry Check)
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
执行入口验证:
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
**验证方式:**
|
|
32
|
-
- `test -d openspec/changes/<name>` 检查目录
|
|
33
|
-
- 如目录存在,`test -f openspec/changes/<name>/.comet.yaml` 检查配置文件
|
|
34
|
-
- 如 `.comet.yaml` 已存在,读取 `phase` 检查是否为未完成的 tweak
|
|
35
|
-
|
|
36
|
-
**失败输出(有冲突):**
|
|
37
|
-
```
|
|
38
|
-
[HARD STOP] Entry check failed for comet-tweak
|
|
39
|
-
Expected: openspec/changes/<name>/.comet.yaml does not exist (new change)
|
|
40
|
-
Actual: .comet.yaml exists with phase=<实际值>
|
|
41
|
-
Suggestion: Pick a different change name, or check if an existing tweak is in progress.
|
|
28
|
+
```bash
|
|
29
|
+
COMET_STATE=$(find . -path '*/comet/scripts/comet-state.sh' -type f -print -quit)
|
|
30
|
+
bash "$COMET_STATE" check <name> open
|
|
42
31
|
```
|
|
43
32
|
|
|
44
|
-
|
|
33
|
+
验证通过后继续流程步骤。验证失败时脚本会输出具体失败原因。
|
|
45
34
|
|
|
46
35
|
执行链路:open → lightweight build → light verify → archive。Tweak 为每个阶段提供默认决策:精简开启、轻量构建、轻量验证、验证通过后归档。
|
|
47
36
|
|
|
@@ -57,34 +46,11 @@ Tweak 是 Comet 五阶段能力的预设工作流,不是独立的平行流程
|
|
|
57
46
|
- `tasks.md` — 不超过 3 个任务
|
|
58
47
|
- **无需 delta spec**(除非变更改变了已有 spec 的验收场景;一旦需要 delta spec,升级为完整 `/comet`)
|
|
59
48
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
```yaml
|
|
63
|
-
workflow: tweak
|
|
64
|
-
phase: build
|
|
65
|
-
design_doc: null
|
|
66
|
-
plan: null
|
|
67
|
-
build_mode: direct
|
|
68
|
-
isolation: branch
|
|
69
|
-
verify_mode: light
|
|
70
|
-
verify_result: pending
|
|
71
|
-
verified_at: null
|
|
72
|
-
archived: false
|
|
73
|
-
```
|
|
49
|
+
初始化 Comet 状态文件:
|
|
74
50
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
确认 phase 行的值为 "build"
|
|
79
|
-
确认 design_doc 行的值为 "null"
|
|
80
|
-
确认 plan 行的值为 "null"
|
|
81
|
-
确认 build_mode 行的值为 "direct"
|
|
82
|
-
确认 isolation 行的值为 "branch"
|
|
83
|
-
确认 verify_mode 行的值为 "light"
|
|
84
|
-
确认 verify_result 行的值为 "pending"
|
|
85
|
-
确认 verified_at 行的值为 "null"
|
|
86
|
-
确认 archived 行的值为 "false"
|
|
87
|
-
如任一字段不匹配,重试写入后再次验证。最多重试 2 次,仍失败则报告错误并终止。
|
|
51
|
+
```bash
|
|
52
|
+
bash "$COMET_STATE" init <name> tweak
|
|
53
|
+
```
|
|
88
54
|
|
|
89
55
|
### 2. 轻量构建(preset build)
|
|
90
56
|
|