@rpamis/comet 0.2.3 → 0.2.5
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 +60 -22
- package/assets/manifest.json +1 -1
- package/assets/skills/comet/SKILL.md +50 -14
- package/assets/skills/comet/scripts/comet-archive.sh +2 -2
- package/assets/skills/comet/scripts/comet-guard.sh +50 -48
- package/assets/skills/comet/scripts/comet-state.sh +158 -39
- package/assets/skills/comet/scripts/comet-yaml-validate.sh +9 -3
- package/assets/skills/comet-archive/SKILL.md +7 -4
- package/assets/skills/comet-build/SKILL.md +21 -6
- package/assets/skills/comet-design/SKILL.md +12 -19
- package/assets/skills/comet-hotfix/SKILL.md +36 -26
- package/assets/skills/comet-open/SKILL.md +19 -7
- package/assets/skills/comet-tweak/SKILL.md +23 -12
- package/assets/skills/comet-verify/SKILL.md +32 -7
- package/assets/skills-zh/comet/SKILL.md +64 -21
- package/assets/skills-zh/comet-archive/SKILL.md +7 -4
- package/assets/skills-zh/comet-build/SKILL.md +21 -6
- package/assets/skills-zh/comet-design/SKILL.md +12 -19
- package/assets/skills-zh/comet-hotfix/SKILL.md +42 -26
- package/assets/skills-zh/comet-open/SKILL.md +30 -16
- package/assets/skills-zh/comet-tweak/SKILL.md +29 -12
- package/assets/skills-zh/comet-verify/SKILL.md +46 -6
- package/dist/cli/index.js +9 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/doctor.d.ts +3 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +52 -29
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.d.ts +9 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +72 -13
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +19 -0
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/update.d.ts +22 -2
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +175 -29
- package/dist/commands/update.js.map +1 -1
- package/package.json +2 -2
|
@@ -11,17 +11,21 @@ description: "Comet Phase 1: Open. Invoke with /comet-open. Explore ideas throug
|
|
|
11
11
|
|
|
12
12
|
## Steps
|
|
13
13
|
|
|
14
|
-
### 0.
|
|
14
|
+
### 0. Locate Comet Scripts
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
Locate scripts before creating state:
|
|
17
17
|
|
|
18
18
|
```bash
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
COMET_SEARCH_ROOTS=("." "$HOME/.claude/skills" "$HOME/.codex/skills" "$HOME/.cursor/skills")
|
|
20
|
+
COMET_STATE="${COMET_STATE:-$(find "${COMET_SEARCH_ROOTS[@]}" -path '*/comet/scripts/comet-state.sh' -type f -print -quit 2>/dev/null)}"
|
|
21
|
+
COMET_GUARD="${COMET_GUARD:-$(find "${COMET_SEARCH_ROOTS[@]}" -path '*/comet/scripts/comet-guard.sh' -type f -print -quit 2>/dev/null)}"
|
|
22
|
+
|
|
23
|
+
if [ -z "$COMET_STATE" ] || [ -z "$COMET_GUARD" ]; then
|
|
24
|
+
echo "ERROR: Comet scripts not found. Ensure the comet skill is installed." >&2
|
|
25
|
+
return 1
|
|
26
|
+
fi
|
|
21
27
|
```
|
|
22
28
|
|
|
23
|
-
Proceed to Step 1 after verification passes. The script outputs specific failure reasons when verification fails.
|
|
24
|
-
|
|
25
29
|
### 1. Explore Idea
|
|
26
30
|
|
|
27
31
|
**Immediately execute:** Use the Skill tool to load the `openspec-explore` skill. Skipping this step is prohibited.
|
|
@@ -61,7 +65,15 @@ Confirm the three documents have complete content:
|
|
|
61
65
|
## Exit Conditions
|
|
62
66
|
|
|
63
67
|
- proposal.md, design.md, and tasks.md are all created with complete content
|
|
64
|
-
- **Phase guard**: Run `bash $COMET_GUARD <change-name> open
|
|
68
|
+
- **Phase guard**: Run `bash "$COMET_GUARD" <change-name> open --apply`; after all PASS, state automatically advances to the next phase
|
|
69
|
+
|
|
70
|
+
You must use `--apply` before exiting. Otherwise `.comet.yaml` stays at `phase: open`, and the next phase entry check will fail.
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
bash "$COMET_GUARD" <change-name> open --apply
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Full workflow advances to `phase: design`; hotfix/tweak presets advance to `phase: build`.
|
|
65
77
|
|
|
66
78
|
## Automatic Transition
|
|
67
79
|
|
|
@@ -13,7 +13,7 @@ Applicable for small-scale non-bug changes, such as copy adjustments, configurat
|
|
|
13
13
|
1. No new capability
|
|
14
14
|
2. No architecture changes
|
|
15
15
|
3. No interface changes involved
|
|
16
|
-
4. Usually not exceeding 3 tasks,
|
|
16
|
+
4. Usually not exceeding 3 tasks, 4 files
|
|
17
17
|
|
|
18
18
|
**Not applicable**: If change process discovers need for capability, architecture, or interface adjustments, should upgrade to full `/comet` workflow.
|
|
19
19
|
|
|
@@ -21,19 +21,17 @@ Applicable for small-scale non-bug changes, such as copy adjustments, configurat
|
|
|
21
21
|
|
|
22
22
|
## Process (preset workflow, 4 phases)
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
Execution chain: open → lightweight build → light verify → archive. Tweak provides default decisions for each phase: streamlined open, lightweight build, lightweight verification, archive after verification passes.
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
Locate Comet scripts before starting:
|
|
27
27
|
|
|
28
28
|
```bash
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
COMET_SEARCH_ROOTS=("." "$HOME/.claude/skills" "$HOME/.codex/skills" "$HOME/.cursor/skills")
|
|
30
|
+
COMET_STATE="${COMET_STATE:-$(find "${COMET_SEARCH_ROOTS[@]}" -path '*/comet/scripts/comet-state.sh' -type f -print -quit 2>/dev/null)}"
|
|
31
|
+
COMET_GUARD="${COMET_GUARD:-$(find "${COMET_SEARCH_ROOTS[@]}" -path '*/comet/scripts/comet-guard.sh' -type f -print -quit 2>/dev/null)}"
|
|
32
|
+
COMET_ARCHIVE="${COMET_ARCHIVE:-$(find "${COMET_SEARCH_ROOTS[@]}" -path '*/comet/scripts/comet-archive.sh' -type f -print -quit 2>/dev/null)}"
|
|
31
33
|
```
|
|
32
34
|
|
|
33
|
-
Proceed to process steps after verification passes. The script outputs specific failure reasons when verification fails.
|
|
34
|
-
|
|
35
|
-
Execution chain: open → lightweight build → light verify → archive. Tweak provides default decisions for each phase: streamlined open, lightweight build, lightweight verification, archive after verification passes.
|
|
36
|
-
|
|
37
35
|
### 1. Quick Open (preset open)
|
|
38
36
|
|
|
39
37
|
Reuse Comet open capability to create change, but use tweak defaults: do not execute `openspec-explore` long exploration, directly enter streamlined change creation.
|
|
@@ -52,6 +50,12 @@ Initialize Comet state file:
|
|
|
52
50
|
bash "$COMET_STATE" init <name> tweak
|
|
53
51
|
```
|
|
54
52
|
|
|
53
|
+
Run phase guard to transition open → build:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
bash "$COMET_GUARD" <change-name> open --apply
|
|
57
|
+
```
|
|
58
|
+
|
|
55
59
|
### 2. Lightweight Build (preset build)
|
|
56
60
|
|
|
57
61
|
Use tweak defaults: `build_mode: direct`. Skip `superpowers:brainstorming` and `superpowers:writing-plans`.
|
|
@@ -65,11 +69,18 @@ Use tweak defaults: `build_mode: direct`. Skip `superpowers:brainstorming` and `
|
|
|
65
69
|
- Run related tests to confirm pass
|
|
66
70
|
- Check corresponding `- [ ]` to `- [x]` in tasks.md
|
|
67
71
|
- Commit code, commit message format: `tweak: <brief change description>`
|
|
68
|
-
3. After all tasks complete,
|
|
72
|
+
3. After all tasks complete, explicitly run relevant project tests and build commands
|
|
73
|
+
4. Run phase guard to transition build → verify:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
bash "$COMET_GUARD" <change-name> build --apply
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
State automatically updates to `phase: verify`, `verify_result: pending`, then enter verification.
|
|
69
80
|
|
|
70
81
|
### 3. Lightweight Verification (preset verify)
|
|
71
82
|
|
|
72
|
-
Reuse `/comet-verify`. Tweak must maintain lightweight verification conditions: ≤ 3 tasks, ≤
|
|
83
|
+
Reuse `/comet-verify`. Tweak must maintain lightweight verification conditions: ≤ 3 tasks, ≤ 4 files, no delta spec, no new capability.
|
|
73
84
|
|
|
74
85
|
**Immediately execute:** Use the Skill tool to load the `comet-verify` skill. Skipping this step is prohibited.
|
|
75
86
|
|
|
@@ -119,4 +130,4 @@ Upgrade method: On current change basis, supplement Design Doc (execute `/comet-
|
|
|
119
130
|
- Small change completed, tests pass
|
|
120
131
|
- Change archived
|
|
121
132
|
- No new capability, architecture adjustments, or interface changes
|
|
122
|
-
- **Phase guard**: Before build → verify run `bash $COMET_GUARD <change-name> build
|
|
133
|
+
- **Phase guard**: Before build → verify run `bash "$COMET_GUARD" <change-name> build --apply`; before verify → archive follow `/comet-verify` and run `bash "$COMET_GUARD" <change-name> verify --apply`
|
|
@@ -17,7 +17,9 @@ description: "Comet Phase 4: Verify and Complete. Invoke with /comet-verify. Ver
|
|
|
17
17
|
Execute entry verification:
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
|
-
|
|
20
|
+
COMET_SEARCH_ROOTS=("." "$HOME/.claude/skills" "$HOME/.codex/skills" "$HOME/.cursor/skills")
|
|
21
|
+
COMET_STATE="${COMET_STATE:-$(find "${COMET_SEARCH_ROOTS[@]}" -path '*/comet/scripts/comet-state.sh' -type f -print -quit 2>/dev/null)}"
|
|
22
|
+
COMET_GUARD="${COMET_GUARD:-$(find "${COMET_SEARCH_ROOTS[@]}" -path '*/comet/scripts/comet-guard.sh' -type f -print -quit 2>/dev/null)}"
|
|
21
23
|
bash "$COMET_STATE" check <name> verify
|
|
22
24
|
```
|
|
23
25
|
|
|
@@ -33,18 +35,38 @@ bash "$COMET_STATE" scale <name>
|
|
|
33
35
|
|
|
34
36
|
Script automatically counts tasks, delta specs, and changed files to determine whether to use light or full verification mode, and sets the verify_mode field.
|
|
35
37
|
|
|
38
|
+
Note: if the build phase committed after each task, worktree diff can underestimate change size. In that case, read the plan header `base-ref` and re-check the full commit range:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
PLAN=$(bash "$COMET_STATE" get <name> plan)
|
|
42
|
+
BASE_REF=$(grep '^base-ref:' "$PLAN" 2>/dev/null | head -1 | sed 's/^base-ref: *//')
|
|
43
|
+
git diff --stat "$BASE_REF"...HEAD
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
If the commit range exceeds lightweight thresholds (> 5 files, cross-module coordination, or more than 1 delta spec capability), manually switch to full verification:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
bash "$COMET_STATE" set <name> verify_mode full
|
|
50
|
+
```
|
|
51
|
+
|
|
36
52
|
### 2a. Lightweight Verification (Small Changes)
|
|
37
53
|
|
|
38
54
|
When scale assessment result is "small", skip `openspec-verify-change`, directly execute the following checks:
|
|
39
55
|
|
|
40
56
|
1. All tasks in tasks.md completed `[x]`
|
|
41
|
-
2. Changed files consistent with tasks.md description (`git diff --stat
|
|
57
|
+
2. Changed files consistent with tasks.md description (compare `git diff --stat` against task content)
|
|
42
58
|
3. Build passes (run project-appropriate build command, e.g., `npm run build`, `mvn compile`, `cargo build`)
|
|
43
59
|
4. Related tests pass
|
|
44
60
|
5. No obvious security issues (no hardcoded secrets, no new unsafe operations)
|
|
45
61
|
|
|
46
62
|
**Pass standard**: All 5 items OK, no CRITICAL issues.
|
|
47
63
|
|
|
64
|
+
**When failing**: report failed items, record failure, move back to build, then invoke `/comet-build`.
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
bash "$COMET_STATE" transition <name> verify-fail
|
|
68
|
+
```
|
|
69
|
+
|
|
48
70
|
**Report format**: Brief table listing 5 check results + PASS/FAIL.
|
|
49
71
|
|
|
50
72
|
**Skipped items** (not checked in lightweight verification):
|
|
@@ -68,7 +90,11 @@ After the skill loads, follow its guidance to verify. Check items:
|
|
|
68
90
|
6. No contradiction between delta spec and design doc (if Build phase had incremental spec modifications, check if design doc has corresponding records)
|
|
69
91
|
7. `docs/superpowers/specs/` associated design document can be located (file exists and relates to current change)
|
|
70
92
|
|
|
71
|
-
When verification fails: report missing items,
|
|
93
|
+
When verification fails: report missing items, record failure, move back to build, then invoke `/comet-build`.
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
bash "$COMET_STATE" transition <name> verify-fail
|
|
97
|
+
```
|
|
72
98
|
|
|
73
99
|
**Spec drift handling**:
|
|
74
100
|
- If check item 6 finds contradiction (delta spec has content but design doc doesn't reflect it), prompt user:
|
|
@@ -96,13 +122,12 @@ After the skill loads, follow its guidance to complete. Branch handling options:
|
|
|
96
122
|
|
|
97
123
|
- Verification report passed
|
|
98
124
|
- Branch handled
|
|
99
|
-
-
|
|
100
|
-
- **Phase guard**: Run `bash $COMET_GUARD <change-name> verify`, allow transition only after all PASS
|
|
125
|
+
- **Phase guard**: Run `bash "$COMET_GUARD" <change-name> verify --apply`; after all PASS, it uses `comet-state transition verify-pass` to advance to `phase: archive`
|
|
101
126
|
|
|
102
|
-
|
|
127
|
+
After verification and branch handling are complete, run guard to auto-transition:
|
|
103
128
|
|
|
104
129
|
```bash
|
|
105
|
-
bash $COMET_GUARD <change-name> verify --apply
|
|
130
|
+
bash "$COMET_GUARD" <change-name> verify --apply
|
|
106
131
|
```
|
|
107
132
|
|
|
108
133
|
State file is automatically updated to `phase: archive`, `verify_result: pass`, `verified_at: YYYY-MM-DD`.
|
|
@@ -22,33 +22,51 @@ agent 做决策只需读本节,参考附录按需查阅。
|
|
|
22
22
|
|
|
23
23
|
### 阶段自动检测
|
|
24
24
|
|
|
25
|
-
**Step 0: 活跃 Change
|
|
25
|
+
**Step 0: 活跃 Change 发现与意图判定**
|
|
26
26
|
|
|
27
|
-
1.
|
|
28
|
-
2.
|
|
27
|
+
1. 先做 Preset 检测;命中 hotfix/tweak 时直接调用对应 preset skill,不进入普通 open 分支
|
|
28
|
+
2. 未命中 preset 时,运行 `openspec list --json` 获取所有活跃 change
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|------|------|
|
|
32
|
-
| 无活跃 change | → 调用 `/comet-open` |
|
|
33
|
-
| 恰好 1 个活跃 change | → 自动选中,进入 Step 1 |
|
|
34
|
-
| 多个活跃 change | → 列出清单让用户选择 |
|
|
35
|
-
|
|
36
|
-
**Preset 检测**:
|
|
30
|
+
**Preset 检测优先级最高**:
|
|
37
31
|
- 用户明确描述为 bug fix / 热修复 + 满足 hotfix 条件 → 直接 `/comet-hotfix`
|
|
38
32
|
- 用户明确描述为文案/配置/文档/prompt 小调整 + 满足 tweak 条件 → 直接 `/comet-tweak`
|
|
33
|
+
- 未命中 preset → 按下表处理
|
|
34
|
+
|
|
35
|
+
| 活跃 change | 用户输入 | 行为 |
|
|
36
|
+
|-------------|---------|------|
|
|
37
|
+
| 无 | 非 preset 输入 | → 调用 `/comet-open` |
|
|
38
|
+
| 恰好 1 个 | `/comet <描述>` | → **询问**:继续该变更 or 创建新变更 |
|
|
39
|
+
| 多个 | `/comet <描述>` | → **询问**:继续现有变更 or 创建新变更;若选继续 → 列出清单让用户选择 |
|
|
40
|
+
| 恰好 1 个 | `/comet`(无描述) | → 自动选中,进入 Step 1 |
|
|
41
|
+
| 多个 | `/comet`(无描述) | → 列出清单让用户选择 |
|
|
42
|
+
|
|
43
|
+
<IMPORTANT>
|
|
44
|
+
当用户选择「创建新变更」时,**必须调用 `/comet-open`**(禁止直接调用 `/opsx:new`)。
|
|
45
|
+
`/comet-open` 负责完整双初始化:OpenSpec artifacts(由内部 `/opsx:new` 创建)+ `.comet.yaml` 状态文件。
|
|
46
|
+
直接调用 `/opsx:new` 会缺失 `.comet.yaml`,导致后续阶段判定失败。
|
|
47
|
+
</IMPORTANT>
|
|
39
48
|
|
|
40
49
|
**Step 1: 读取 `.comet.yaml` 状态元数据**
|
|
41
50
|
|
|
42
51
|
优先读取 `openspec/changes/<name>/.comet.yaml`。不存在时回退到 `openspec status --change "<name>" --json`、`tasks.md` 和 `docs/superpowers/` 文件检查。
|
|
43
52
|
|
|
53
|
+
**断点恢复规则**:
|
|
54
|
+
- 每次恢复上下文时,先重新执行 Step 0 和 Step 1,不依赖对话历史判断阶段
|
|
55
|
+
- 若 `phase: build`,读取 tasks.md 的下一个未勾选任务继续
|
|
56
|
+
- 若 `phase: verify` 且 `verify_result: fail`,先运行 `bash "$COMET_STATE" transition <name> verify-fail`,再调用 `/comet-build`
|
|
57
|
+
- 若 `phase: open` 但 proposal/design/tasks 已完整,先运行 `bash "$COMET_GUARD" <change-name> open --apply` 修正状态,再继续判定
|
|
58
|
+
- 若 `phase: archive`,只允许调用 `/comet-archive`;归档成功后 change 会移动到 archive 目录,不再对原活跃目录运行 guard
|
|
59
|
+
|
|
44
60
|
**Step 2: 阶段判定**(按顺序,命中即停)
|
|
45
61
|
|
|
46
62
|
1. `archived: true` 或 change 已移入 archive → 流程已完成
|
|
47
63
|
2. `verify_result: pass` 且 `archived` 不是 `true` → `/comet-archive`
|
|
48
|
-
3. `
|
|
49
|
-
4. `phase:
|
|
50
|
-
5. `phase:
|
|
51
|
-
6.
|
|
64
|
+
3. `verify_result: fail` → `bash "$COMET_STATE" transition <name> verify-fail` 后 `/comet-build`
|
|
65
|
+
4. `phase: verify` 或 tasks.md 全部勾选 → `/comet-verify`
|
|
66
|
+
5. `phase: build` 或已有 Design Doc 但计划/执行未完成 → `/comet-build`
|
|
67
|
+
6. `phase: design` 或有 change 但无 Design Doc → `/comet-design`
|
|
68
|
+
7. `phase: open` 或有活跃 change 但 `.comet.yaml` 缺失 → `/comet-open`
|
|
69
|
+
8. 无活跃 change → `/comet-open`
|
|
52
70
|
|
|
53
71
|
如果元数据与文件状态冲突,以文件状态为准,修正 `.comet.yaml` 后继续。
|
|
54
72
|
|
|
@@ -74,7 +92,7 @@ agent 做决策只需读本节,参考附录按需查阅。
|
|
|
74
92
|
| `openspec list --json` 失败 | 检查 openspec 是否已安装,提示 `openspec init` |
|
|
75
93
|
| 子 skill 不可用 | 停止流程,提示安装或启用对应 skill |
|
|
76
94
|
| `.comet.yaml` 格式异常或缺失 | 以文件状态为准,用 `bash $COMET_STATE set` 修正后继续 |
|
|
77
|
-
|
|
|
95
|
+
| 构建/测试失败 | 返回 build 阶段修复,不进入 verify |
|
|
78
96
|
| change 目录结构不完整 | 按 `comet-open` 产物要求补齐 |
|
|
79
97
|
|
|
80
98
|
### 阶段衔接
|
|
@@ -84,14 +102,16 @@ agent 做决策只需读本节,参考附录按需查阅。
|
|
|
84
102
|
|
|
85
103
|
流转链:open → design → build → verify → archive
|
|
86
104
|
|
|
87
|
-
|
|
105
|
+
**连续执行要求**:从检测到的阶段开始,agent 必须自动走完后续所有阶段,中间不停顿等待用户输入(除非遇到需要用户决策的节点)。每个阶段完成后立即进入下一阶段,无需用户再次输入。
|
|
106
|
+
|
|
107
|
+
需要用户参与的节点(仅在这些节点暂停):
|
|
88
108
|
1. brainstorming 确认设计方案
|
|
89
109
|
2. build 阶段选择执行方式
|
|
90
110
|
3. verify 不通过时决定修复或接受偏差
|
|
91
111
|
4. finishing-branch 选择分支处理方式
|
|
92
112
|
5. 遇到升级条件(hotfix/tweak → 完整流程)
|
|
93
113
|
|
|
94
|
-
agent
|
|
114
|
+
agent 不应跳过这些决策点;其他明确无歧义的阶段衔接必须自动继续推进,不得中途退出。
|
|
95
115
|
</IMPORTANT>
|
|
96
116
|
|
|
97
117
|
---
|
|
@@ -138,6 +158,8 @@ build_mode: subagent-driven-development
|
|
|
138
158
|
isolation: branch
|
|
139
159
|
verify_mode: light
|
|
140
160
|
verify_result: pending
|
|
161
|
+
verification_report: null
|
|
162
|
+
branch_status: pending
|
|
141
163
|
verified_at: null
|
|
142
164
|
archived: false
|
|
143
165
|
```
|
|
@@ -145,13 +167,15 @@ archived: false
|
|
|
145
167
|
| 字段 | 含义 |
|
|
146
168
|
|------|------|
|
|
147
169
|
| `workflow` | `full`、`hotfix` 或 `tweak` |
|
|
148
|
-
| `phase` | 当前阶段:`open`、`design`、`build`、`verify`、`archive` |
|
|
170
|
+
| `phase` | 当前阶段:`open`、`design`、`build`、`verify`、`archive`(init 统一设为 `open`,guard 负责过渡) |
|
|
149
171
|
| `design_doc` | 关联的 Superpowers Design Doc 路径,可为空 |
|
|
150
172
|
| `plan` | 关联的 Superpowers Plan 路径,可为空 |
|
|
151
173
|
| `build_mode` | 已选择的执行方式,可为空 |
|
|
152
174
|
| `isolation` | `branch` 或 `worktree`,工作区隔离方式,默认 `branch` |
|
|
153
175
|
| `verify_mode` | `light` 或 `full`,可为空 |
|
|
154
176
|
| `verify_result` | `pending`、`pass` 或 `fail` |
|
|
177
|
+
| `verification_report` | 验证报告文件路径,verify 通过前必须指向已存在文件 |
|
|
178
|
+
| `branch_status` | `pending` 或 `handled`,分支处理完成后设为 `handled` |
|
|
155
179
|
| `verified_at` | 验证通过时间,可为空 |
|
|
156
180
|
| `archived` | change 是否已归档 |
|
|
157
181
|
|
|
@@ -160,9 +184,17 @@ archived: false
|
|
|
160
184
|
Comet 脚本随 skill 包分发在 `comet/scripts/` 下。**不硬编码路径** — 定位一次,缓存到环境变量:
|
|
161
185
|
|
|
162
186
|
```bash
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
187
|
+
COMET_SEARCH_ROOTS=("." "$HOME/.claude/skills" "$HOME/.codex/skills" "$HOME/.cursor/skills")
|
|
188
|
+
COMET_GUARD="${COMET_GUARD:-$(find "${COMET_SEARCH_ROOTS[@]}" -path '*/comet/scripts/comet-guard.sh' -type f -print -quit 2>/dev/null)}"
|
|
189
|
+
COMET_STATE="${COMET_STATE:-$(find "${COMET_SEARCH_ROOTS[@]}" -path '*/comet/scripts/comet-state.sh' -type f -print -quit 2>/dev/null)}"
|
|
190
|
+
COMET_ARCHIVE="${COMET_ARCHIVE:-$(find "${COMET_SEARCH_ROOTS[@]}" -path '*/comet/scripts/comet-archive.sh' -type f -print -quit 2>/dev/null)}"
|
|
191
|
+
|
|
192
|
+
# 脚本定位失败时停止流程
|
|
193
|
+
if [ -z "$COMET_GUARD" ] || [ -z "$COMET_STATE" ] || [ -z "$COMET_ARCHIVE" ]; then
|
|
194
|
+
echo "ERROR: Comet scripts not found. Ensure the comet skill is installed." >&2
|
|
195
|
+
echo "Expected path pattern: */comet/scripts/comet-*.sh under project or platform skill directories" >&2
|
|
196
|
+
return 1
|
|
197
|
+
fi
|
|
166
198
|
```
|
|
167
199
|
|
|
168
200
|
**自动状态更新**:guard 支持 `--apply` 参数,验证通过后自动更新 `.comet.yaml` 状态字段:
|
|
@@ -171,6 +203,17 @@ COMET_ARCHIVE="${COMET_ARCHIVE:-$(find . -path '*/comet/scripts/comet-archive.sh
|
|
|
171
203
|
bash "$COMET_GUARD" <change-name> <phase> --apply
|
|
172
204
|
```
|
|
173
205
|
|
|
206
|
+
`--apply` 内部委托给 `comet-state transition`。需要直接表达状态事件时使用:
|
|
207
|
+
|
|
208
|
+
```bash
|
|
209
|
+
bash "$COMET_STATE" transition <change-name> open-complete
|
|
210
|
+
bash "$COMET_STATE" transition <change-name> design-complete
|
|
211
|
+
bash "$COMET_STATE" transition <change-name> build-complete
|
|
212
|
+
bash "$COMET_STATE" transition <change-name> verify-pass
|
|
213
|
+
bash "$COMET_STATE" transition <change-name> verify-fail
|
|
214
|
+
bash "$COMET_STATE" transition <archive-name> archived
|
|
215
|
+
```
|
|
216
|
+
|
|
174
217
|
**归档脚本**:一键完成归档全部步骤:
|
|
175
218
|
|
|
176
219
|
```bash
|
|
@@ -18,7 +18,8 @@ description: "Comet 阶段 5:归档。用 /comet-archive 调用。同步 delta
|
|
|
18
18
|
执行入口验证:
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
|
-
|
|
21
|
+
COMET_SEARCH_ROOTS=("." "$HOME/.claude/skills" "$HOME/.codex/skills" "$HOME/.cursor/skills")
|
|
22
|
+
COMET_STATE="${COMET_STATE:-$(find "${COMET_SEARCH_ROOTS[@]}" -path '*/comet/scripts/comet-state.sh' -type f -print -quit 2>/dev/null)}"
|
|
22
23
|
bash "$COMET_STATE" check <name> archive
|
|
23
24
|
```
|
|
24
25
|
|
|
@@ -29,7 +30,6 @@ bash "$COMET_STATE" check <name> archive
|
|
|
29
30
|
运行归档脚本,自动完成以下全部步骤:
|
|
30
31
|
|
|
31
32
|
```bash
|
|
32
|
-
COMET_ARCHIVE="${COMET_ARCHIVE:-$(find . -path '*/comet/scripts/comet-archive.sh' -type f -print -quit)}"
|
|
33
33
|
bash "$COMET_ARCHIVE" "<change-name>"
|
|
34
34
|
```
|
|
35
35
|
|
|
@@ -39,7 +39,7 @@ bash "$COMET_ARCHIVE" "<change-name>"
|
|
|
39
39
|
3. Design doc 前置元数据标注(archived-with, status)
|
|
40
40
|
4. Plan 前置元数据标注(archived-with)
|
|
41
41
|
5. 移动 change 到归档目录
|
|
42
|
-
6. 更新 archived: true
|
|
42
|
+
6. 通过 `comet-state transition <archive-name> archived` 更新 `archived: true`
|
|
43
43
|
|
|
44
44
|
如脚本返回非零退出码,报告错误并停止。
|
|
45
45
|
如脚本返回零退出码,归档完成。
|
|
@@ -56,7 +56,10 @@ brainstorming → delta spec → 实施 → 验证 → 主 spec 覆盖 → desig
|
|
|
56
56
|
## 退出条件
|
|
57
57
|
|
|
58
58
|
- 归档脚本执行成功(退出码 0)
|
|
59
|
-
-
|
|
59
|
+
- 归档目录 `openspec/changes/archive/YYYY-MM-DD-<change-name>/` 存在
|
|
60
|
+
- 归档后的 `.comet.yaml` 中 `archived: true`
|
|
61
|
+
|
|
62
|
+
归档脚本会把 `openspec/changes/<name>/` 移动到 `openspec/changes/archive/YYYY-MM-DD-<name>/`。归档成功后**不要再对原 change 名运行** `bash "$COMET_GUARD" <change-name> archive`,因为原活跃目录已经不存在。归档完整性以脚本退出码和归档目录状态为准。
|
|
60
63
|
|
|
61
64
|
## 完成
|
|
62
65
|
|
|
@@ -17,7 +17,9 @@ description: "Comet 阶段 3:计划与构建。用 /comet-build 调用。制
|
|
|
17
17
|
执行入口验证:
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
|
-
|
|
20
|
+
COMET_SEARCH_ROOTS=("." "$HOME/.claude/skills" "$HOME/.codex/skills" "$HOME/.cursor/skills")
|
|
21
|
+
COMET_STATE="${COMET_STATE:-$(find "${COMET_SEARCH_ROOTS[@]}" -path '*/comet/scripts/comet-state.sh' -type f -print -quit 2>/dev/null)}"
|
|
22
|
+
COMET_GUARD="${COMET_GUARD:-$(find "${COMET_SEARCH_ROOTS[@]}" -path '*/comet/scripts/comet-guard.sh' -type f -print -quit 2>/dev/null)}"
|
|
21
23
|
bash "$COMET_STATE" check <name> build
|
|
22
24
|
```
|
|
23
25
|
|
|
@@ -36,9 +38,16 @@ bash "$COMET_STATE" check <name> build
|
|
|
36
38
|
---
|
|
37
39
|
change: <openspec-change-name>
|
|
38
40
|
design-doc: docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md
|
|
41
|
+
base-ref: <git rev-parse HEAD before implementation>
|
|
39
42
|
---
|
|
40
43
|
```
|
|
41
44
|
|
|
45
|
+
`base-ref` 用于验证阶段跨提交统计改动规模。创建计划时先记录当前提交:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
git rev-parse HEAD
|
|
49
|
+
```
|
|
50
|
+
|
|
42
51
|
### 2. 更新计划状态
|
|
43
52
|
|
|
44
53
|
先记录 plan 路径:
|
|
@@ -127,21 +136,27 @@ bash "$COMET_STATE" set <name> build_mode <value>
|
|
|
127
136
|
- delta spec 是活文档,本阶段期间随时可修改
|
|
128
137
|
- 每次更新应提交,commit message 说明变更原因
|
|
129
138
|
- 不提前同步到 main spec,归档时统一同步
|
|
130
|
-
- 如增量任务超过原 tasks.md 初始任务总数 50%,考虑拆分为新 change
|
|
131
139
|
- 小规模增量直接改 delta spec 时,应在 commit message 中注明,便于归档时判断 design doc 漂移
|
|
132
140
|
|
|
141
|
+
### 6. 上下文管理
|
|
142
|
+
|
|
143
|
+
Build 是最长阶段,可能跨越大量任务。为支持上下文压缩后断点恢复:
|
|
144
|
+
|
|
145
|
+
- **每完成一个 task**:立即勾选 tasks.md 并提交代码,确保 `.comet.yaml` 和文件状态持久化
|
|
146
|
+
- **上下文压缩后恢复**:读取 `.comet.yaml` 的 `phase` 字段确认仍在 build 阶段,读取 plan 文件头的 `base-ref`,再读取 tasks.md 找到下一个未勾选任务继续执行
|
|
147
|
+
- **长任务拆分**:单任务超过 200 行代码变更时,考虑拆分为多个子任务分别提交
|
|
148
|
+
|
|
133
149
|
## 退出条件
|
|
134
150
|
|
|
135
151
|
- tasks.md 全部勾选
|
|
136
152
|
- 代码已提交
|
|
137
|
-
-
|
|
138
|
-
-
|
|
139
|
-
- **阶段守卫**:运行 `bash $COMET_GUARD <change-name> build`,全部 PASS 后才允许流转
|
|
153
|
+
- 已显式运行项目对应的构建/测试命令并通过(不要只依赖 guard 自动猜测)
|
|
154
|
+
- **阶段守卫**:运行 `bash "$COMET_GUARD" <change-name> build --apply`,全部 PASS 后自动流转到 `phase: verify`
|
|
140
155
|
|
|
141
156
|
退出前运行 guard 自动流转:
|
|
142
157
|
|
|
143
158
|
```bash
|
|
144
|
-
bash $COMET_GUARD <change-name> build --apply
|
|
159
|
+
bash "$COMET_GUARD" <change-name> build --apply
|
|
145
160
|
```
|
|
146
161
|
|
|
147
162
|
状态文件自动更新为 `phase: verify`、`verify_result: pending`。
|
|
@@ -17,7 +17,9 @@ description: "Comet 阶段 2:深度设计。用 /comet-design 调用。通过
|
|
|
17
17
|
执行入口验证:
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
|
-
|
|
20
|
+
COMET_SEARCH_ROOTS=("." "$HOME/.claude/skills" "$HOME/.codex/skills" "$HOME/.cursor/skills")
|
|
21
|
+
COMET_STATE="${COMET_STATE:-$(find "${COMET_SEARCH_ROOTS[@]}" -path '*/comet/scripts/comet-state.sh' -type f -print -quit 2>/dev/null)}"
|
|
22
|
+
COMET_GUARD="${COMET_GUARD:-$(find "${COMET_SEARCH_ROOTS[@]}" -path '*/comet/scripts/comet-guard.sh' -type f -print -quit 2>/dev/null)}"
|
|
21
23
|
bash "$COMET_STATE" check <name> design
|
|
22
24
|
```
|
|
23
25
|
|
|
@@ -57,32 +59,23 @@ Design 摘要: <design.md 架构决策>
|
|
|
57
59
|
bash "$COMET_STATE" set <name> design_doc docs/superpowers/specs/YYYY-MM-DD-topic-design.md
|
|
58
60
|
|
|
59
61
|
# 自动流转到下一阶段
|
|
60
|
-
bash $COMET_GUARD <change-name> design --apply
|
|
62
|
+
bash "$COMET_GUARD" <change-name> design --apply
|
|
61
63
|
```
|
|
62
64
|
|
|
63
65
|
状态文件自动更新,无需手动编辑其他字段。
|
|
64
66
|
|
|
65
|
-
### 3. 双 Spec 分工
|
|
66
|
-
|
|
67
|
-
| Spec 类型 | 归属 | 存放位置 | 定义 |
|
|
68
|
-
|-----------|------|---------|------|
|
|
69
|
-
| 能力规格 | OpenSpec | `openspec/changes/<name>/specs/` | 系统应该做什么(需求 + 验收场景) |
|
|
70
|
-
| 设计文档 | Superpowers | `docs/superpowers/specs/` | 怎么构建(技术架构 + 实现细节) |
|
|
71
|
-
|
|
72
|
-
### 4. 文档层级确认
|
|
73
|
-
|
|
74
|
-
```
|
|
75
|
-
proposal.md(阶段 1) → Why + What
|
|
76
|
-
design.md(阶段 1,OpenSpec) → 高层架构决策
|
|
77
|
-
设计文档(阶段 2,Superpowers) → 深度技术设计
|
|
78
|
-
能力规格(阶段 2,delta) → 需求 + 验收场景
|
|
79
|
-
```
|
|
80
|
-
|
|
81
67
|
## 退出条件
|
|
82
68
|
|
|
83
69
|
- Design Doc 已创建并保存
|
|
84
70
|
- 如有新能力则 delta spec 已创建
|
|
85
|
-
-
|
|
71
|
+
- `design_doc` 已写入 `.comet.yaml`
|
|
72
|
+
- **阶段守卫**:运行 `bash "$COMET_GUARD" <change-name> design --apply`,全部 PASS 后自动流转到 `phase: build`
|
|
73
|
+
|
|
74
|
+
退出前必须使用 `--apply`:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
bash "$COMET_GUARD" <change-name> design --apply
|
|
78
|
+
```
|
|
86
79
|
|
|
87
80
|
## 自动流转
|
|
88
81
|
|
|
@@ -5,14 +5,12 @@ description: "Comet 预设路径:Bug fix / 热修复。跳过 brainstorming,
|
|
|
5
5
|
|
|
6
6
|
# Comet 预设路径:Hotfix
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
适用于 bug fix、热修复、小范围行为修正。不涉及新 capability 设计,不需要深度 brainstorming。
|
|
8
|
+
快速 bug fix 工作流:open → build → verify → archive。跳过 brainstorming 和完整 plan,适用于行为修复、不涉及新 capability 设计的场景。
|
|
11
9
|
|
|
12
10
|
**适用条件**(必须全部满足):
|
|
13
11
|
1. 修复已有功能的 bug,不新增 capability
|
|
14
12
|
2. 不涉及接口变更或架构调整
|
|
15
|
-
3. 改动范围可预估(通常
|
|
13
|
+
3. 改动范围可预估(通常 ≤ 2 个文件)
|
|
16
14
|
|
|
17
15
|
**不适用**:如修复过程发现需要架构调整,应升级为完整 `/comet` 流程。
|
|
18
16
|
|
|
@@ -20,19 +18,17 @@ Hotfix 是 Comet 五阶段能力的预设工作流,不是独立的平行流程
|
|
|
20
18
|
|
|
21
19
|
## 流程(preset workflow,4 阶段)
|
|
22
20
|
|
|
23
|
-
|
|
21
|
+
执行链路:open → build → verify → archive。Hotfix 为每个阶段提供默认决策:精简开启、直接构建、按规模验证、验证通过后归档。
|
|
24
22
|
|
|
25
|
-
|
|
23
|
+
开始前先定位 Comet 脚本:
|
|
26
24
|
|
|
27
25
|
```bash
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
COMET_SEARCH_ROOTS=("." "$HOME/.claude/skills" "$HOME/.codex/skills" "$HOME/.cursor/skills")
|
|
27
|
+
COMET_STATE="${COMET_STATE:-$(find "${COMET_SEARCH_ROOTS[@]}" -path '*/comet/scripts/comet-state.sh' -type f -print -quit 2>/dev/null)}"
|
|
28
|
+
COMET_GUARD="${COMET_GUARD:-$(find "${COMET_SEARCH_ROOTS[@]}" -path '*/comet/scripts/comet-guard.sh' -type f -print -quit 2>/dev/null)}"
|
|
29
|
+
COMET_ARCHIVE="${COMET_ARCHIVE:-$(find "${COMET_SEARCH_ROOTS[@]}" -path '*/comet/scripts/comet-archive.sh' -type f -print -quit 2>/dev/null)}"
|
|
30
30
|
```
|
|
31
31
|
|
|
32
|
-
验证通过后继续流程步骤。验证失败时脚本会输出具体失败原因。
|
|
33
|
-
|
|
34
|
-
执行链路:open → build → verify → archive。Hotfix 为每个阶段提供默认决策:精简开启、直接构建、按规模验证、验证通过后归档。
|
|
35
|
-
|
|
36
32
|
### 1. 快速开启(preset open)
|
|
37
33
|
|
|
38
34
|
复用 Comet open 能力创建 change,但使用 hotfix 默认值:不执行 `openspec-explore` 长探索,直接进入精简 change 创建。
|
|
@@ -51,6 +47,18 @@ bash "$COMET_STATE" check <name> open
|
|
|
51
47
|
bash "$COMET_STATE" init <name> hotfix
|
|
52
48
|
```
|
|
53
49
|
|
|
50
|
+
初始化后验证状态:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
bash "$COMET_STATE" check <name> open
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
阶段守卫完成 open → build 过渡:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
bash "$COMET_GUARD" <change-name> open --apply
|
|
60
|
+
```
|
|
61
|
+
|
|
54
62
|
### 2. 直接构建(preset build)
|
|
55
63
|
|
|
56
64
|
使用 hotfix 默认值:`build_mode: direct`。跳过 `superpowers:brainstorming` 和 `superpowers:writing-plans`(除非任务 > 3 个;若超过 3 个任务,转入 `/comet-build` 的计划与执行方式选择)。
|
|
@@ -64,30 +72,38 @@ bash "$COMET_STATE" init <name> hotfix
|
|
|
64
72
|
- 运行相关测试确认通过
|
|
65
73
|
- 将 tasks.md 中对应 `- [ ]` 勾选为 `- [x]`
|
|
66
74
|
- 提交代码,commit message 格式:`fix: <简述修复>`
|
|
67
|
-
3.
|
|
75
|
+
3. 全部任务完成后,显式运行项目相关测试和构建命令
|
|
76
|
+
4. 运行阶段守卫完成 build → verify 过渡:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
bash "$COMET_GUARD" <change-name> build --apply
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
状态文件自动更新为 `phase: verify`、`verify_result: pending`,然后进入验证。
|
|
68
83
|
|
|
69
84
|
**如修复影响已有 spec 验收场景**:
|
|
70
85
|
- 在 `openspec/changes/<name>/specs/<capability>/spec.md` 创建 delta spec
|
|
71
86
|
- 仅包含 `## MODIFIED Requirements` 部分
|
|
72
87
|
|
|
73
|
-
###
|
|
88
|
+
### 3a. Hotfix 专属检查:根因消除
|
|
74
89
|
|
|
75
|
-
|
|
90
|
+
**在加载 comet-verify 之前执行**,确保修复确实消除了问题根因:
|
|
76
91
|
|
|
77
|
-
|
|
92
|
+
1. 读取 proposal.md 中的 bug 描述和根因
|
|
93
|
+
2. 搜索验证问题代码不再存在
|
|
94
|
+
3. 如根因未消除,返回 Step 2 继续修复
|
|
95
|
+
|
|
96
|
+
**升级条件**:
|
|
97
|
+
- 根因消除检查发现深层架构问题 → 停止 hotfix,升级为 `/comet`
|
|
98
|
+
- 修复需要额外接口变更 → 停止 hotfix,升级为 `/comet`
|
|
78
99
|
|
|
79
|
-
|
|
100
|
+
### 3b. 验证(preset verify)
|
|
80
101
|
|
|
81
|
-
|
|
102
|
+
根因消除检查通过后,复用 `/comet-verify`,由 comet-verify 的规模评估决定轻量或完整验证。
|
|
82
103
|
|
|
83
|
-
|
|
84
|
-
- 读取 proposal.md 中的 bug 描述和根因
|
|
85
|
-
- 搜索验证问题代码不再存在
|
|
86
|
-
- 如根因未消除,返回 Step 2 继续修复
|
|
104
|
+
**立即执行:** 使用 Skill 工具加载 `comet-verify` 技能。禁止跳过此步骤。
|
|
87
105
|
|
|
88
|
-
|
|
89
|
-
- 回归测试揭示深层架构问题 → 停止 hotfix,升级为 `/comet`
|
|
90
|
-
- 修复需要额外接口变更 → 停止 hotfix,升级为 `/comet`
|
|
106
|
+
无 delta spec 的小范围 hotfix 通常满足轻量验证条件(≤ 3 tasks、≤ 2 files),comet-verify 的规模评估会选择轻量验证路径(5 项快速检查)。若 hotfix 创建了 delta spec,则根据 comet-verify 的规模评估规则进入完整验证路径。
|
|
91
107
|
|
|
92
108
|
验证通过后,按 `/comet-verify` 的规则将 `.comet.yaml` 的 `verify_result` 记录为 `pass`,归档前不得跳过该状态。
|
|
93
109
|
|
|
@@ -133,4 +149,4 @@ Hotfix 流程为 **一次性连续执行**。调用 `/comet-hotfix` 后,agent
|
|
|
133
149
|
- Bug 已修复,测试通过
|
|
134
150
|
- change 已归档
|
|
135
151
|
- 如有 spec 变更,已同步到 main spec
|
|
136
|
-
- **阶段守卫**:build → verify 前运行 `bash $COMET_GUARD <change-name> build`,verify → archive
|
|
152
|
+
- **阶段守卫**:build → verify 前运行 `bash "$COMET_GUARD" <change-name> build --apply`,verify → archive 前按 `/comet-verify` 规则运行 `bash "$COMET_GUARD" <change-name> verify --apply`
|