@rpamis/comet 0.4.0-beta.4 → 0.4.0-beta.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.
Files changed (183) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +5 -1
  3. package/assets/manifest.json +1 -1
  4. package/assets/skills/comet/SKILL.md +30 -28
  5. package/assets/skills/comet/reference/auto-transition.md +1 -1
  6. package/assets/skills/comet/reference/comet-yaml-fields.md +6 -4
  7. package/assets/skills/comet/reference/context-recovery.md +2 -2
  8. package/assets/skills/comet/reference/decision-point.md +11 -0
  9. package/assets/skills/comet/reference/subagent-dispatch.md +6 -5
  10. package/assets/skills/comet/rules/comet-phase-guard.en.md +23 -28
  11. package/assets/skills/comet/rules/comet-phase-guard.md +22 -28
  12. package/assets/skills/comet/scripts/comet-runtime.mjs +185 -56
  13. package/assets/skills/comet-any/SKILL.md +1 -1
  14. package/assets/skills/comet-any/reference/authored-zone-example.md +10 -5
  15. package/assets/skills/comet-any/reference/subagents/pause-points-author.md +14 -11
  16. package/assets/skills/comet-any/reference/subagents/skill-reviewer.md +2 -0
  17. package/assets/skills/comet-any/reference/subagents/workflow-entry-author.md +5 -4
  18. package/assets/skills/comet-archive/SKILL.md +34 -13
  19. package/assets/skills/comet-build/SKILL.md +23 -21
  20. package/assets/skills/comet-design/SKILL.md +23 -22
  21. package/assets/skills/comet-hotfix/SKILL.md +35 -34
  22. package/assets/skills/comet-open/SKILL.md +97 -58
  23. package/assets/skills/comet-tweak/SKILL.md +21 -18
  24. package/assets/skills/comet-verify/SKILL.md +35 -59
  25. package/assets/skills-zh/comet/SKILL.md +30 -28
  26. package/assets/skills-zh/comet/reference/auto-transition.md +1 -1
  27. package/assets/skills-zh/comet/reference/comet-yaml-fields.md +6 -4
  28. package/assets/skills-zh/comet/reference/context-recovery.md +2 -2
  29. package/assets/skills-zh/comet/reference/decision-point.md +11 -0
  30. package/assets/skills-zh/comet/reference/subagent-dispatch.md +6 -5
  31. package/assets/skills-zh/comet-any/SKILL.md +1 -1
  32. package/assets/skills-zh/comet-any/reference/authored-zone-example.md +10 -5
  33. package/assets/skills-zh/comet-any/reference/subagents/pause-points-author.md +14 -12
  34. package/assets/skills-zh/comet-any/reference/subagents/skill-reviewer.md +2 -0
  35. package/assets/skills-zh/comet-any/reference/subagents/workflow-entry-author.md +5 -4
  36. package/assets/skills-zh/comet-archive/SKILL.md +34 -13
  37. package/assets/skills-zh/comet-build/SKILL.md +23 -21
  38. package/assets/skills-zh/comet-design/SKILL.md +23 -22
  39. package/assets/skills-zh/comet-hotfix/SKILL.md +34 -33
  40. package/assets/skills-zh/comet-open/SKILL.md +96 -57
  41. package/assets/skills-zh/comet-tweak/SKILL.md +20 -17
  42. package/assets/skills-zh/comet-verify/SKILL.md +35 -59
  43. package/dist/app/commands/doctor.d.ts.map +1 -1
  44. package/dist/app/commands/doctor.js +62 -15
  45. package/dist/app/commands/doctor.js.map +1 -1
  46. package/dist/app/commands/init.d.ts +1 -1
  47. package/dist/app/commands/init.d.ts.map +1 -1
  48. package/dist/app/commands/init.js +58 -14
  49. package/dist/app/commands/init.js.map +1 -1
  50. package/dist/app/commands/uninstall.d.ts +3 -0
  51. package/dist/app/commands/uninstall.d.ts.map +1 -1
  52. package/dist/app/commands/uninstall.js +70 -36
  53. package/dist/app/commands/uninstall.js.map +1 -1
  54. package/dist/app/commands/update.d.ts.map +1 -1
  55. package/dist/app/commands/update.js +213 -34
  56. package/dist/app/commands/update.js.map +1 -1
  57. package/dist/domains/bundle/bundle-platform.d.ts +1 -0
  58. package/dist/domains/bundle/bundle-platform.d.ts.map +1 -1
  59. package/dist/domains/bundle/bundle-platform.js +6 -2
  60. package/dist/domains/bundle/bundle-platform.js.map +1 -1
  61. package/dist/domains/comet-classic/classic-guard.d.ts.map +1 -1
  62. package/dist/domains/comet-classic/classic-guard.js +15 -11
  63. package/dist/domains/comet-classic/classic-guard.js.map +1 -1
  64. package/dist/domains/comet-classic/classic-hook-guard.d.ts.map +1 -1
  65. package/dist/domains/comet-classic/classic-hook-guard.js +113 -19
  66. package/dist/domains/comet-classic/classic-hook-guard.js.map +1 -1
  67. package/dist/domains/comet-classic/classic-resolver.js +1 -1
  68. package/dist/domains/comet-classic/classic-resolver.js.map +1 -1
  69. package/dist/domains/comet-classic/classic-state-command.d.ts.map +1 -1
  70. package/dist/domains/comet-classic/classic-state-command.js +22 -13
  71. package/dist/domains/comet-classic/classic-state-command.js.map +1 -1
  72. package/dist/domains/comet-classic/classic-state.d.ts +3 -2
  73. package/dist/domains/comet-classic/classic-state.d.ts.map +1 -1
  74. package/dist/domains/comet-classic/classic-state.js +13 -1
  75. package/dist/domains/comet-classic/classic-state.js.map +1 -1
  76. package/dist/domains/comet-classic/classic-transitions.d.ts.map +1 -1
  77. package/dist/domains/comet-classic/classic-transitions.js +16 -2
  78. package/dist/domains/comet-classic/classic-transitions.js.map +1 -1
  79. package/dist/domains/comet-classic/classic-validate-command.d.ts.map +1 -1
  80. package/dist/domains/comet-classic/classic-validate-command.js +7 -1
  81. package/dist/domains/comet-classic/classic-validate-command.js.map +1 -1
  82. package/dist/domains/dashboard/web/assets/_commonjsHelpers-CqkleIqs.js +1 -0
  83. package/dist/domains/dashboard/web/assets/arc-TGVUG2WN.js +1 -0
  84. package/dist/domains/dashboard/web/assets/architectureDiagram-3BPJPVTR-ASHmiHoP.js +36 -0
  85. package/dist/domains/dashboard/web/assets/blockDiagram-GPEHLZMM-CwASxBKe.js +132 -0
  86. package/dist/domains/dashboard/web/assets/c4Diagram-AAUBKEIU-BU8z_WNk.js +10 -0
  87. package/dist/domains/dashboard/web/assets/channel-kp6Ng2JJ.js +1 -0
  88. package/dist/domains/dashboard/web/assets/chunk-2J33WTMH-CBGlUx4_.js +1 -0
  89. package/dist/domains/dashboard/web/assets/chunk-4BX2VUAB-CS-iGcFz.js +1 -0
  90. package/dist/domains/dashboard/web/assets/chunk-55IACEB6-BUtCVJat.js +1 -0
  91. package/dist/domains/dashboard/web/assets/chunk-727SXJPM-C94tj_pf.js +206 -0
  92. package/dist/domains/dashboard/web/assets/chunk-AQP2D5EJ-BFOKcpdG.js +231 -0
  93. package/dist/domains/dashboard/web/assets/chunk-FMBD7UC4-Dmx8B-st.js +15 -0
  94. package/dist/domains/dashboard/web/assets/chunk-ND2GUHAM-DYV00CNn.js +1 -0
  95. package/dist/domains/dashboard/web/assets/chunk-QZHKN3VN-DMJJyQnw.js +1 -0
  96. package/dist/domains/dashboard/web/assets/classDiagram-4FO5ZUOK-yBDjgMY_.js +1 -0
  97. package/dist/domains/dashboard/web/assets/classDiagram-v2-Q7XG4LA2-yBDjgMY_.js +1 -0
  98. package/dist/domains/dashboard/web/assets/cose-bilkent-S5V4N54A-P4nE2rea.js +1 -0
  99. package/dist/domains/dashboard/web/assets/cynefin-VYW2F7L2-C-R1HXDv.js +166 -0
  100. package/dist/domains/dashboard/web/assets/cytoscape.esm-D3_iZ_3b.js +321 -0
  101. package/dist/domains/dashboard/web/assets/dagre-BM42HDAG-BH8d-C9z.js +4 -0
  102. package/dist/domains/dashboard/web/assets/defaultLocale-DX6XiGOO.js +1 -0
  103. package/dist/domains/dashboard/web/assets/diagram-2AECGRRQ-DpXTgQIH.js +43 -0
  104. package/dist/domains/dashboard/web/assets/diagram-5GNKFQAL-DSiFJzSw.js +10 -0
  105. package/dist/domains/dashboard/web/assets/diagram-KO2AKTUF-DULMkben.js +3 -0
  106. package/dist/domains/dashboard/web/assets/diagram-LMA3HP47-Pi8m_NO9.js +24 -0
  107. package/dist/domains/dashboard/web/assets/diagram-OG6HWLK6-BSe6bCWm.js +24 -0
  108. package/dist/domains/dashboard/web/assets/erDiagram-TEJ5UH35-zb-FEcbq.js +85 -0
  109. package/dist/domains/dashboard/web/assets/flowDiagram-I6XJVG4X-Dr-Gk0z2.js +162 -0
  110. package/dist/domains/dashboard/web/assets/ganttDiagram-6RSMTGT7-qs6Zb2A6.js +292 -0
  111. package/dist/domains/dashboard/web/assets/gitGraphDiagram-PVQCEYII-BQ314orT.js +106 -0
  112. package/dist/domains/dashboard/web/assets/graph--OzhPTMs.js +1 -0
  113. package/dist/domains/dashboard/web/assets/index-BLAfkNTu.css +1 -0
  114. package/dist/domains/dashboard/web/assets/index-DlSYK56b.js +139 -0
  115. package/dist/domains/dashboard/web/assets/index-DtLUOcAW.js +24 -0
  116. package/dist/domains/dashboard/web/assets/index-QO0z6F4w.js +10 -0
  117. package/dist/domains/dashboard/web/assets/infoDiagram-5YYISTIA-O0bQp98A.js +2 -0
  118. package/dist/domains/dashboard/web/assets/init-Gi6I4Gst.js +1 -0
  119. package/dist/domains/dashboard/web/assets/ishikawaDiagram-YF4QCWOH-BPC7wbKh.js +70 -0
  120. package/dist/domains/dashboard/web/assets/journeyDiagram-JHISSGLW-ohViOd4b.js +139 -0
  121. package/dist/domains/dashboard/web/assets/kanban-definition-UN3LZRKU-CHleNdbG.js +89 -0
  122. package/dist/domains/dashboard/web/assets/katex-HP8lGamR.js +257 -0
  123. package/dist/domains/dashboard/web/assets/layout-SsrduOYp.js +1 -0
  124. package/dist/domains/dashboard/web/assets/linear-CyqiW--Q.js +1 -0
  125. package/dist/domains/dashboard/web/assets/marked.esm-DECB3bxB.js +64 -0
  126. package/dist/domains/dashboard/web/assets/mermaid.core-qS9XvtaK.js +301 -0
  127. package/dist/domains/dashboard/web/assets/mindmap-definition-RKZ34NQL-oaGkqO9l.js +96 -0
  128. package/dist/domains/dashboard/web/assets/ordinal-Cboi1Yqb.js +1 -0
  129. package/dist/domains/dashboard/web/assets/pieDiagram-4H26LBE5-CPcB-AFh.js +30 -0
  130. package/dist/domains/dashboard/web/assets/purify.es-VaSPOPhr.js +3 -0
  131. package/dist/domains/dashboard/web/assets/quadrantDiagram-W4KKPZXB-LFy52Qtj.js +7 -0
  132. package/dist/domains/dashboard/web/assets/requirementDiagram-4Y6WPE33-BdjeaYP_.js +84 -0
  133. package/dist/domains/dashboard/web/assets/sankeyDiagram-5OEKKPKP-DDJ4styL.js +40 -0
  134. package/dist/domains/dashboard/web/assets/sequenceDiagram-3UESZ5HK-BL5bFNoz.js +162 -0
  135. package/dist/domains/dashboard/web/assets/stateDiagram-AJRCARHV-BNUfikui.js +1 -0
  136. package/dist/domains/dashboard/web/assets/stateDiagram-v2-BHNVJYJU-DGrsmWts.js +1 -0
  137. package/dist/domains/dashboard/web/assets/timeline-definition-PNZ67QCA--ps2uu6L.js +120 -0
  138. package/dist/domains/dashboard/web/assets/vennDiagram-CIIHVFJN-C2q8q26c.js +34 -0
  139. package/dist/domains/dashboard/web/assets/wardleyDiagram-YWT4CUSO-BUH9gXqd.js +78 -0
  140. package/dist/domains/dashboard/web/assets/xychartDiagram-2RQKCTM6-B-DielEy.js +7 -0
  141. package/dist/domains/dashboard/web/index.html +16 -16
  142. package/dist/domains/factory/package.d.ts.map +1 -1
  143. package/dist/domains/factory/package.js +20 -6
  144. package/dist/domains/factory/package.js.map +1 -1
  145. package/dist/domains/integrations/openspec.d.ts +4 -1
  146. package/dist/domains/integrations/openspec.d.ts.map +1 -1
  147. package/dist/domains/integrations/openspec.js +56 -4
  148. package/dist/domains/integrations/openspec.js.map +1 -1
  149. package/dist/domains/skill/json-object.d.ts +13 -0
  150. package/dist/domains/skill/json-object.d.ts.map +1 -0
  151. package/dist/domains/skill/json-object.js +24 -0
  152. package/dist/domains/skill/json-object.js.map +1 -0
  153. package/dist/domains/skill/platform-inspect.d.ts +9 -0
  154. package/dist/domains/skill/platform-inspect.d.ts.map +1 -0
  155. package/dist/domains/skill/platform-inspect.js +149 -0
  156. package/dist/domains/skill/platform-inspect.js.map +1 -0
  157. package/dist/domains/skill/platform-install.d.ts +16 -6
  158. package/dist/domains/skill/platform-install.d.ts.map +1 -1
  159. package/dist/domains/skill/platform-install.js +277 -144
  160. package/dist/domains/skill/platform-install.js.map +1 -1
  161. package/dist/domains/skill/uninstall.d.ts.map +1 -1
  162. package/dist/domains/skill/uninstall.js +204 -141
  163. package/dist/domains/skill/uninstall.js.map +1 -1
  164. package/dist/platform/fs/file-system.d.ts +3 -3
  165. package/dist/platform/fs/file-system.d.ts.map +1 -1
  166. package/dist/platform/fs/file-system.js +21 -11
  167. package/dist/platform/fs/file-system.js.map +1 -1
  168. package/dist/platform/install/platforms.d.ts +4 -0
  169. package/dist/platform/install/platforms.d.ts.map +1 -1
  170. package/dist/platform/install/platforms.js +2 -0
  171. package/dist/platform/install/platforms.js.map +1 -1
  172. package/dist/platform/install/project-registry.d.ts +1 -0
  173. package/dist/platform/install/project-registry.d.ts.map +1 -1
  174. package/dist/platform/install/project-registry.js +9 -1
  175. package/dist/platform/install/project-registry.js.map +1 -1
  176. package/dist/platform/install/skill-root-owner.d.ts +15 -0
  177. package/dist/platform/install/skill-root-owner.d.ts.map +1 -0
  178. package/dist/platform/install/skill-root-owner.js +68 -0
  179. package/dist/platform/install/skill-root-owner.js.map +1 -0
  180. package/package.json +6 -1
  181. package/dist/domains/dashboard/web/assets/index-CIvN-PL8.js +0 -22
  182. package/dist/domains/dashboard/web/assets/index-DcyRPBnT.css +0 -1
  183. package/eval/.env +0 -28
@@ -4,8 +4,7 @@
4
4
 
5
5
  ## 职责
6
6
 
7
- 设计用户在 Skill 中必须停顿选择的位置,以及跨设备断点恢复方式。停顿点必须是明确的用户选择,
8
- 不能被默认推荐、历史偏好或自动推进绕过。
7
+ 设计用户在 Skill 中真正必须选择的位置,以及跨设备断点恢复方式。必须先区分四类情况:用户决策、自动处理、停止条件和手动衔接。只有存在两个或以上会改变范围、行为、风险接受或不可逆结果的合法选项时,才创建用户停顿点;单一安全动作直接执行,缺少依赖或状态损坏只报告停止条件,手动衔接只交还控制权。真正的用户决策不能被默认推荐、历史偏好或自动推进绕过。
9
8
 
10
9
  必须覆盖:
11
10
 
@@ -16,11 +15,10 @@
16
15
 
17
16
  读取主会话提供的通用输入,尤其关注:
18
17
 
19
- - Skill Creator 方案确认页中的 `confirm-generate`、`revise-proposal`、`cancel`。
20
- - eval 工作量选择 `skip / quick / full eval`,以及当前 draft hash 的 eval evidence 缺失或过期时的阻塞恢复。
21
- - 安装前人工批准。
22
- - unresolved、ambiguous、capability gap、executable disclosure 等阻塞点。
23
- - runner 恢复状态和跨设备恢复入口。
18
+ - Skill Creator 方案确认页中的 `confirm-generate`、`revise-proposal`、`cancel`:这是会改变生成结果的用户决策。
19
+ - eval 工作量选择 `skip / quick / full eval` 和安装前人工批准:只有确实存在多个合法选项时才是用户决策。
20
+ - 当前 draft hash 的 eval evidence 缺失或过期、unresolved、ambiguous、capability gap、executable disclosure:逐项判断是可自动修复、无路可走的停止条件,还是确有多个恢复选项的用户决策;不得统一写成停顿点。
21
+ - runner 恢复状态和跨设备恢复入口:复用仍有效的持久化选择,不得在恢复时重复询问。
24
22
 
25
23
  使用文件交接:主会话提供路径,不粘贴大段全文。不要继承主会话历史;只使用本 brief、通用输入、
26
24
  workflow protocol 和已有草稿。
@@ -35,21 +33,23 @@ model: <必须显式指定 model>
35
33
  prompt:
36
34
  你是停顿点作者 subagent。
37
35
  先读取本 brief、通用输入路径、workflow protocol 路径、Skill 草稿路径和报告文件路径。
38
- 开始前先提出问题:如果用户选择项、阻塞恢复或跨设备状态不清楚,先返回 NEEDS_CONTEXT。
39
- 不要猜测或自行补全缺失停顿点。
36
+ 开始前先把候选节点分类为用户决策、自动处理、停止条件或手动衔接。如果分类所需事实缺失,先返回 NEEDS_CONTEXT。
37
+ 不要猜测缺失选择,也不要把自动修复、guard 失败、能力缺口、单一合法动作或手动衔接伪装成用户停顿点。
40
38
  只产出 decision-points 和 recovery 草稿,不写 Bundle state,不执行候选脚本。
41
39
  把完整停顿点草稿写入报告文件路径,并只返回 15 行以内状态摘要。
42
40
  ```
43
41
 
44
42
  ## 输出要求
45
43
 
46
- 返回停顿点草稿,说明:
44
+ 返回草稿时先列分类表,再说明真正的用户停顿点:
47
45
 
46
+ - 每个候选节点属于用户决策、自动处理、停止条件还是手动衔接,以及判定依据。
48
47
  - 每个停顿点的触发条件。
49
48
  - 用户可选择项。
50
49
  - 每个选择会进入哪个阶段。
51
50
  - 停顿点证据写入哪里。
52
- - 恢复时如何显示当前阶段、阻塞原因、建议下一步和可选项。
51
+ - 自动处理如何直接推进;停止条件如何报告恢复条件而不发明选项。
52
+ - 恢复时如何显示当前阶段、阻塞原因、建议下一步和真实可选项,并复用已持久化选择。
53
53
 
54
54
  停顿点必须适配当前 workflow protocol,不得只列 Comet 原始停顿点。
55
55
 
@@ -58,8 +58,10 @@ prompt:
58
58
  返回前逐项检查:
59
59
 
60
60
  - 每个用户停顿点都有触发条件、选项、下一阶段和证据位置。
61
+ - 每个停顿点至少有两个当前可执行的合法选项;相邻且可同时回答的选择已合并,单一合法值不会制造停顿。
62
+ - guard 失败、确定性重试、状态对账、能力缺口和 `NEXT: manual` 已按实际情况归入自动处理、停止条件或手动衔接,而不是默认询问用户。
61
63
  - 默认推荐、历史偏好和自动推进都不能绕过必须停顿点。
62
- - 恢复摘要能显示当前阶段、阻塞原因、建议下一步和可选项。
64
+ - 恢复摘要能显示当前阶段、阻塞原因、建议下一步和真实可选项,且不会重复询问仍有效的选择。
63
65
  - 跨设备恢复不依赖当前会话记忆。
64
66
  - 停顿点适配当前组合 Skill,不只是照列 Comet 原始停顿点。
65
67
 
@@ -61,6 +61,8 @@ prompt:
61
61
  - 阶段推进没有通过脚本输出 `NEXT:` 和 `SKILL:` 表达。
62
62
  - workflow protocol 声明的 `requiredSkillCalls` 没有在对应Node Skill 中明确要求加载,或 subagent 槽位没有要求子代理任务提示加载该 Skill。
63
63
  - 用户停顿点缺失,或停顿点可被默认值绕过。
64
+ - 把确定性修复、guard 失败、状态对账、能力缺口、单一合法动作或 `NEXT: manual` 默认写成用户停顿点;或把可同时回答的相邻选择拆成连续确认。
65
+ - entry Skill 的 frontmatter description 没有说明它是托管 workflow 的入口/恢复路由,或 internal Node Skill 的 description 允许普通任务直接触发而未限定为显式调用或 entry/runtime 路由。
64
66
  - 中文 Skill 混入英文流程句。
65
67
  - 嵌套 Skill 调用使用 provider 前缀。
66
68
  - 用户可见 `SKILL.md` 泄漏生成审计章节、source hash 或内部 metadata。
@@ -20,7 +20,7 @@
20
20
 
21
21
  - **语义化当前节点检测** — 如何判断用户在哪个 Node,而非只跑脚本。建模 comet 的 Step 0(从用户消息检测意图,检查 Node 顺序,处理"属于前序/后序 Node"的冲突)+ Step 1(读状态,文件优先于过期状态)。
22
22
  - **Resume 与 drift 规则** — 上下文恢复时怎么办(从头重新检测,永远不信任对话历史),状态说 DONE 但 artifact 缺失时怎么办,用户在 Node 中途换话题时怎么办。
23
- - **决策点**必须暂停等用户确认的情况的显式表格(首次调用确认范围、Node 歧义、用户确认、guard 失败)。
23
+ - **决策分类与决策点**先区分用户决策、自动处理、停止条件和手动衔接,再只为真正需要用户选择的情况建表。清晰的首次调用、可确定修复的 guard 失败、单一合法下一步和 `NEXT: manual` 都不得制造确认点。
24
24
  - **Red flags** — "agent 想法 → 实际风险"模式,抓自欺(如"用户提到了主题所以研究已确认" → 提到 ≠ 确认)。
25
25
 
26
26
  没有这四个子节的 Decision Core 是 stub,不是 Decision Core。entry 是每次调用最先读取的文件——它决定了 Skill 感觉"智能"还是"机械"。
@@ -48,10 +48,10 @@ model: <必须显式指定 model>
48
48
  prompt:
49
49
  你是 workflow entry 作者 subagent。
50
50
  先读取本 brief、通用输入路径、脚本契约路径、workflow protocol 路径和报告文件路径。
51
- 开始前先提出问题:如果启动路由、恢复路径、当前阶段判定或用户停顿点不清楚,先返回 NEEDS_CONTEXT。
51
+ 开始前先分类用户决策、自动处理、停止条件和手动衔接;如果启动路由、恢复路径、当前阶段判定或真正的用户选择不清楚,先返回 NEEDS_CONTEXT。
52
52
  不要猜测或自行补全缺失流程。
53
53
  只写 entry SKILL.md 草稿,不写 internal Node Skill,不写 Bundle state,不执行候选脚本。
54
- Decision Core 必须包含四个子节:### 自动节点检测(Step 0 意图检测 + Step 1 状态读取 + Resume 规则)、### 决策点(显式暂停表格)、### Red Flags(agent 想法 → 实际风险表格)。没有这些子节的 Decision Core 是 stub。
54
+ Decision Core 必须包含四个子节:### 自动节点检测(Step 0 意图检测 + Step 1 状态读取 + Resume 规则)、### 决策分类与决策点(只列真正的用户选择)、### Red Flags(agent 想法 → 实际风险表格)。不得把 guard 失败、确定性修复、单一合法动作或手动衔接列为用户决策。没有这些子节的 Decision Core 是 stub。
55
55
  把完整 entry 草稿写入报告文件路径,并只返回 15 行以内状态摘要。
56
56
  ```
57
57
 
@@ -64,7 +64,7 @@ entry 草稿必须体现:
64
64
  - 只有脚本输出 `NEXT: auto` 和 `SKILL: <node-skill>` 后,才加载这一个 Node Skill。
65
65
  - 阶段路线只能作为参考表,不能使用“立即执行”或“必须加载”这类执行指令。
66
66
  - 对 `/comet` 定制,entry 必须列出必调槽位 Skill,但只能作为阶段内义务说明,不能变成 entry 立即执行清单。
67
- - 用户停顿点、恢复路径和参考文件清楚可见。
67
+ - 用户决策、自动处理、停止条件、手动衔接、恢复路径和参考文件清楚可见;只有至少两个真实合法选项时才停顿,相邻选择应合并。
68
68
  - 对 `/comet` 定制,说明保留 open / design / build / verify / archive 主路径和阶段守卫。
69
69
 
70
70
  禁止:
@@ -83,6 +83,7 @@ entry 草稿必须体现:
83
83
  - entry 没有立即加载Node Skill 的清单。
84
84
  - 阶段路线是参考,不是执行步骤。
85
85
  - 自动推进引用脚本输出的 `NEXT:` 和 `SKILL:`。
86
+ - 清晰首次调用直接初始化;guard 失败先自动诊断或报告停止条件;`NEXT: manual` 只交还控制权;以上情况均不伪造用户决策。
86
87
  - 中文用户可见文案没有混入英文流程句。
87
88
 
88
89
  ## 必须返回的 claim
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: comet-archive
3
- description: "Use when Comet change 验证已通过,需要用户确认归档、合并 delta spec,或恢复 archive 阶段。"
3
+ description: "仅在用户明确调用 /comet-archive,或由 Comet Skill/runtime 路由到 archive 阶段时使用;确认归档、合并 delta spec 并完成分支收尾。"
4
4
  ---
5
5
 
6
6
  # Comet 阶段 5:归档(Archive)
@@ -8,7 +8,7 @@ description: "Use when Comet change 验证已通过,需要用户确认归档
8
8
  ## 前置条件
9
9
 
10
10
  - 验证已通过(阶段 4 完成)
11
- - 分支已处理
11
+ - 归档提交和分支处理尚未完成(`branch_status: pending`)
12
12
  - `openspec/changes/<name>/.comet.yaml` 中 `verify_result: pass`
13
13
 
14
14
  ## 步骤
@@ -35,7 +35,7 @@ comet state check <name> archive
35
35
  确认前必须向用户展示简短摘要:
36
36
  - change 名称
37
37
  - 验证报告路径和结论
38
- - 分支处理状态
38
+ - 当前分支/工作区和未提交改动归因摘要
39
39
  - 本次归档将执行的不可逆动作:按 OpenSpec delta 语义合并主 spec、标注 design doc / plan、移动 change 到 archive 目录
40
40
 
41
41
  用户确认问题必须以单选题形式呈现,包含以下选项:
@@ -70,11 +70,6 @@ comet archive "<change-name>"
70
70
  如脚本返回非零退出码,报告错误并停止。
71
71
  如脚本返回零退出码,归档完成。
72
72
 
73
- 归档成功后清理当前执行上下文;该命令幂等:
74
-
75
- ```bash
76
- comet state clear-selection
77
- ```
78
73
  脚本摘要中的 `X/Y steps succeeded` 以真实执行步骤计数,不会因 delta spec 同步或文档标注重复累计。
79
74
 
80
75
  脚本会调用 OpenSpec 归档能力按 `ADDED/MODIFIED/REMOVED/RENAMED` 语义合并主 spec,并在归档后校验主 spec 中没有残留 delta-only section 标题。
@@ -88,31 +83,57 @@ Spec 生命周期在此完成:
88
83
  brainstorming → delta spec → 实施 → 验证 → 主 spec 合并 → design doc 标注 → 归档
89
84
  ```
90
85
 
91
- ### 4. 提交归档改动
86
+ ### 4. 精确提交归档改动
92
87
 
93
88
  归档脚本只移动文件和合并 spec,不会自动提交。归档完成后工作区会有以下未提交改动:
94
89
  - change 目录从 `openspec/changes/<name>/` 移动到 `openspec/changes/archive/YYYY-MM-DD-<name>/`
95
90
  - 主 spec 按 delta 语义合并的内容
96
91
  - design doc / plan 的归档元数据标注
97
92
 
98
- **必须提示用户提交这些归档改动**,否则归档成果会停留在工作区。展示待提交文件后建议执行:
93
+ 归档后先读取 `git status --short`,并以归档前的 dirty-worktree 归因记录为基线。只允许暂存可归因于当前 change 的路径:原 active change 路径、脚本输出的实际 archive 路径、被本次 delta 更新的 main specs,以及当前 Design Doc/Plan 的归档元数据。存在无法归因的路径时停止并请求用户处理。
94
+
95
+ 使用显式 pathspec 暂存核对后的路径,再检查 staged diff;不得使用全仓库暂存,也不得把用户已有改动混入归档提交:
99
96
 
100
97
  ```bash
101
- git add -A
98
+ git add -- <逐项核对后的归档路径...>
99
+ git diff --cached --stat
102
100
  git commit -m "chore: archive <change-name>"
103
101
  ```
104
102
 
105
- 如分支处理(阶段 4)选择尚未合并到主分支,提交后按所选方式(合并 / PR / 保持分支)一并收尾。
103
+ 提交失败或 staged diff 含无关路径时停止,不得继续分支处理。
104
+
105
+ ### 5. 归档提交后的分支处理
106
+
107
+ 归档提交成功后,**立即执行:** 使用 Skill 工具加载 Superpowers `finishing-a-development-branch` 技能。该步骤必须位于归档与归档提交之后,确保最终分支/PR 包含 spec 合并和归档元数据。
108
+
109
+ 如该技能不可用,停止流程并提示安装或启用;不得把 `branch_status` 标记为完成。技能加载后,按 `comet/reference/decision-point.md` 暂停让用户选择:
110
+
111
+ 1. 本地合并到主分支
112
+ 2. 推送并创建 PR
113
+ 3. 保持当前分支稍后处理
114
+
115
+ 归档已经完成,因此这里不提供“丢弃工作”选项。只有用户选择的操作成功完成(或明确选择保持分支)后,才运行:
116
+
117
+ ```bash
118
+ comet state set <change-name> branch_status handled
119
+ comet guard <change-name> archive
120
+ comet state clear-selection
121
+ ```
122
+
123
+ archive guard 必须同时确认归档产物完整且 `branch_status: handled`;失败时流程仍未完成。
106
124
 
107
125
  ## 退出条件
108
126
 
109
127
  - 归档脚本执行成功(退出码 0)
110
128
  - 归档目录 `openspec/changes/archive/YYYY-MM-DD-<change-name>/` 存在
111
129
  - 归档后的 `.comet.yaml` 中 `archived: true`
130
+ - 归档改动已通过精确 pathspec 提交
131
+ - 用户选择的分支处理已完成,归档状态中的 `branch_status: handled`
132
+ - `comet guard <change-name> archive` 通过
112
133
 
113
134
  归档脚本会把 `openspec/changes/<name>/` 移动到 `openspec/changes/archive/YYYY-MM-DD-<name>/`。
114
135
 
115
- > **WARNING**: 归档成功后**不要再对原 change 名运行** `comet guard <change-name> archive`,因为原活跃目录已经不存在。误调会导致 guard 报错"change directory not found"。归档完整性以脚本退出码和归档目录状态为准。
136
+ `comet guard <change-name> archive` 会按原 change 名解析实际归档目录;不要手工拼接日期目录名。
116
137
 
117
138
  ## 完成
118
139
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: comet-build
3
- description: "Use when full Comet change 已完成 design 阶段,需要创建/恢复实施计划、选择执行方式或继续 build 阶段任务。"
3
+ description: "仅在用户明确调用 /comet-build,或由 Comet Skill/runtime 路由到 full workflow 的 build 阶段时使用;创建或恢复实施计划并执行任务。"
4
4
  ---
5
5
 
6
6
  # Comet 阶段 3:计划与构建(Build)
@@ -23,7 +23,7 @@ comet state check <name> build
23
23
 
24
24
  验证通过后继续 Step 1。验证失败时脚本会输出具体失败原因。
25
25
 
26
- **幂等性**:build 阶段所有操作可安全重复执行。读取 `.comet.yaml` 的 `phase` 字段确认仍在 build 阶段,读取 plan 文件头的 `base-ref`,再用 `grep -n '\- \[ \]' tasks.md | head -1` 找到第一个未勾选任务继续执行。已提交的任务不得重复提交。
26
+ **幂等性**:build 阶段所有操作可安全重复执行。读取 `.comet.yaml` 的 `phase` 字段确认仍在 build 阶段,读取 plan 文件头的 `base-ref`,再按文档顺序解析 tasks.md 的复选框,从第一个未勾选任务继续执行。已提交的任务不得重复提交。
27
27
 
28
28
  ### 1. 制定计划(Subagent Offload)
29
29
 
@@ -65,7 +65,7 @@ Subagent 完成后:
65
65
  - 若返回有效文件路径且文件存在,记录为 plan
66
66
  - 若 subagent 失败或返回路径无效,在主 session 内联加载 Superpowers `writing-plans` 技能创建计划(降级回退)
67
67
 
68
- ### 2. 更新计划状态并提供 plan-ready 暂停点
68
+ ### 2. 更新计划状态并联合确认工作方式
69
69
 
70
70
  先记录 plan 路径:
71
71
 
@@ -75,16 +75,18 @@ comet state set <name> plan docs/superpowers/plans/YYYY-MM-DD-feature.md
75
75
 
76
76
  无需手动更新 phase,阶段守卫(guard `--apply`)会在退出条件满足后推进 `phase` 字段。
77
77
 
78
- 计划写入后,立即提供一个新的用户决策点:
78
+ 展示联合决策前先检查当前平台能力:确认 `using-git-worktrees` 是否可用、是否存在真实后台 subagent/Task/multi-agent 调度能力,以及当前仓库能否安全创建分支。只展示当前真实可执行的隔离与执行选项;某个字段只剩一个合法值时说明原因并直接采用,不为单选项制造额外停顿。
79
+
80
+ 计划写入后只提供**一个联合决策点**,一次收集:是否现在继续、可用的工作区隔离、可用的执行方式、TDD 模式和代码审查模式。选择 `branch` 时,分支名也必须在 Step 2 的同一个联合决策中确认或由用户覆盖。不得先询问“继续/暂停”,继续后又创建第二个配置或命名阻塞点。
79
81
 
80
82
  | 选项 | 行为 | 说明 |
81
83
  |------|------|------|
82
- | A | 继续执行 | 保持在当前模型中,进入 Step 3 选择工作区隔离、执行方式、TDD 模式和代码审查模式 |
84
+ | A | 继续执行并提交配置 | 在同一次回复中选择 Step 3 的隔离、执行、TDD 和审查配置;如选择 branch,同时提交分支名 |
83
85
  | B | 暂停切换模型 | 记录 `build_pause: plan-ready`,本次 `/comet-build` 停止,用户稍后可从 `/comet` 或 `/comet-build` 恢复 |
84
86
 
85
- 这是用户决策点。**必须按 `comet/reference/decision-point.md` 的协议暂停并等待用户明确选择**,不得自动继续,也不得把暂停写入 `build_mode`。
87
+ 这是用户决策点。**必须按 `comet/reference/decision-point.md` 的协议一次性展示计划摘要、暂停选项和 Step 3 全部可执行配置**。用户选择继续时,必须在同一回复中给出所有配置以及条件性的分支名;不得自动选择,也不得把暂停写入 `build_mode`。
86
88
 
87
- 用户选择继续时:
89
+ 用户选择继续并给出完整配置时:
88
90
 
89
91
  ```bash
90
92
  comet state set <name> build_pause null
@@ -98,17 +100,17 @@ comet state set <name> build_pause plan-ready
98
100
 
99
101
  设置 `build_pause: plan-ready` 后,当前调用停止。不要选择 `isolation` 或 `build_mode`,不要加载执行技能。
100
102
 
101
- ### 3. 选择工作方式
103
+ ### 3. 应用已确认的工作方式
102
104
 
103
- 如果恢复时检测到 `build_pause: plan-ready` 且 `plan` 文件存在,不要重新运行 `writing-plans`。先告知用户当前停在 plan-ready 暂停点;用户确认继续后,设置:
105
+ 如果恢复时检测到 `build_pause: plan-ready` 且 `plan` 文件存在,不要重新运行 `writing-plans`。重新发起 Step 2 的同一个联合决策;只有用户同时给出完整配置后才清除暂停:
104
106
 
105
107
  ```bash
106
108
  comet state set <name> build_pause null
107
109
  ```
108
110
 
109
- 然后继续本步骤选择工作区隔离、执行方式、TDD 模式和代码审查模式。
111
+ 然后应用本步骤中的工作区隔离、执行方式、TDD 模式和代码审查模式。
110
112
 
111
- 计划已写入当前分支。在开始执行前,**一次性询问用户**选择工作区隔离方式、执行方式、TDD 模式和代码审查模式:
113
+ 计划已写入当前分支。以下配置必须由 Step 2 的联合决策一次性确认:
112
114
 
113
115
  **工作区隔离**:
114
116
 
@@ -133,7 +135,7 @@ comet state set <name> build_pause null
133
135
  - 任务数 ≤ 2 且无跨模块依赖 → 推荐 B
134
136
  - 来自 hotfix 路径 → 推荐 B
135
137
 
136
- 这是用户决策点。**必须按 `comet/reference/decision-point.md` 的协议暂停并等待用户明确选择隔离方式、执行方式、TDD 模式和代码审查模式**,不得根据推荐规则自行选择 `branch` 或 `worktree`,也不得根据推荐规则自行选择执行方式、TDD 模式或代码审查模式。推荐规则只能用于说明建议,不能替代用户确认。
138
+ 这些表格是 Step 2 联合决策的一部分,不再单独暂停。先移除能力预检判定为不可执行的选项;在剩余多个合法选项时,不得根据推荐规则自行选择 `branch` 或 `worktree`,也不得自行选择执行方式、TDD 模式或代码审查模式。推荐规则只能用于说明建议,不能替代用户确认。
137
139
 
138
140
  用户选择后,更新 `isolation`、执行方式、TDD 模式和代码审查模式相关字段:
139
141
 
@@ -143,14 +145,14 @@ comet state set <name> isolation <branch|worktree>
143
145
 
144
146
  - 若用户选择 `executing-plans`:运行 `comet state set <name> subagent_dispatch null`,再运行 `comet state set <name> build_mode executing-plans`
145
147
  - 若用户选择 `subagent-driven-development`:先确认当前平台存在可调用的真实后台 subagent / Task / multi-agent 调度能力;确认后先运行 `comet state set <name> subagent_dispatch confirmed`,再运行 `comet state set <name> build_mode subagent-driven-development`
146
- - 若无法确认真实后台调度能力,不得写入 `build_mode: subagent-driven-development`;必须暂停等待用户改选 `executing-plans`
148
+ - 若无法确认真实后台调度能力,不得展示或写入 `build_mode: subagent-driven-development`。恢复状态若已记录该模式但能力不可用,回到 Step 2 的同一个联合决策并只展示可执行模式;不得另设“改选 executing-plans”停顿点
147
149
 
148
150
  **TDD 模式**:
149
151
 
150
152
  | 选项 | 含义 | 适用场景 |
151
153
  |------|------|---------|
152
154
  | `tdd` | 每个任务先写失败测试再写实现 | 推荐。变更涉及业务逻辑、新功能、API |
153
- | `direct` | 直接实现,不强制 TDD 流程 | 变更不需要测试覆盖,或用户选择跳过测试直接写代码。hotfix/tweak 预设默认使用 `direct` |
155
+ | `direct` | 实现优先,不强制逐任务 Red-Green-Refactor | 仍需运行相关测试并为 bug 修复保留回归证据;hotfix/tweak 预设默认使用 `direct` |
154
156
 
155
157
  运行 `comet state set <name> tdd_mode <tdd|direct>`
156
158
 
@@ -183,18 +185,18 @@ comet state set <name> build_mode direct
183
185
 
184
186
  **执行隔离**:
185
187
 
186
- - **branch**:根据 workflow 类型和当前日期推荐分支名,然后让用户确认或输入自定义名称。这是用户决策点——**必须使用当前平台可用的用户输入/确认机制暂停并等待用户明确确认或覆盖分支名**,不得跳过此步骤直接创建分支。
188
+ - **branch**:使用 Step 2 已确认的分支名,不得再次暂停。若旧状态恢复时缺少该次联合决策中的分支名,重新进入 Step 2 的同一个联合决策;不得创建第二个独立分支命名决策点。
187
189
 
188
190
  分支命名规范:
189
191
  - 读取 `.comet.yaml` 的 `workflow` 字段确定前缀
190
192
  - `workflow: full` → 推荐 `feature/YYYYMMDD/<change-name>`
191
193
  - `workflow: hotfix` → 推荐 `hotfix/YYYYMMDD/<change-name>`
192
194
  - `workflow: tweak` → 推荐 `tweak/YYYYMMDD/<change-name>`
193
- - 日期取运行时 `date +%Y%m%d` 的结果
195
+ - 日期取当前运行环境日期并格式化为 `YYYYMMDD`,不得依赖某一种 shell 的日期命令
194
196
 
195
197
  示例:如果 change 名称为 `fix-login-bug`,今天是 2026-06-09,则推荐 `feature/20260609/fix-login-bug`
196
198
 
197
- 用户确认或提供自定义分支名后,执行 `git checkout -b <branch-name>`,后续工作在新分支上进行。
199
+ 分支名由 Step 2 确认后,立即执行 `git checkout -b <branch-name>`,后续工作在新分支上进行。
198
200
 
199
201
  - **worktree**:必须使用 Skill 工具加载 Superpowers `using-git-worktrees` 技能创建隔离工作区。禁止用普通 shell 命令或原生工具绕过该技能;如该技能不可用,停止流程并提示安装或启用 Superpowers 技能。
200
202
 
@@ -217,7 +219,7 @@ comet state select <change-name>
217
219
 
218
220
  - `build_mode: executing-plans`:**立即执行:** 使用 Skill 工具加载 Superpowers `executing-plans` 技能。禁止跳过此步骤。若该技能不可用,停止流程并提示安装或启用对应技能,不要用普通对话替代该步骤。技能加载后,ARGUMENTS 必须包含与 Step 1 相同的 Language 约束:`Language: 使用 comet state get <name> language 读取到的 Comet 配置产物语言输出`。按计划执行。
219
221
  - `build_mode: subagent-driven-development`:主会话只负责协调,禁止直接编写实现代码。**立即执行:** 使用 Skill 工具加载 Superpowers `subagent-driven-development` 技能。技能加载后,读取 `comet/reference/subagent-dispatch.md` 获取 Comet 专属扩展(真实后台调度、任务隔离、勾选验证、TDD 约束、连续执行、上下文恢复),与技能工作流配合应用。若两者发生冲突,以更具体的 Comet 扩展为准。
220
- - 如果当前平台没有真实后台 agent 调度能力,必须暂停并等待用户选择改用主窗口执行。用户选择改用主窗口执行后,必须先运行 `comet state set <name> build_mode executing-plans`,再按 `build_mode: executing-plans` 分支加载 Superpowers `executing-plans` 技能。用户未明确选择前,不得继续执行任务。
222
+ - 如果执行前复检发现后台调度能力已失效,不得直接在主窗口执行,也不得创建新的二次决策;返回 Step 2 的同一个联合决策,移除不可用模式。用户在该联合决策中选择主窗口执行后,先运行 `comet state set <name> build_mode executing-plans`,再按对应分支继续。
221
223
 
222
224
  **TDD 模式执行约束**:
223
225
 
@@ -237,7 +239,7 @@ comet state select <change-name>
237
239
 
238
240
  要求(适用于 `standard` 和 `thorough`):
239
241
  - `requesting-code-review` 技能必须在 `comet guard <change-name> build --apply` 之前加载
240
- - 若 `requesting-code-review` 技能不可用,跳过 review gate 但必须在 tasks.md 中记录 `<!-- review skipped: skill unavailable -->`,并继续 guard 流转
242
+ - 若 `requesting-code-review` 技能不可用且当前为 `standard` `thorough`,必须停止并请用户选择:安装/启用后重试,或明确切换为 `review_mode: off` 并记录原因。用户未明确切换前不得跳过 review gate 或继续 guard
241
243
  - CRITICAL review 发现(安全漏洞、数据丢失风险、构建/测试失败)必须先修复,不得带入 verify
242
244
  - 非 CRITICAL review 发现如选择接受,必须在 tasks.md、commit body、验证报告草稿或其他持久产物中记录接受原因和影响范围
243
245
 
@@ -275,7 +277,7 @@ comet state select <change-name>
275
277
 
276
278
  Build 是最长阶段,可能跨越大量任务。为支持上下文压缩后断点恢复:
277
279
 
278
- - **每完成一个 task**:按当前执行分支和 `review_mode` 完成验收后再勾选对应任务并提交。`subagent-driven-development` 在 `off` 时不派发每任务 reviewer;`standard` 下仅当任务命中风险信号时派发;`thorough` 下每个任务都派发每任务 reviewer。所有模式都必须按任务唯一文本完成定向检查。可用 `grep -c '\- \[ \]' tasks.md` 检查剩余未勾选数,无需重新读取整个文件
280
+ - **每完成一个 task**:按当前执行分支和 `review_mode` 完成验收后再勾选对应任务并提交。`subagent-driven-development` 在 `off` 时不派发每任务 reviewer;`standard` 下仅当任务命中风险信号时派发;`thorough` 下每个任务都派发每任务 reviewer。所有模式都必须按任务唯一文本完成定向检查。通过解析 tasks.md 复选框统计剩余任务,无需反复读取与当前任务无关的正文
279
281
  - **上下文压缩后恢复**:按 `comet/reference/context-recovery.md` 执行,phase 参数为 `build`。
280
282
  - **用户手动修改恢复**:按 `comet/reference/dirty-worktree.md` 协议处理未提交改动。该协议定义了检查步骤、归因分类和禁令。build 阶段的特殊处理:
281
283
  1. 归因后,若 diff 暗示计划或 spec 已变化,按 Step 4「Spec 增量更新」分级处理
@@ -320,5 +322,5 @@ comet state next <change-name>
320
322
  ```
321
323
 
322
324
  - `NEXT: auto` → 调用 `SKILL` 指向的 skill 进入下一阶段
323
- - `NEXT: manual` → 不要调用下一 skill,按 `HINT` 提示用户手动运行 `/<SKILL>`
325
+ - `NEXT: manual` → 不调用下一 skill,按 `HINT` 交还控制权并结束当前调用;不再创建确认点
324
326
  - `NEXT: done` → 流程已完成,无需继续
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: comet-design
3
- description: "Use when full Comet change 已完成 open 阶段但缺少 Superpowers Design Doc,或 design 阶段需要从 OpenSpec 交接包恢复。"
3
+ description: "仅在用户明确调用 /comet-design,或由 Comet Skill/runtime 路由到 full workflow design 阶段时使用;创建或恢复深度技术 Design Doc。"
4
4
  ---
5
5
 
6
6
  # Comet 阶段 2:深度设计(Design)
@@ -20,7 +20,7 @@ description: "Use when full Comet change 已完成 open 阶段但缺少 Superpow
20
20
 
21
21
  ```bash
22
22
  comet state select <change-name>
23
- node "$COMET_STATE" check <name> design
23
+ comet state check <name> design
24
24
  ```
25
25
 
26
26
  验证通过后继续 Step 1。验证失败时脚本会输出具体失败原因。
@@ -32,7 +32,7 @@ node "$COMET_STATE" check <name> design
32
32
  **必须由脚本生成,不允许 agent 临场手写 summary 代替。**
33
33
 
34
34
  ```bash
35
- node "$COMET_HANDOFF" <change-name> design --write
35
+ comet handoff <change-name> design --write
36
36
  ```
37
37
 
38
38
  脚本会根据 change `.comet.yaml` 的 `context_compression` 快照生成并记录交接包。
@@ -71,7 +71,7 @@ beta 交接包是 **结构化 spec projection**,用于减少 OpenSpec 原文 t
71
71
  如确实需要全文上下文,可显式运行:
72
72
 
73
73
  ```bash
74
- node "$COMET_HANDOFF" <change-name> design --write --full
74
+ comet handoff <change-name> design --write --full
75
75
  ```
76
76
 
77
77
  交接包来源来自 OpenSpec open 阶段产物:
@@ -87,7 +87,7 @@ node "$COMET_HANDOFF" <change-name> design --write --full
87
87
  技能加载时,ARGUMENTS 必须包含:
88
88
 
89
89
  ```text
90
- Language: 使用 `"$COMET_BASH" "$COMET_STATE" get <name> language` 读取到的 Comet 配置产物语言输出
90
+ Language: 使用 `comet state get <name> language` 读取到的 Comet 配置产物语言输出
91
91
  ```
92
92
 
93
93
  技能加载后,按其指引使用以下上下文:
@@ -147,9 +147,7 @@ brainstorming 产出设计方案后,**必须按 `comet/reference/decision-poin
147
147
 
148
148
  用户确认设计方案后,在创建 Design Doc 前,创建或更新已增量维护的检查点文件,将其定稿为确认后的设计方案摘要:
149
149
 
150
- ```bash
151
- mkdir -p openspec/changes/<name>/.comet/handoff
152
- ```
150
+ 使用当前平台的文件能力确保 `openspec/changes/<name>/.comet/handoff/` 存在;不要依赖 POSIX 专用目录命令。
153
151
 
154
152
  `openspec/changes/<name>/.comet/handoff/brainstorm-summary.md` 结构:
155
153
 
@@ -181,14 +179,9 @@ mkdir -p openspec/changes/<name>/.comet/handoff
181
179
  - `openspec/changes/<name>/.comet/handoff/design-context.md`(或 beta 模式的 `spec-context.md`)
182
180
  - `openspec/changes/<name>/.comet/handoff/design-context.json`(或 beta 模式的 `spec-context.json`)
183
181
 
184
- ### 1e. 主动式上下文压缩
185
-
186
- 完成 Step 1d 并确认 `brainstorm-summary.md` 已写入后,进入 Design Doc 创建前的主动式上下文压缩。此时 OpenSpec 交接包、brainstorming 决策和待确认项都已落盘,应主动释放前面读取 Spec 和 brainstorming 消耗的上下文,为 Step 2 及后续 Build 阶段保留窗口。
182
+ ### 1e. 压缩策略(此处不阻塞)
187
183
 
188
- 执行规则:
189
- - 如果当前平台提供原生上下文压缩/清理机制(例如宿主 Agent 的 compact/compaction 命令、工具或 UI 操作),必须在这里触发一次主动压缩;不要尝试用 shell 脚本伪造压缩命令。
190
- - 压缩恢复提示必须包含 change 名称、当前步骤(Design Step 2)、以及上方三类需重新加载的 handoff 文件。
191
- - 如果当前平台无法由 agent 程序化触发压缩,必须暂停并提示用户在宿主平台执行手动压缩;用户确认无法压缩或要求继续时,才继续 Step 2。
184
+ `brainstorm-summary.md` 是恢复检查点,但 Design Doc 尚未落盘时不得主动丢弃当前设计上下文。直接进入 Step 2;上下文压缩移到 Design Doc、状态和最新 handoff 全部持久化之后执行。
192
185
 
193
186
  ### 2. 创建 Design Doc
194
187
 
@@ -215,17 +208,25 @@ canonical_spec: openspec
215
208
 
216
209
  ```bash
217
210
  # 记录 design_doc 路径
218
- node "$COMET_STATE" set <name> design_doc docs/superpowers/specs/YYYY-MM-DD-topic-design.md
211
+ comet state set <name> design_doc docs/superpowers/specs/YYYY-MM-DD-topic-design.md
219
212
 
220
213
  # 如有 delta spec 变更,重新生成 handoff(更新 hash)
221
- node "$COMET_HANDOFF" <change-name> design --write
214
+ comet handoff <change-name> design --write
222
215
 
223
216
  # 阶段守卫推进 phase 到下一阶段
224
- node "$COMET_GUARD" <change-name> design --apply
217
+ comet guard <change-name> design --apply
225
218
  ```
226
219
 
227
220
  如果没有 delta spec 变更,跳过 handoff 重新生成步骤。状态文件自动更新,无需手动编辑其他字段。
228
221
 
222
+ ### 3a. 可选主动式上下文压缩
223
+
224
+ 只在 **Design Doc 和状态证据落盘后**、进入 Build 前考虑主动式压缩。先确认 `design_doc`、最新 handoff、`handoff_hash` 和 design guard 均已成功持久化;这样压缩后可从文件恢复,不会丢失尚未写入的设计判断。
225
+
226
+ - 当前平台提供可由 agent 调用的原生压缩机制,且上下文窗口确有压力时,可以触发一次,并在恢复提示中列出 change、下一步和需重新加载的 Design Doc/handoff 文件
227
+ - 当前平台只能由用户手动压缩时,给出一次非阻塞建议并继续;**无法程序化触发时不得阻塞**、不得额外制造确认点
228
+ - 不得用 shell 命令或摘要替代宿主平台的真实压缩机制
229
+
229
230
  ## 退出条件
230
231
 
231
232
  - Design Doc 已创建并保存
@@ -236,12 +237,12 @@ node "$COMET_GUARD" <change-name> design --apply
236
237
  - beta 模式下,`spec-context.json` 必须结构合法且引用当前源文件(由 guard 强制校验)
237
238
  - 如有新能力或补充验收场景,OpenSpec delta spec 已创建/更新
238
239
  - `design_doc` 已写入 `.comet.yaml`
239
- - **阶段守卫**:运行 `node "$COMET_GUARD" <change-name> design --apply`,全部 PASS 后由守卫推进到 `phase: build`(此步骤更新 `phase` 字段,与 `auto_transition` 无关)
240
+ - **阶段守卫**:运行 `comet guard <change-name> design --apply`,全部 PASS 后由守卫推进到 `phase: build`(此步骤更新 `phase` 字段,与 `auto_transition` 无关)
240
241
 
241
242
  退出前必须使用 `--apply`:
242
243
 
243
244
  ```bash
244
- node "$COMET_GUARD" <change-name> design --apply
245
+ comet guard <change-name> design --apply
245
246
  ```
246
247
 
247
248
  ## 上下文压缩恢复
@@ -253,9 +254,9 @@ node "$COMET_GUARD" <change-name> design --apply
253
254
  按 `comet/reference/auto-transition.md` 执行。关键命令:
254
255
 
255
256
  ```bash
256
- node "$COMET_STATE" next <change-name>
257
+ comet state next <change-name>
257
258
  ```
258
259
 
259
260
  - `NEXT: auto` → 调用 `SKILL` 指向的 skill 进入下一阶段
260
- - `NEXT: manual` → 不要调用下一 skill,按 `HINT` 提示用户手动运行 `/<SKILL>`
261
+ - `NEXT: manual` → 不调用下一 skill,按 `HINT` 交还控制权并结束当前调用;不再创建确认点
261
262
  - `NEXT: done` → 流程已完成,无需继续