@rpamis/comet 0.1.7 → 0.2.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/README.md +45 -13
- package/assets/manifest.json +2 -0
- package/assets/skills/comet/SKILL.md +214 -219
- package/assets/skills/comet/scripts/comet-archive.sh +8 -2
- package/assets/skills/comet/scripts/comet-guard.sh +32 -22
- package/assets/skills/comet/scripts/comet-state.sh +496 -0
- package/assets/skills/comet-archive/SKILL.md +6 -19
- package/assets/skills/comet-build/SKILL.md +16 -23
- package/assets/skills/comet-design/SKILL.md +7 -23
- package/assets/skills/comet-hotfix/SKILL.md +136 -167
- package/assets/skills/comet-open/SKILL.md +9 -31
- package/assets/skills/comet-tweak/SKILL.md +122 -154
- package/assets/skills/comet-verify/SKILL.md +11 -33
- package/assets/skills-zh/comet/SKILL.md +87 -92
- package/assets/skills-zh/comet-archive/SKILL.md +63 -76
- package/assets/skills-zh/comet-build/SKILL.md +153 -160
- package/assets/skills-zh/comet-design/SKILL.md +91 -107
- package/assets/skills-zh/comet-hotfix/SKILL.md +18 -49
- package/assets/skills-zh/comet-open/SKILL.md +70 -92
- package/assets/skills-zh/comet-tweak/SKILL.md +19 -51
- package/assets/skills-zh/comet-verify/SKILL.md +114 -136
- package/dist/cli/index.js +28 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/doctor.d.ts +6 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +168 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/init.d.ts +9 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +183 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/status.d.ts +6 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +89 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/update.d.ts +8 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +47 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/core/detect.d.ts +8 -0
- package/dist/core/detect.d.ts.map +1 -0
- package/dist/core/detect.js +73 -0
- package/dist/core/detect.js.map +1 -0
- package/dist/core/openspec.d.ts +5 -0
- package/dist/core/openspec.d.ts.map +1 -0
- package/dist/core/openspec.js +58 -0
- package/dist/core/openspec.js.map +1 -0
- package/dist/core/platforms.d.ts.map +1 -1
- package/dist/core/platforms.js +6 -1
- package/dist/core/platforms.js.map +1 -1
- package/dist/core/skills.d.ts +22 -0
- package/dist/core/skills.d.ts.map +1 -0
- package/dist/core/skills.js +59 -0
- package/dist/core/skills.js.map +1 -0
- package/dist/core/superpowers.d.ts +5 -0
- package/dist/core/superpowers.d.ts.map +1 -0
- package/dist/core/superpowers.js +60 -0
- package/dist/core/superpowers.js.map +1 -0
- package/dist/core/types.d.ts +2 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +2 -0
- package/dist/core/types.js.map +1 -0
- package/package.json +61 -50
- package/dist/core/init.d.ts +0 -14
- package/dist/core/init.d.ts.map +0 -1
- package/dist/core/init.js +0 -492
- package/dist/core/init.js.map +0 -1
|
@@ -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="${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
|
|
|
@@ -94,7 +60,7 @@ archived: false
|
|
|
94
60
|
1. 读取 `openspec/changes/<name>/tasks.md`,获取未完成任务列表
|
|
95
61
|
2. 对每个未完成任务:
|
|
96
62
|
- 根据任务描述修改代码
|
|
97
|
-
-
|
|
63
|
+
- 运行项目格式化命令(如 `mvn spotless:apply`、`npm run format` 等)
|
|
98
64
|
- 运行相关测试确认通过
|
|
99
65
|
- 将 tasks.md 中对应 `- [ ]` 勾选为 `- [x]`
|
|
100
66
|
- 提交代码,commit message 格式:`fix: <简述修复>`
|
|
@@ -148,12 +114,15 @@ Hotfix 流程为 **一次性连续执行**。调用 `/comet-hotfix` 后,agent
|
|
|
148
114
|
|
|
149
115
|
## 升级条件
|
|
150
116
|
|
|
151
|
-
|
|
117
|
+
满足以下**任一**条件时,停止 hotfix 流程,升级为完整 `/comet`:
|
|
152
118
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
3
|
|
156
|
-
|
|
119
|
+
| 条件 | 说明 |
|
|
120
|
+
|------|------|
|
|
121
|
+
| 改动涉及 **3+ 文件** | 超出单点修复范围 |
|
|
122
|
+
| 架构变更 | 新模块、新接口、新依赖 |
|
|
123
|
+
| 数据库 schema 变更 | 结构性调整 |
|
|
124
|
+
| 引入新的 public API | 修复产生了新的对外接口 |
|
|
125
|
+
| 修复范围超出单一函数/模块 | 需要多处协调修改 |
|
|
157
126
|
|
|
158
127
|
升级方式:在当前 change 基础上补充 Design Doc(执行 `/comet-design`),后续正常走完整流程。
|
|
159
128
|
|
|
@@ -1,92 +1,70 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: comet-open
|
|
3
|
-
description: "Comet 阶段 1:开启。用 /comet-open 调用。通过 OpenSpec 探索想法、创建 change 结构(proposal + design + tasks)。"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Comet 阶段 1:开启(Open)
|
|
7
|
-
|
|
8
|
-
## 前置条件
|
|
9
|
-
|
|
10
|
-
- 无活跃 change,或用户希望创建新 change
|
|
11
|
-
|
|
12
|
-
## 步骤
|
|
13
|
-
|
|
14
|
-
### 0. 入口状态验证(Entry Check)
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
verify_result: pending
|
|
72
|
-
verified_at: null
|
|
73
|
-
archived: false
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
### 4. 内容完整性检查
|
|
77
|
-
|
|
78
|
-
确认三个文档内容完整:
|
|
79
|
-
- **proposal.md**:问题背景、目标、范围、非目标
|
|
80
|
-
- **design.md**:高层架构决策、方案选型、数据流
|
|
81
|
-
- **tasks.md**:任务列表,每个任务有明确描述
|
|
82
|
-
|
|
83
|
-
## 退出条件
|
|
84
|
-
|
|
85
|
-
- proposal.md、design.md、tasks.md 均已创建且内容完整
|
|
86
|
-
- **阶段守卫**:运行 `bash $COMET_GUARD <change-name> open`,全部 PASS 后才允许流转
|
|
87
|
-
|
|
88
|
-
## 自动流转
|
|
89
|
-
|
|
90
|
-
退出条件满足后,**无需等待用户再次输入**,直接执行下一阶段:
|
|
91
|
-
|
|
92
|
-
> **REQUIRED NEXT SKILL:** 调用 `comet-design` skill 进入深度设计阶段。
|
|
1
|
+
---
|
|
2
|
+
name: comet-open
|
|
3
|
+
description: "Comet 阶段 1:开启。用 /comet-open 调用。通过 OpenSpec 探索想法、创建 change 结构(proposal + design + tasks)。"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Comet 阶段 1:开启(Open)
|
|
7
|
+
|
|
8
|
+
## 前置条件
|
|
9
|
+
|
|
10
|
+
- 无活跃 change,或用户希望创建新 change
|
|
11
|
+
|
|
12
|
+
## 步骤
|
|
13
|
+
|
|
14
|
+
### 0. 入口状态验证(Entry Check)
|
|
15
|
+
|
|
16
|
+
执行入口验证:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
COMET_STATE="${COMET_STATE:-$(find . -path '*/comet/scripts/comet-state.sh' -type f -print -quit)}"
|
|
20
|
+
bash "$COMET_STATE" check <name> open
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
验证通过后继续 Step 1。验证失败时脚本会输出具体失败原因。
|
|
24
|
+
|
|
25
|
+
### 1. 探索想法
|
|
26
|
+
|
|
27
|
+
**立即执行:** 使用 Skill 工具加载 `openspec-explore` 技能。禁止跳过此步骤。
|
|
28
|
+
|
|
29
|
+
技能加载后,按其指引自由探索问题空间。
|
|
30
|
+
|
|
31
|
+
### 2. 创建 Change 结构
|
|
32
|
+
|
|
33
|
+
**立即执行:** 使用 Skill 工具加载 `openspec-new-change` 技能。若用户意图未明确、需要先形成建议,改为加载 `openspec-propose`。禁止跳过此步骤。
|
|
34
|
+
|
|
35
|
+
确认以下产物已创建:
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
openspec/changes/<name>/
|
|
39
|
+
├── .openspec.yaml
|
|
40
|
+
├── .comet.yaml
|
|
41
|
+
├── proposal.md # Why + What:问题、目标、范围
|
|
42
|
+
├── design.md # How(高层):架构决策、方案选型
|
|
43
|
+
└── tasks.md # 任务清单(勾选框)
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### 3. 初始化 Comet 状态
|
|
47
|
+
|
|
48
|
+
初始化 Comet 状态文件:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
bash "$COMET_STATE" init <name> full
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### 4. 内容完整性检查
|
|
55
|
+
|
|
56
|
+
确认三个文档内容完整:
|
|
57
|
+
- **proposal.md**:问题背景、目标、范围、非目标
|
|
58
|
+
- **design.md**:高层架构决策、方案选型、数据流
|
|
59
|
+
- **tasks.md**:任务列表,每个任务有明确描述
|
|
60
|
+
|
|
61
|
+
## 退出条件
|
|
62
|
+
|
|
63
|
+
- proposal.md、design.md、tasks.md 均已创建且内容完整
|
|
64
|
+
- **阶段守卫**:运行 `bash $COMET_GUARD <change-name> open`,全部 PASS 后才允许流转
|
|
65
|
+
|
|
66
|
+
## 自动流转
|
|
67
|
+
|
|
68
|
+
退出条件满足后,**无需等待用户再次输入**,直接执行下一阶段:
|
|
69
|
+
|
|
70
|
+
> **REQUIRED NEXT SKILL:** 调用 `comet-design` skill 进入深度设计阶段。
|
|
@@ -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="${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
|
|
|
@@ -95,7 +61,7 @@ archived: false
|
|
|
95
61
|
1. 读取 `openspec/changes/<name>/tasks.md`,获取未完成任务列表
|
|
96
62
|
2. 对每个未完成任务:
|
|
97
63
|
- 根据任务描述修改目标文件
|
|
98
|
-
-
|
|
64
|
+
- 运行项目格式化命令(如 `mvn spotless:apply`、`npm run format` 等)
|
|
99
65
|
- 运行相关测试确认通过
|
|
100
66
|
- 将 tasks.md 中对应 `- [ ]` 勾选为 `- [x]`
|
|
101
67
|
- 提交代码,commit message 格式:`tweak: <简述变更>`
|
|
@@ -133,14 +99,16 @@ Tweak 流程为 **一次性连续执行**。调用 `/comet-tweak` 后,agent
|
|
|
133
99
|
|
|
134
100
|
## 升级条件
|
|
135
101
|
|
|
136
|
-
|
|
102
|
+
满足以下**任一**条件时,停止 tweak 流程,升级为完整 `/comet`:
|
|
137
103
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
5
|
|
143
|
-
|
|
104
|
+
| 条件 | 说明 |
|
|
105
|
+
|------|------|
|
|
106
|
+
| 改动涉及 **5+ 文件** | 超出小改动范围 |
|
|
107
|
+
| 多模块协调修改 | 需要跨组件协调 |
|
|
108
|
+
| 需要新增测试用例 **5+** | 变更复杂度上升 |
|
|
109
|
+
| 配置项新增或删除 | 非值修改的配置变更 |
|
|
110
|
+
| 需要新增 capability | 超出局部优化 |
|
|
111
|
+
| 需要 delta spec | 影响了已有规格 |
|
|
144
112
|
|
|
145
113
|
升级方式:在当前 change 基础上补充 Design Doc(执行 `/comet-design`),后续正常走完整流程。
|
|
146
114
|
|
|
@@ -1,136 +1,114 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: comet-verify
|
|
3
|
-
description: "Comet 阶段 4:验证与收尾。用 /comet-verify 调用。验证实现符合设计,处理开发分支。"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Comet 阶段 4:验证与收尾(Verify)
|
|
7
|
-
|
|
8
|
-
## 前置条件
|
|
9
|
-
|
|
10
|
-
- 代码已提交(阶段 3 完成)
|
|
11
|
-
- tasks.md 全部任务已完成
|
|
12
|
-
|
|
13
|
-
## 步骤
|
|
14
|
-
|
|
15
|
-
### 0. 入口状态验证(Entry Check)
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
-
|
|
54
|
-
-
|
|
55
|
-
|
|
56
|
-
###
|
|
57
|
-
|
|
58
|
-
当规模评估结果为"
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
- delta spec
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
-
|
|
115
|
-
- 无硬编码密钥或安全问题
|
|
116
|
-
|
|
117
|
-
## 退出条件
|
|
118
|
-
|
|
119
|
-
- 验证报告通过
|
|
120
|
-
- 分支已处理
|
|
121
|
-
- `.comet.yaml` 中 `verify_result` 已记录为 `pass`
|
|
122
|
-
- **阶段守卫**:运行 `bash $COMET_GUARD <change-name> verify`,全部 PASS 后才允许流转
|
|
123
|
-
|
|
124
|
-
退出前运行 guard 自动流转:
|
|
125
|
-
|
|
126
|
-
```bash
|
|
127
|
-
bash $COMET_GUARD <change-name> verify --apply
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
状态文件自动更新为 `phase: archive`、`verify_result: pass`、`verified_at: YYYY-MM-DD`。
|
|
131
|
-
|
|
132
|
-
## 自动流转
|
|
133
|
-
|
|
134
|
-
退出条件满足后,**无需等待用户再次输入**,直接执行下一阶段:
|
|
135
|
-
|
|
136
|
-
> **REQUIRED NEXT SKILL:** 调用 `comet-archive` skill 进入归档阶段。
|
|
1
|
+
---
|
|
2
|
+
name: comet-verify
|
|
3
|
+
description: "Comet 阶段 4:验证与收尾。用 /comet-verify 调用。验证实现符合设计,处理开发分支。"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Comet 阶段 4:验证与收尾(Verify)
|
|
7
|
+
|
|
8
|
+
## 前置条件
|
|
9
|
+
|
|
10
|
+
- 代码已提交(阶段 3 完成)
|
|
11
|
+
- tasks.md 全部任务已完成
|
|
12
|
+
|
|
13
|
+
## 步骤
|
|
14
|
+
|
|
15
|
+
### 0. 入口状态验证(Entry Check)
|
|
16
|
+
|
|
17
|
+
执行入口验证:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
COMET_STATE="${COMET_STATE:-$(find . -path '*/comet/scripts/comet-state.sh' -type f -print -quit)}"
|
|
21
|
+
bash "$COMET_STATE" check <name> verify
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
验证通过后继续 Step 1。验证失败时脚本会输出具体失败原因。
|
|
25
|
+
|
|
26
|
+
### 1. 改动规模评估
|
|
27
|
+
|
|
28
|
+
执行规模评估:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
bash "$COMET_STATE" scale <name>
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
脚本自动统计任务数、增量规格数、变更文件数,判断使用 light 或 full 验证模式,并设置 verify_mode 字段。
|
|
35
|
+
|
|
36
|
+
### 2a. 轻量验证(小改动)
|
|
37
|
+
|
|
38
|
+
当规模评估结果为"小"时,跳过 `openspec-verify-change`,直接执行以下检查:
|
|
39
|
+
|
|
40
|
+
1. tasks.md 全部任务已完成 `[x]`
|
|
41
|
+
2. 改动文件与 tasks.md 描述一致(`git diff --stat` 对照 tasks 内容)
|
|
42
|
+
3. 编译通过(执行项目对应的构建命令,如 `npm run build`、`mvn compile`、`cargo build` 等)
|
|
43
|
+
4. 相关测试通过
|
|
44
|
+
5. 无明显安全问题(无硬编码密钥、无新增 unsafe 操作)
|
|
45
|
+
|
|
46
|
+
**通过标准**:5 项全部 OK,无 CRITICAL 问题。
|
|
47
|
+
|
|
48
|
+
**报告格式**:简表列出 5 项检查结果 + PASS/FAIL。
|
|
49
|
+
|
|
50
|
+
**跳过项**(不在轻量验证中检查):
|
|
51
|
+
- spec scenario 覆盖率
|
|
52
|
+
- design doc 一致性深度比对
|
|
53
|
+
- code pattern consistency 建议
|
|
54
|
+
- delta spec 与 design doc 漂移检测
|
|
55
|
+
|
|
56
|
+
### 2b. 完整验证(大改动)
|
|
57
|
+
|
|
58
|
+
当规模评估结果为"大"时:
|
|
59
|
+
|
|
60
|
+
**立即执行:** 使用 Skill 工具加载 `openspec-verify-change` 技能。禁止跳过此步骤。
|
|
61
|
+
|
|
62
|
+
技能加载后,按其指引验证。检查项:
|
|
63
|
+
1. tasks.md 全部任务已完成(`[x]`)
|
|
64
|
+
2. 实现符合 design.md 设计决策
|
|
65
|
+
3. 实现符合 brainstorming 设计文档
|
|
66
|
+
4. 能力规格场景全部通过
|
|
67
|
+
5. proposal.md 目标已满足
|
|
68
|
+
6. delta spec 与 design doc 无矛盾(若 Build 阶段有增量修改 spec,检查 design doc 是否有对应记录)
|
|
69
|
+
7. `docs/superpowers/specs/` 关联的设计文档可定位(文件存在且与当前 change 相关)
|
|
70
|
+
|
|
71
|
+
验证不通过时:报告缺失项,返回阶段 3 补充(调用 `/comet-build`)。
|
|
72
|
+
|
|
73
|
+
**Spec 漂移处理**:
|
|
74
|
+
- 若检查项 6 发现矛盾(delta spec 有内容但 design doc 未体现),提示用户:
|
|
75
|
+
- 选项 A:在 design doc 追加 "Implementation Divergence" 节记录偏差原因
|
|
76
|
+
- 选项 B:回退到 Build 阶段,补充 brainstorming 更新 design doc
|
|
77
|
+
- 选项 C:确认偏差可接受,继续验证(归档时 design doc 将标记为 `superseded-by-main-spec`)
|
|
78
|
+
|
|
79
|
+
### 3. 收尾(Superpowers)
|
|
80
|
+
|
|
81
|
+
**立即执行:** 使用 Skill 工具加载 `superpowers:finishing-a-development-branch` 技能。禁止跳过此步骤。
|
|
82
|
+
|
|
83
|
+
如 `superpowers:finishing-a-development-branch` 不可用,停止流程并提示安装或启用 Superpowers 技能,不要用普通对话替代该步骤。
|
|
84
|
+
|
|
85
|
+
技能加载后,按其指引收尾。分支处理选项:
|
|
86
|
+
1. 本地合并到主分支
|
|
87
|
+
2. 推送并创建 PR
|
|
88
|
+
3. 保持分支(稍后处理)
|
|
89
|
+
4. 丢弃工作
|
|
90
|
+
|
|
91
|
+
**确认项**:
|
|
92
|
+
- 全部测试通过
|
|
93
|
+
- 无硬编码密钥或安全问题
|
|
94
|
+
|
|
95
|
+
## 退出条件
|
|
96
|
+
|
|
97
|
+
- 验证报告通过
|
|
98
|
+
- 分支已处理
|
|
99
|
+
- `.comet.yaml` 中 `verify_result` 已记录为 `pass`
|
|
100
|
+
- **阶段守卫**:运行 `bash $COMET_GUARD <change-name> verify`,全部 PASS 后才允许流转
|
|
101
|
+
|
|
102
|
+
退出前运行 guard 自动流转:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
bash $COMET_GUARD <change-name> verify --apply
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
状态文件自动更新为 `phase: archive`、`verify_result: pass`、`verified_at: YYYY-MM-DD`。
|
|
109
|
+
|
|
110
|
+
## 自动流转
|
|
111
|
+
|
|
112
|
+
退出条件满足后,**无需等待用户再次输入**,直接执行下一阶段:
|
|
113
|
+
|
|
114
|
+
> **REQUIRED NEXT SKILL:** 调用 `comet-archive` skill 进入归档阶段。
|
package/dist/cli/index.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
2
|
import { createRequire } from 'module';
|
|
3
|
-
import { initCommand } from '../
|
|
3
|
+
import { initCommand } from '../commands/init.js';
|
|
4
|
+
import { statusCommand } from '../commands/status.js';
|
|
5
|
+
import { doctorCommand } from '../commands/doctor.js';
|
|
6
|
+
import { updateCommand } from '../commands/update.js';
|
|
4
7
|
const require = createRequire(import.meta.url);
|
|
5
8
|
const { version } = require('../../package.json');
|
|
6
9
|
const program = new Command();
|
|
@@ -14,8 +17,32 @@ program
|
|
|
14
17
|
.option('--yes', 'Auto-install missing components, skip existing')
|
|
15
18
|
.option('--skip-existing', 'Never overwrite existing components')
|
|
16
19
|
.option('--overwrite', 'Overwrite manifest-managed files')
|
|
20
|
+
.option('--json', 'Output as JSON')
|
|
17
21
|
.action(async (targetPath = '.', options) => {
|
|
18
22
|
await initCommand(targetPath, options);
|
|
19
23
|
});
|
|
24
|
+
program
|
|
25
|
+
.command('status [path]')
|
|
26
|
+
.description('Show active changes and workflow status')
|
|
27
|
+
.option('--json', 'Output as JSON')
|
|
28
|
+
.action(async (targetPath = '.', options) => {
|
|
29
|
+
await statusCommand(targetPath, options);
|
|
30
|
+
});
|
|
31
|
+
program
|
|
32
|
+
.command('doctor [path]')
|
|
33
|
+
.description('Diagnose Comet installation health')
|
|
34
|
+
.option('--json', 'Output as JSON')
|
|
35
|
+
.action(async (targetPath = '.', options) => {
|
|
36
|
+
await doctorCommand(targetPath, options);
|
|
37
|
+
});
|
|
38
|
+
program
|
|
39
|
+
.command('update [path]')
|
|
40
|
+
.description('Update comet skill files to latest version')
|
|
41
|
+
.option('--json', 'Output as JSON')
|
|
42
|
+
.option('--language <lang>', 'Language for skills (en, zh)')
|
|
43
|
+
.option('--scope <scope>', 'Install scope (global, project)')
|
|
44
|
+
.action(async (targetPath = '.', options) => {
|
|
45
|
+
await updateCommand(targetPath, options);
|
|
46
|
+
});
|
|
20
47
|
program.parse();
|
|
21
48
|
//# sourceMappingURL=index.js.map
|