@rpamis/comet 0.3.6 → 0.3.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.
Files changed (95) hide show
  1. package/README.md +575 -443
  2. package/assets/manifest.json +41 -24
  3. package/assets/skills/comet/SKILL.md +282 -301
  4. package/assets/skills/comet/reference/auto-transition.md +27 -0
  5. package/assets/skills/comet/reference/comet-yaml-fields.md +68 -0
  6. package/assets/skills/comet/reference/context-recovery.md +35 -0
  7. package/assets/skills/comet/reference/debug-gate.md +17 -0
  8. package/assets/skills/comet/reference/decision-point.md +20 -0
  9. package/assets/skills/comet/reference/dirty-worktree.md +1 -0
  10. package/assets/skills/comet/reference/file-structure.md +28 -0
  11. package/assets/skills/comet/reference/subagent-dispatch.md +113 -0
  12. package/assets/skills/comet/rules/comet-phase-guard.en.md +99 -0
  13. package/assets/skills/comet/rules/comet-phase-guard.md +99 -0
  14. package/assets/skills/comet/scripts/comet-archive.sh +71 -55
  15. package/assets/skills/comet/scripts/comet-guard.sh +174 -18
  16. package/assets/skills/comet/scripts/comet-handoff.sh +133 -6
  17. package/assets/skills/comet/scripts/comet-hook-guard.sh +260 -0
  18. package/assets/skills/comet/scripts/comet-state.sh +362 -25
  19. package/assets/skills/comet/scripts/comet-yaml-validate.sh +24 -1
  20. package/assets/skills/comet-archive/SKILL.md +100 -73
  21. package/assets/skills/comet-build/SKILL.md +304 -221
  22. package/assets/skills/comet-design/SKILL.md +263 -166
  23. package/assets/skills/comet-hotfix/SKILL.md +204 -169
  24. package/assets/skills/comet-open/SKILL.md +203 -113
  25. package/assets/skills/comet-tweak/SKILL.md +180 -154
  26. package/assets/skills/comet-verify/SKILL.md +234 -201
  27. package/assets/skills-zh/comet/SKILL.md +269 -301
  28. package/assets/skills-zh/comet/reference/auto-transition.md +27 -0
  29. package/assets/skills-zh/comet/reference/comet-yaml-fields.md +68 -0
  30. package/assets/skills-zh/comet/reference/context-recovery.md +35 -0
  31. package/assets/skills-zh/comet/reference/debug-gate.md +17 -0
  32. package/assets/skills-zh/comet/reference/decision-point.md +20 -0
  33. package/assets/skills-zh/comet/reference/dirty-worktree.md +2 -1
  34. package/assets/skills-zh/comet/reference/file-structure.md +28 -0
  35. package/assets/skills-zh/comet/reference/subagent-dispatch.md +113 -0
  36. package/assets/skills-zh/comet-archive/SKILL.md +100 -73
  37. package/assets/skills-zh/comet-build/SKILL.md +304 -221
  38. package/assets/skills-zh/comet-design/SKILL.md +264 -166
  39. package/assets/skills-zh/comet-hotfix/SKILL.md +200 -169
  40. package/assets/skills-zh/comet-open/SKILL.md +203 -113
  41. package/assets/skills-zh/comet-tweak/SKILL.md +176 -154
  42. package/assets/skills-zh/comet-verify/SKILL.md +232 -201
  43. package/dist/cli/index.js +19 -0
  44. package/dist/cli/index.js.map +1 -1
  45. package/dist/commands/doctor.d.ts.map +1 -1
  46. package/dist/commands/doctor.js +22 -0
  47. package/dist/commands/doctor.js.map +1 -1
  48. package/dist/commands/init.d.ts +5 -1
  49. package/dist/commands/init.d.ts.map +1 -1
  50. package/dist/commands/init.js +64 -9
  51. package/dist/commands/init.js.map +1 -1
  52. package/dist/commands/uninstall.d.ts +9 -0
  53. package/dist/commands/uninstall.d.ts.map +1 -0
  54. package/dist/commands/uninstall.js +113 -0
  55. package/dist/commands/uninstall.js.map +1 -0
  56. package/dist/commands/update.d.ts +1 -1
  57. package/dist/commands/update.d.ts.map +1 -1
  58. package/dist/commands/update.js +120 -32
  59. package/dist/commands/update.js.map +1 -1
  60. package/dist/core/codegraph.d.ts +4 -0
  61. package/dist/core/codegraph.d.ts.map +1 -0
  62. package/dist/core/codegraph.js +63 -0
  63. package/dist/core/codegraph.js.map +1 -0
  64. package/dist/core/detect.d.ts +8 -1
  65. package/dist/core/detect.d.ts.map +1 -1
  66. package/dist/core/detect.js +41 -2
  67. package/dist/core/detect.js.map +1 -1
  68. package/dist/core/openspec.d.ts +1 -1
  69. package/dist/core/openspec.d.ts.map +1 -1
  70. package/dist/core/openspec.js +40 -17
  71. package/dist/core/openspec.js.map +1 -1
  72. package/dist/core/platforms.d.ts +10 -0
  73. package/dist/core/platforms.d.ts.map +1 -1
  74. package/dist/core/platforms.js +177 -16
  75. package/dist/core/platforms.js.map +1 -1
  76. package/dist/core/skills.d.ts +36 -1
  77. package/dist/core/skills.d.ts.map +1 -1
  78. package/dist/core/skills.js +451 -15
  79. package/dist/core/skills.js.map +1 -1
  80. package/dist/core/superpowers.d.ts.map +1 -1
  81. package/dist/core/superpowers.js +1 -0
  82. package/dist/core/superpowers.js.map +1 -1
  83. package/dist/core/uninstall.d.ts +28 -0
  84. package/dist/core/uninstall.d.ts.map +1 -0
  85. package/dist/core/uninstall.js +421 -0
  86. package/dist/core/uninstall.js.map +1 -0
  87. package/dist/core/version.d.ts +31 -0
  88. package/dist/core/version.d.ts.map +1 -0
  89. package/dist/core/version.js +111 -0
  90. package/dist/core/version.js.map +1 -0
  91. package/dist/utils/file-system.d.ts +23 -0
  92. package/dist/utils/file-system.d.ts.map +1 -1
  93. package/dist/utils/file-system.js +100 -5
  94. package/dist/utils/file-system.js.map +1 -1
  95. package/package.json +69 -62
@@ -1,166 +1,264 @@
1
- ---
2
- name: comet-design
3
- description: "Comet 阶段 2:深度设计。用 /comet-design 调用。通过 brainstorming 产出 Design Doc 和 delta spec。"
4
- ---
5
-
6
- # Comet 阶段 2:深度设计(Design)
7
-
8
- ## 前置条件
9
-
10
- - 活跃 change 已存在(proposal.md、design.md、tasks.md)
11
- - 无 Design Doc(`docs/superpowers/specs/` 下无对应文件)
12
-
13
- ## 步骤
14
-
15
- ### 0. 入口状态验证(Entry Check)
16
-
17
- 执行入口验证:
18
-
19
- ```bash
20
- COMET_ENV="${COMET_ENV:-$(find . "$HOME"/.*/skills "$HOME/.config" "$HOME/.gemini" -path '*/comet/scripts/comet-env.sh' -type f -print -quit 2>/dev/null)}"
21
- if [ -z "$COMET_ENV" ]; then
22
- echo "ERROR: comet-env.sh not found. Ensure the comet skill is installed." >&2
23
- return 1
24
- fi
25
- . "$COMET_ENV"
26
- "$COMET_BASH" "$COMET_STATE" check <name> design
27
- ```
28
-
29
- 验证通过后继续 Step 1。验证失败时脚本会输出具体失败原因。
30
-
31
- **幂等性**:所有 design 阶段操作可以安全重试。如果 `handoff_context` 和 `handoff_hash` 已存在,先确认它们与当前产物一致再决定是否重新生成。
32
-
33
- ### 1a. 生成 OpenSpec → Superpowers 交接包
34
-
35
- **必须由脚本生成,不允许 agent 临场手写 summary 代替。**
36
-
37
- ```bash
38
- "$COMET_BASH" "$COMET_HANDOFF" <change-name> design --write
39
- ```
40
-
41
- 脚本会生成并记录:
42
-
43
- ```
44
- openspec/changes/<name>/.comet/handoff/design-context.json
45
- openspec/changes/<name>/.comet/handoff/design-context.md
46
- ```
47
-
48
- 并在 `.comet.yaml` 写入:
49
-
50
- ```yaml
51
- handoff_context: openspec/changes/<name>/.comet/handoff/design-context.json
52
- handoff_hash: <sha256>
53
- ```
54
-
55
- 默认交接包是 **compact 可追溯摘录**,不是 agent summary:
56
- - `design-context.json`:机器索引,包含 change、phase、canonical spec、source paths、hash
57
- - `design-context.md`:供 Superpowers 阅读的上下文,包含脚本标记、source path、line range、sha256、确定性摘录
58
- - 超出摘录预算时标记 `[TRUNCATED]`,并保留 Full source 路径
59
-
60
- 如确实需要全文上下文,可显式运行:
61
-
62
- ```bash
63
- "$COMET_BASH" "$COMET_HANDOFF" <change-name> design --write --full
64
- ```
65
-
66
- 交接包来源来自 OpenSpec open 阶段产物:
67
- - `proposal.md`:目标、动机、范围、非目标
68
- - `design.md`:高层架构决策、方案约束
69
- - `tasks.md`:初始任务边界
70
- - `specs/*/spec.md`:delta 能力规格
71
-
72
- ### 1b. 执行 Brainstorming(带上下文)
73
-
74
- **立即执行:** 使用 Skill 工具加载 Superpowers `brainstorming` 技能,ARGUMENTS 包含:
75
-
76
- ```
77
- Change: <change-name>
78
- OpenSpec Context Pack: openspec/changes/<name>/.comet/handoff/design-context.md
79
- Machine handoff: openspec/changes/<name>/.comet/handoff/design-context.json
80
-
81
- OpenSpec 产物是上游事实源,不要重新定义需求,不要重写 proposal/spec。
82
- 你的任务是基于交接包做深度技术设计:实现方案、技术风险、测试策略、边界条件。
83
- 如发现 OpenSpec delta spec 缺少验收场景,只能提出 Spec Patch,并回写 OpenSpec delta spec;不要在 Design Doc 中创建第二份需求 spec。
84
-
85
- Design Doc frontmatter 必须最小化,只包含:
86
- ---
87
- comet_change: <change-name>
88
- role: technical-design
89
- canonical_spec: openspec
90
- ---
91
-
92
- 跳过重复上下文探索,直接进入设计提问。
93
- ```
94
-
95
- 禁止跳过此步骤,禁止在未加载该技能的情况下继续。
96
-
97
- 如 Superpowers `brainstorming` 技能不可用,停止流程并提示安装或启用 Superpowers 技能,不要用普通对话替代该步骤。
98
-
99
- 技能加载后,按其指引产出设计方案(以对话形式呈现):
100
- - 技术方案:架构、数据流、关键技术选型与风险
101
- - 测试策略
102
- - 如需补充验收场景,标明将回写的 delta spec 变更
103
-
104
- brainstorming 阶段不写入 Design Doc 文件,仅产出设计方案供 Step 1c 用户确认。确认后才创建 `docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md` 并回写 delta spec。
105
-
106
- ### 1c. 用户确认设计方案(阻塞点)
107
-
108
- brainstorming 产出设计方案后,**必须使用 AskUserQuestion 工具暂停并等待用户明确确认设计方案**。不得在用户确认前创建最终 Design Doc、写入 `design_doc`、运行 design guard,或进入 `/comet-build`。也不得仅输出文字提示后继续执行。
109
-
110
- 暂停时只展示必要摘要:
111
- - 采用的技术方案
112
- - 关键取舍与风险
113
- - 测试策略
114
- - 如有 Spec Patch,列出将回写的 delta spec 变更
115
-
116
- 用户明确确认后,才继续 Step 2。若用户要求调整,继续 brainstorming 迭代,直到用户确认。
117
-
118
- ### 2. 更新 Comet 状态
119
-
120
- 先记录 design_doc 路径。如果 Step 1c 回写了 delta spec(新增或修改了 `specs/*/spec.md`),必须重新生成 handoff 以更新 hash:
121
-
122
- ```bash
123
- # 记录 design_doc 路径
124
- "$COMET_BASH" "$COMET_STATE" set <name> design_doc docs/superpowers/specs/YYYY-MM-DD-topic-design.md
125
-
126
- # 如有 delta spec 变更,重新生成 handoff(更新 hash)
127
- "$COMET_BASH" "$COMET_HANDOFF" <change-name> design --write
128
-
129
- # 自动流转到下一阶段
130
- "$COMET_BASH" "$COMET_GUARD" <change-name> design --apply
131
- ```
132
-
133
- 如果没有 delta spec 变更,跳过 handoff 重新生成步骤。状态文件自动更新,无需手动编辑其他字段。
134
-
135
- ## 退出条件
136
-
137
- - Design Doc 已创建并保存
138
- - Design Doc frontmatter 包含 `comet_change`、`role: technical-design`、`canonical_spec: openspec`
139
- - `handoff_context` 和 `handoff_hash` 已写入 `.comet.yaml`(由 guard 强制校验)
140
- - `handoff_hash` 与当前 OpenSpec open 阶段产物一致(由 guard 强制校验)
141
- - `design-context.md` 必须是脚本生成,且包含 source path、mode、sha256 等可追溯标记(由 guard 强制校验)
142
- - 如有新能力或补充验收场景,OpenSpec delta spec 已创建/更新
143
- - `design_doc` 已写入 `.comet.yaml`
144
- - **阶段守卫**:运行 `"$COMET_BASH" "$COMET_GUARD" <change-name> design --apply`,全部 PASS 后自动流转到 `phase: build`
145
-
146
- 退出前必须使用 `--apply`:
147
-
148
- ```bash
149
- "$COMET_BASH" "$COMET_GUARD" <change-name> design --apply
150
- ```
151
-
152
- ## 上下文压缩恢复
153
-
154
- design 阶段在 brainstorming 过程中可能触发上下文压缩。恢复时先运行:
155
-
156
- ```bash
157
- "$COMET_BASH" "$COMET_STATE" check <change-name> design --recover
158
- ```
159
-
160
- 脚本输出结构化恢复上下文(阶段、已完成字段、待完成字段、恢复动作)。按 Recovery action 判断下一步。
161
-
162
- ## 自动流转
163
-
164
- 退出条件满足后(包括用户确认设计方案),自动流转到下一阶段:
165
-
166
- > **REQUIRED NEXT SKILL:** 调用 `comet-build` skill 进入计划与构建阶段。
1
+ ---
2
+ name: comet-design
3
+ description: "Comet 阶段 2:深度设计。用 /comet-design 调用。通过 brainstorming 产出 Design Doc 和 delta spec。"
4
+ ---
5
+
6
+ # Comet 阶段 2:深度设计(Design)
7
+
8
+ ## 前置条件
9
+
10
+ - 活跃 change 已存在(proposal.md、design.md、tasks.md)
11
+ - 无 Design Doc(`docs/superpowers/specs/` 下无对应文件)
12
+
13
+ ## 步骤
14
+
15
+ ### 0. 入口状态验证(Entry Check)
16
+
17
+ 执行入口验证:
18
+
19
+ ```bash
20
+ COMET_ENV="${COMET_ENV:-$(find . "$HOME"/.*/skills "$HOME/.config" "$HOME/.gemini" -path '*/comet/scripts/comet-env.sh' -type f -print -quit 2>/dev/null)}"
21
+ if [ -z "$COMET_ENV" ]; then
22
+ echo "ERROR: comet-env.sh not found. Ensure the comet skill is installed." >&2
23
+ return 1
24
+ fi
25
+ . "$COMET_ENV"
26
+ "$COMET_BASH" "$COMET_STATE" check <name> design
27
+ ```
28
+
29
+ 验证通过后继续 Step 1。验证失败时脚本会输出具体失败原因。
30
+
31
+ **幂等性**:所有 design 阶段操作可以安全重试。如果 `handoff_context` 和 `handoff_hash` 已存在,先确认它们与当前产物一致再决定是否重新生成。
32
+
33
+ ### 1a. 生成 OpenSpec → Superpowers 交接包
34
+
35
+ **必须由脚本生成,不允许 agent 临场手写 summary 代替。**
36
+
37
+ ```bash
38
+ "$COMET_BASH" "$COMET_HANDOFF" <change-name> design --write
39
+ ```
40
+
41
+ 脚本会根据 change `.comet.yaml` 的 `context_compression` 快照生成并记录交接包。
42
+
43
+ 默认 `context_compression: off` 时生成:
44
+
45
+ ```text
46
+ openspec/changes/<name>/.comet/handoff/design-context.json
47
+ openspec/changes/<name>/.comet/handoff/design-context.md
48
+ ```
49
+
50
+ 启用 beta(项目 `.comet/config.yaml` 中 `context_compression: beta`,创建 change 时快照进入 `.comet.yaml`)时生成:
51
+
52
+ ```text
53
+ openspec/changes/<name>/.comet/handoff/spec-context.json
54
+ openspec/changes/<name>/.comet/handoff/spec-context.md
55
+ ```
56
+
57
+ 并在 `.comet.yaml` 写入:
58
+
59
+ ```yaml
60
+ handoff_context: openspec/changes/<name>/.comet/handoff/design-context.json
61
+ handoff_hash: <sha256>
62
+ ```
63
+
64
+ 默认交接包是 **compact 可追溯摘录**,不是 agent summary:
65
+ - `design-context.json`:机器索引,包含 change、phase、canonical spec、source paths、hash
66
+ - `design-context.md`:供 Superpowers 阅读的上下文,包含脚本标记、source path、line range、sha256、确定性摘录
67
+ - 超出摘录预算时标记 `[TRUNCATED]`,并保留 Full source 路径
68
+
69
+ beta 交接包是 **结构化 spec projection**,用于减少 OpenSpec 原文 token 占用但避免实现漂移:
70
+ - `spec-context.json`:机器索引,包含 change、phase、mode=beta、source paths、context_hash、files 角色
71
+ - `spec-context.md`:供 Superpowers 阅读的紧凑上下文,verbatim 投影 delta spec 文件并按 hash 引用支撑产物
72
+ - OpenSpec delta spec 仍是 canonical spec;projection 缺失或过期时必须重新生成或读取源 spec,不得用 agent summary 替代
73
+
74
+ 如确实需要全文上下文,可显式运行:
75
+
76
+ ```bash
77
+ "$COMET_BASH" "$COMET_HANDOFF" <change-name> design --write --full
78
+ ```
79
+
80
+ 交接包来源来自 OpenSpec open 阶段产物:
81
+ - `proposal.md`:目标、动机、范围、非目标
82
+ - `design.md`:高层架构决策、方案约束
83
+ - `tasks.md`:初始任务边界
84
+ - `specs/*/spec.md`:delta 能力规格
85
+
86
+ ### 1b. 执行 Brainstorming(带上下文)
87
+
88
+ **立即执行:** 使用 Skill 工具加载 Superpowers `brainstorming` 技能。禁止跳过此步骤。
89
+
90
+ 技能加载时,ARGUMENTS 必须包含:
91
+
92
+ ```text
93
+ Language: 使用触发本次工作流的用户请求语言输出
94
+ ```
95
+
96
+ 技能加载后,按其指引使用以下上下文:
97
+
98
+ ```text
99
+ Change: <change-name>
100
+ OpenSpec Context Pack: openspec/changes/<name>/.comet/handoff/design-context.md
101
+ Machine handoff: openspec/changes/<name>/.comet/handoff/design-context.json
102
+
103
+ 如 context_compression: beta,则使用:
104
+ OpenSpec Context Pack: openspec/changes/<name>/.comet/handoff/spec-context.md
105
+ Machine handoff: openspec/changes/<name>/.comet/handoff/spec-context.json
106
+
107
+ OpenSpec 产物是上游事实源,但不得用“跳过重复上下文探索”削弱 Superpowers `brainstorming` 的澄清流程。
108
+ 你的任务是基于交接包做深度技术设计:实现方案、技术风险、测试策略、边界条件。
109
+ 如发现目标、范围、非目标、验收场景或关键约束仍不清楚,必须先继续提问并形成设计方案,不得只进行一轮问答就创建 Design Doc。
110
+ 不要重写 proposal/spec;如发现 OpenSpec delta spec 缺少验收场景,只能提出 Spec Patch,并回写 OpenSpec delta spec;不要在 Design Doc 中创建第二份需求 spec。Spec Patch 仅限于补充验收场景、修正歧义描述或添加边界条件,不得大幅重写 delta spec 的结构或范围——如需大幅修改,应标记为设计发现并回到 brainstorming 确认。
111
+
112
+ Design Doc frontmatter 必须最小化,只包含:
113
+ ---
114
+ comet_change: <change-name>
115
+ role: technical-design
116
+ canonical_spec: openspec
117
+ ---
118
+
119
+ 按 Superpowers `brainstorming` 技能原流程推进:澄清问题、2-3 个方案、分段确认设计。不得提前写入 Design Doc。
120
+ ```
121
+
122
+ 禁止在未加载该技能的情况下继续。
123
+
124
+ Superpowers `brainstorming` 技能不可用,停止流程并提示安装或启用 Superpowers 技能,不要用普通对话替代该步骤。
125
+
126
+ 技能加载后,按其指引产出设计方案(以对话形式呈现):
127
+ - 技术方案:架构、数据流、关键技术选型与风险
128
+ - 测试策略
129
+ - 需求/范围缺口与需回写的 Spec Patch
130
+ - 如需补充验收场景,标明将回写的 delta spec 变更
131
+
132
+ brainstorming 阶段不写入 Design Doc 文件,仅产出设计方案供 Step 1c 用户确认。确认后才创建 `docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md` 并回写 delta spec。
133
+
134
+ 但为了上下文压缩恢复,brainstorming 过程中必须增量更新 `brainstorm-summary.md`。每轮澄清或方案迭代后,只要产生新的已确认事实、关键约束、候选方案、取舍/风险、测试策略或 Spec Patch 候选,就更新该文件;未确认内容必须标注为“待确认”或“候选”。该文件是恢复检查点,不是 Design Doc,也不得替代 Step 1c 的用户确认。
135
+
136
+ ### 1c. 用户确认设计方案(阻塞点)
137
+
138
+ brainstorming 产出设计方案后,**必须按 `comet/reference/decision-point.md` 的协议暂停并等待用户明确确认设计方案**。不得在用户确认前创建最终 Design Doc、写入 `design_doc`、运行 design guard,或进入 `/comet-build`。
139
+
140
+ 暂停时只展示必要摘要:
141
+ - 采用的技术方案
142
+ - 关键取舍与风险
143
+ - 测试策略
144
+ - 如有 Spec Patch,列出将回写的 delta spec 变更
145
+
146
+ 用户明确确认后,才继续 Step 2。若用户要求调整,继续 brainstorming 迭代,直到用户确认。
147
+
148
+
149
+ ### 1d. Brainstorming 检查点定稿
150
+
151
+ 用户确认设计方案后,在创建 Design Doc 前,创建或更新已增量维护的检查点文件,将其定稿为确认后的设计方案摘要:
152
+
153
+ ```bash
154
+ mkdir -p openspec/changes/<name>/.comet/handoff
155
+ ```
156
+
157
+ `openspec/changes/<name>/.comet/handoff/brainstorm-summary.md` 结构:
158
+
159
+ ```markdown
160
+ # Brainstorm Summary
161
+
162
+ - Change: <change-name>
163
+ - Date: <YYYY-MM-DD>
164
+
165
+ ## 确认的技术方案
166
+
167
+ <用户确认的方案摘要>
168
+
169
+ ## 关键取舍与风险
170
+
171
+ <主要取舍和风险>
172
+
173
+ ## 测试策略
174
+
175
+ <测试方法概述>
176
+
177
+ ## Spec Patch
178
+
179
+ <将回写的 delta spec 变更,无则写"无">
180
+ ```
181
+
182
+ **上下文压缩说明**:每次增量更新 `brainstorm-summary.md` 后,都是相对安全的压缩恢复点。Brainstorming 完成后,如上下文窗口紧张,应优先在此处进行压缩。压缩后重新加载以下文件继续 Step 2:
183
+ - `openspec/changes/<name>/.comet/handoff/brainstorm-summary.md`
184
+ - `openspec/changes/<name>/.comet/handoff/design-context.md`(或 beta 模式的 `spec-context.md`)
185
+ - `openspec/changes/<name>/.comet/handoff/design-context.json`(或 beta 模式的 `spec-context.json`)
186
+
187
+ ### 1e. 主动上下文压缩门
188
+
189
+ 完成 Step 1d 并确认 `brainstorm-summary.md` 已写入后,进入 Design Doc 创建前的主动压缩门。此时 OpenSpec 交接包、brainstorming 决策和待确认项都已落盘,应主动释放前面读取 Spec 和 brainstorming 消耗的上下文,为 Step 2 及后续 Build 阶段保留窗口。
190
+
191
+ 执行规则:
192
+ - 如果当前平台提供原生上下文压缩/清理机制(例如宿主 Agent 的 compact/compaction 命令、工具或 UI 操作),必须在这里触发一次主动压缩;不要尝试用 shell 脚本伪造压缩命令。
193
+ - 压缩恢复提示必须包含 change 名称、当前步骤(Design Step 2)、以及上方三类需重新加载的 handoff 文件。
194
+ - 如果当前平台无法由 agent 程序化触发压缩,必须暂停并提示用户在宿主平台执行手动压缩;用户确认无法压缩或要求继续时,才继续 Step 2。
195
+
196
+ ### 2. 创建 Design Doc
197
+
198
+ 基于 brainstorming 对话的完整上下文(仍在主 session 中),创建 Design Doc。
199
+
200
+ Design Doc frontmatter 必须最小化:
201
+
202
+ ```yaml
203
+ ---
204
+ comet_change: <change-name>
205
+ role: technical-design
206
+ canonical_spec: openspec
207
+ ---
208
+ ```
209
+
210
+ 将 Design Doc 写入 `docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md`。
211
+ 如需回写 delta spec(Spec Patch),同时编辑对应的 `specs/*/spec.md`。
212
+
213
+ **上下文压缩恢复**:若上下文已被压缩,从 `brainstorm-summary.md` + handoff 上下文恢复。若用户尚未确认设计方案,回到 Step 1b/1c 继续 brainstorming;若用户已确认,继续创建 Design Doc。brainstorm-summary.md 是压缩恢复的落盘点,不是 Design Doc 的唯一输入——创建时应尽可能利用恢复后的完整上下文。
214
+
215
+ ### 3. 更新 Comet 状态
216
+
217
+ 先记录 design_doc 路径。如果 Spec Patch 回写了 delta spec(新增或修改了 `specs/*/spec.md`),必须重新生成 handoff 以更新 hash:
218
+
219
+ ```bash
220
+ # 记录 design_doc 路径
221
+ "$COMET_BASH" "$COMET_STATE" set <name> design_doc docs/superpowers/specs/YYYY-MM-DD-topic-design.md
222
+
223
+ # 如有 delta spec 变更,重新生成 handoff(更新 hash)
224
+ "$COMET_BASH" "$COMET_HANDOFF" <change-name> design --write
225
+
226
+ # 阶段守卫推进 phase 到下一阶段
227
+ "$COMET_BASH" "$COMET_GUARD" <change-name> design --apply
228
+ ```
229
+
230
+ 如果没有 delta spec 变更,跳过 handoff 重新生成步骤。状态文件自动更新,无需手动编辑其他字段。
231
+
232
+ ## 退出条件
233
+
234
+ - Design Doc 已创建并保存
235
+ - Design Doc frontmatter 包含 `comet_change`、`role: technical-design`、`canonical_spec: openspec`
236
+ - `handoff_context` 和 `handoff_hash` 已写入 `.comet.yaml`(由 guard 强制校验)
237
+ - `handoff_hash` 与当前 OpenSpec open 阶段产物一致(由 guard 强制校验)
238
+ - `design-context.md` 或 beta `spec-context.md` 必须是脚本生成,且包含 source path、mode、sha256 等可追溯标记(由 guard 强制校验)
239
+ - beta 模式下,`spec-context.json` 必须结构合法且引用当前源文件(由 guard 强制校验)
240
+ - 如有新能力或补充验收场景,OpenSpec delta spec 已创建/更新
241
+ - `design_doc` 已写入 `.comet.yaml`
242
+ - **阶段守卫**:运行 `"$COMET_BASH" "$COMET_GUARD" <change-name> design --apply`,全部 PASS 后由守卫推进到 `phase: build`(此步骤更新 `phase` 字段,与 `auto_transition` 无关)
243
+
244
+ 退出前必须使用 `--apply`:
245
+
246
+ ```bash
247
+ "$COMET_BASH" "$COMET_GUARD" <change-name> design --apply
248
+ ```
249
+
250
+ ## 上下文压缩恢复
251
+
252
+ 按 `comet/reference/context-recovery.md` 执行,phase 参数为 `design`。
253
+
254
+ ## 自动衔接下一阶段
255
+
256
+ 按 `comet/reference/auto-transition.md` 执行。关键命令:
257
+
258
+ ```bash
259
+ "$COMET_BASH" "$COMET_STATE" next <change-name>
260
+ ```
261
+
262
+ - `NEXT: auto` → 调用 `SKILL` 指向的 skill 进入下一阶段
263
+ - `NEXT: manual` → 不要调用下一 skill,按 `HINT` 提示用户手动运行 `/<SKILL>`
264
+ - `NEXT: done` → 流程已完成,无需继续