@rpamis/comet 0.3.9 → 0.4.0-beta.1

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 (624) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +371 -222
  3. package/assets/manifest.json +33 -12
  4. package/assets/skills/comet/SKILL.md +87 -102
  5. package/assets/skills/comet/reference/auto-transition.md +1 -1
  6. package/assets/skills/comet/reference/comet-yaml-fields.md +11 -4
  7. package/assets/skills/comet/reference/context-recovery.md +12 -2
  8. package/assets/skills/comet/reference/debug-gate.md +17 -1
  9. package/assets/skills/comet/reference/decision-point.md +13 -2
  10. package/assets/skills/comet/reference/intent-frame.md +74 -0
  11. package/assets/skills/comet/reference/scripts.md +69 -0
  12. package/assets/skills/comet/reference/subagent-dispatch.md +79 -23
  13. package/assets/skills/comet/rules/comet-phase-guard.en.md +18 -10
  14. package/assets/skills/comet/rules/comet-phase-guard.md +17 -10
  15. package/assets/skills/comet/runtime/classic/checks.yaml +6 -0
  16. package/assets/skills/comet/runtime/classic/guardrails.yaml +13 -0
  17. package/assets/skills/comet/runtime/classic/skill.yaml +122 -0
  18. package/assets/skills/comet/scripts/comet-archive.mjs +3 -0
  19. package/assets/skills/comet/scripts/comet-env.mjs +15 -0
  20. package/assets/skills/comet/scripts/comet-guard.mjs +3 -0
  21. package/assets/skills/comet/scripts/comet-handoff.mjs +3 -0
  22. package/assets/skills/comet/scripts/comet-hook-guard.mjs +3 -0
  23. package/assets/skills/comet/scripts/comet-intent.mjs +3 -0
  24. package/assets/skills/comet/scripts/comet-runtime.mjs +12857 -0
  25. package/assets/skills/comet/scripts/comet-state.mjs +3 -0
  26. package/assets/skills/comet/scripts/comet-yaml-validate.mjs +3 -0
  27. package/assets/skills/comet-any/SKILL.md +118 -0
  28. package/assets/skills/comet-any/reference/authored-zone-example.md +100 -0
  29. package/assets/skills/comet-any/reference/authoring-protocol.json +91 -0
  30. package/assets/skills/comet-any/reference/authoring-subagents.md +102 -0
  31. package/assets/skills/comet-any/reference/bundle-authoring.md +166 -0
  32. package/assets/skills/comet-any/reference/eval-provider.md +83 -0
  33. package/assets/skills/comet-any/reference/subagents/pause-points-author.md +75 -0
  34. package/assets/skills/comet-any/reference/subagents/reference-author.md +77 -0
  35. package/assets/skills/comet-any/reference/subagents/script-author.md +81 -0
  36. package/assets/skills/comet-any/reference/subagents/skill-core-author.md +129 -0
  37. package/assets/skills/comet-any/reference/subagents/skill-reviewer.md +124 -0
  38. package/assets/skills/comet-any/reference/subagents/workflow-entry-author.md +100 -0
  39. package/assets/skills/comet-archive/SKILL.md +25 -15
  40. package/assets/skills/comet-build/SKILL.md +51 -40
  41. package/assets/skills/comet-design/SKILL.md +14 -18
  42. package/assets/skills/comet-hotfix/SKILL.md +33 -43
  43. package/assets/skills/comet-open/SKILL.md +10 -20
  44. package/assets/skills/comet-tweak/SKILL.md +71 -65
  45. package/assets/skills/comet-verify/SKILL.md +31 -35
  46. package/assets/skills-zh/comet/SKILL.md +87 -101
  47. package/assets/skills-zh/comet/reference/auto-transition.md +3 -3
  48. package/assets/skills-zh/comet/reference/comet-yaml-fields.md +8 -4
  49. package/assets/skills-zh/comet/reference/context-recovery.md +11 -1
  50. package/assets/skills-zh/comet/reference/debug-gate.md +17 -1
  51. package/assets/skills-zh/comet/reference/decision-point.md +13 -2
  52. package/assets/skills-zh/comet/reference/intent-frame.md +74 -0
  53. package/assets/skills-zh/comet/reference/scripts.md +69 -0
  54. package/assets/skills-zh/comet/reference/subagent-dispatch.md +67 -18
  55. package/assets/skills-zh/comet/runtime/classic/checks.yaml +6 -0
  56. package/assets/skills-zh/comet/runtime/classic/guardrails.yaml +13 -0
  57. package/assets/skills-zh/comet/runtime/classic/skill.yaml +122 -0
  58. package/assets/skills-zh/comet-any/SKILL.md +118 -0
  59. package/assets/skills-zh/comet-any/reference/authored-zone-example.md +100 -0
  60. package/assets/skills-zh/comet-any/reference/authoring-protocol.json +91 -0
  61. package/assets/skills-zh/comet-any/reference/authoring-subagents.md +107 -0
  62. package/assets/skills-zh/comet-any/reference/bundle-authoring.md +166 -0
  63. package/assets/skills-zh/comet-any/reference/eval-provider.md +66 -0
  64. package/assets/skills-zh/comet-any/reference/subagents/pause-points-author.md +79 -0
  65. package/assets/skills-zh/comet-any/reference/subagents/reference-author.md +81 -0
  66. package/assets/skills-zh/comet-any/reference/subagents/script-author.md +84 -0
  67. package/assets/skills-zh/comet-any/reference/subagents/skill-core-author.md +129 -0
  68. package/assets/skills-zh/comet-any/reference/subagents/skill-reviewer.md +124 -0
  69. package/assets/skills-zh/comet-any/reference/subagents/workflow-entry-author.md +98 -0
  70. package/assets/skills-zh/comet-archive/SKILL.md +25 -15
  71. package/assets/skills-zh/comet-build/SKILL.md +41 -43
  72. package/assets/skills-zh/comet-design/SKILL.md +14 -18
  73. package/assets/skills-zh/comet-hotfix/SKILL.md +37 -47
  74. package/assets/skills-zh/comet-open/SKILL.md +12 -22
  75. package/assets/skills-zh/comet-tweak/SKILL.md +70 -63
  76. package/assets/skills-zh/comet-verify/SKILL.md +28 -30
  77. package/bin/comet.js +1 -1
  78. package/dist/{cli → app/cli}/index.d.ts.map +1 -1
  79. package/dist/app/cli/index.js +430 -0
  80. package/dist/app/cli/index.js.map +1 -0
  81. package/dist/app/commands/bundle.d.ts +51 -0
  82. package/dist/app/commands/bundle.d.ts.map +1 -0
  83. package/dist/app/commands/bundle.js +387 -0
  84. package/dist/app/commands/bundle.js.map +1 -0
  85. package/dist/app/commands/creator.d.ts +14 -0
  86. package/dist/app/commands/creator.d.ts.map +1 -0
  87. package/dist/app/commands/creator.js +82 -0
  88. package/dist/app/commands/creator.js.map +1 -0
  89. package/dist/app/commands/dashboard.d.ts +16 -0
  90. package/dist/app/commands/dashboard.d.ts.map +1 -0
  91. package/dist/app/commands/dashboard.js +53 -0
  92. package/dist/app/commands/dashboard.js.map +1 -0
  93. package/dist/{commands → app/commands}/doctor.d.ts +1 -1
  94. package/dist/app/commands/doctor.d.ts.map +1 -0
  95. package/dist/{commands → app/commands}/doctor.js +110 -60
  96. package/dist/app/commands/doctor.js.map +1 -0
  97. package/dist/app/commands/eval.d.ts +17 -0
  98. package/dist/app/commands/eval.d.ts.map +1 -0
  99. package/dist/app/commands/eval.js +169 -0
  100. package/dist/app/commands/eval.js.map +1 -0
  101. package/dist/app/commands/i18n.d.ts +4 -0
  102. package/dist/app/commands/i18n.d.ts.map +1 -0
  103. package/dist/{commands → app/commands}/i18n.js +22 -2
  104. package/dist/app/commands/i18n.js.map +1 -0
  105. package/dist/{commands → app/commands}/init.d.ts +3 -1
  106. package/dist/app/commands/init.d.ts.map +1 -0
  107. package/dist/{commands → app/commands}/init.js +81 -31
  108. package/dist/app/commands/init.js.map +1 -0
  109. package/dist/app/commands/platform-select-prompt.d.ts +38 -0
  110. package/dist/app/commands/platform-select-prompt.d.ts.map +1 -0
  111. package/dist/app/commands/platform-select-prompt.js +141 -0
  112. package/dist/app/commands/platform-select-prompt.js.map +1 -0
  113. package/dist/app/commands/publish.d.ts +7 -0
  114. package/dist/app/commands/publish.d.ts.map +1 -0
  115. package/dist/app/commands/publish.js +14 -0
  116. package/dist/app/commands/publish.js.map +1 -0
  117. package/dist/app/commands/skill.d.ts +23 -0
  118. package/dist/app/commands/skill.d.ts.map +1 -0
  119. package/dist/app/commands/skill.js +208 -0
  120. package/dist/app/commands/skill.js.map +1 -0
  121. package/dist/app/commands/status.d.ts.map +1 -0
  122. package/dist/app/commands/status.js +159 -0
  123. package/dist/app/commands/status.js.map +1 -0
  124. package/dist/{commands → app/commands}/uninstall.d.ts +1 -1
  125. package/dist/app/commands/uninstall.d.ts.map +1 -0
  126. package/dist/{commands → app/commands}/uninstall.js +3 -3
  127. package/dist/app/commands/uninstall.js.map +1 -0
  128. package/dist/{commands → app/commands}/update.d.ts +4 -3
  129. package/dist/app/commands/update.d.ts.map +1 -0
  130. package/dist/{commands → app/commands}/update.js +33 -10
  131. package/dist/app/commands/update.js.map +1 -0
  132. package/dist/config/repository-layout.json +98 -0
  133. package/dist/domains/bundle/authoring.d.ts +82 -0
  134. package/dist/domains/bundle/authoring.d.ts.map +1 -0
  135. package/dist/domains/bundle/authoring.js +185 -0
  136. package/dist/domains/bundle/authoring.js.map +1 -0
  137. package/dist/domains/bundle/bundle-platform.d.ts +39 -0
  138. package/dist/domains/bundle/bundle-platform.d.ts.map +1 -0
  139. package/dist/domains/bundle/bundle-platform.js +287 -0
  140. package/dist/domains/bundle/bundle-platform.js.map +1 -0
  141. package/dist/domains/bundle/candidates.d.ts +29 -0
  142. package/dist/domains/bundle/candidates.d.ts.map +1 -0
  143. package/dist/domains/bundle/candidates.js +37 -0
  144. package/dist/domains/bundle/candidates.js.map +1 -0
  145. package/dist/domains/bundle/compatibility-benchmark.d.ts +12 -0
  146. package/dist/domains/bundle/compatibility-benchmark.d.ts.map +1 -0
  147. package/dist/domains/bundle/compatibility-benchmark.js +224 -0
  148. package/dist/domains/bundle/compatibility-benchmark.js.map +1 -0
  149. package/dist/domains/bundle/compiler.d.ts +5 -0
  150. package/dist/domains/bundle/compiler.d.ts.map +1 -0
  151. package/dist/domains/bundle/compiler.js +106 -0
  152. package/dist/domains/bundle/compiler.js.map +1 -0
  153. package/dist/domains/bundle/distribute.d.ts +33 -0
  154. package/dist/domains/bundle/distribute.d.ts.map +1 -0
  155. package/dist/domains/bundle/distribute.js +166 -0
  156. package/dist/domains/bundle/distribute.js.map +1 -0
  157. package/dist/domains/bundle/draft.d.ts +19 -0
  158. package/dist/domains/bundle/draft.d.ts.map +1 -0
  159. package/dist/domains/bundle/draft.js +82 -0
  160. package/dist/domains/bundle/draft.js.map +1 -0
  161. package/dist/domains/bundle/eval.d.ts +36 -0
  162. package/dist/domains/bundle/eval.d.ts.map +1 -0
  163. package/dist/domains/bundle/eval.js +501 -0
  164. package/dist/domains/bundle/eval.js.map +1 -0
  165. package/dist/domains/bundle/factory-compose.d.ts +12 -0
  166. package/dist/domains/bundle/factory-compose.d.ts.map +1 -0
  167. package/dist/domains/bundle/factory-compose.js +309 -0
  168. package/dist/domains/bundle/factory-compose.js.map +1 -0
  169. package/dist/domains/bundle/factory-guide.d.ts +37 -0
  170. package/dist/domains/bundle/factory-guide.d.ts.map +1 -0
  171. package/dist/domains/bundle/factory-guide.js +96 -0
  172. package/dist/domains/bundle/factory-guide.js.map +1 -0
  173. package/dist/domains/bundle/factory-plan.d.ts +48 -0
  174. package/dist/domains/bundle/factory-plan.d.ts.map +1 -0
  175. package/dist/domains/bundle/factory-plan.js +172 -0
  176. package/dist/domains/bundle/factory-plan.js.map +1 -0
  177. package/dist/domains/bundle/factory-proposal.d.ts +31 -0
  178. package/dist/domains/bundle/factory-proposal.d.ts.map +1 -0
  179. package/dist/domains/bundle/factory-proposal.js +225 -0
  180. package/dist/domains/bundle/factory-proposal.js.map +1 -0
  181. package/dist/domains/bundle/factory-resolve.d.ts +11 -0
  182. package/dist/domains/bundle/factory-resolve.d.ts.map +1 -0
  183. package/dist/domains/bundle/factory-resolve.js +121 -0
  184. package/dist/domains/bundle/factory-resolve.js.map +1 -0
  185. package/dist/domains/bundle/factory.d.ts +17 -0
  186. package/dist/domains/bundle/factory.d.ts.map +1 -0
  187. package/dist/domains/bundle/factory.js +511 -0
  188. package/dist/domains/bundle/factory.js.map +1 -0
  189. package/dist/domains/bundle/hash.d.ts +3 -0
  190. package/dist/domains/bundle/hash.d.ts.map +1 -0
  191. package/dist/domains/bundle/hash.js +72 -0
  192. package/dist/domains/bundle/hash.js.map +1 -0
  193. package/dist/domains/bundle/load.d.ts +4 -0
  194. package/dist/domains/bundle/load.d.ts.map +1 -0
  195. package/dist/domains/bundle/load.js +355 -0
  196. package/dist/domains/bundle/load.js.map +1 -0
  197. package/dist/domains/bundle/next-action.d.ts +37 -0
  198. package/dist/domains/bundle/next-action.d.ts.map +1 -0
  199. package/dist/domains/bundle/next-action.js +185 -0
  200. package/dist/domains/bundle/next-action.js.map +1 -0
  201. package/dist/domains/bundle/platform.d.ts +21 -0
  202. package/dist/domains/bundle/platform.d.ts.map +1 -0
  203. package/dist/domains/bundle/platform.js +170 -0
  204. package/dist/domains/bundle/platform.js.map +1 -0
  205. package/dist/domains/bundle/preferences.d.ts +11 -0
  206. package/dist/domains/bundle/preferences.d.ts.map +1 -0
  207. package/dist/domains/bundle/preferences.js +17 -0
  208. package/dist/domains/bundle/preferences.js.map +1 -0
  209. package/dist/domains/bundle/publish.d.ts +14 -0
  210. package/dist/domains/bundle/publish.d.ts.map +1 -0
  211. package/dist/domains/bundle/publish.js +159 -0
  212. package/dist/domains/bundle/publish.js.map +1 -0
  213. package/dist/domains/bundle/readiness-user-summary.d.ts +25 -0
  214. package/dist/domains/bundle/readiness-user-summary.d.ts.map +1 -0
  215. package/dist/domains/bundle/readiness-user-summary.js +186 -0
  216. package/dist/domains/bundle/readiness-user-summary.js.map +1 -0
  217. package/dist/domains/bundle/review-summary.d.ts +36 -0
  218. package/dist/domains/bundle/review-summary.d.ts.map +1 -0
  219. package/dist/domains/bundle/review-summary.js +348 -0
  220. package/dist/domains/bundle/review-summary.js.map +1 -0
  221. package/dist/domains/bundle/state.d.ts +7 -0
  222. package/dist/domains/bundle/state.d.ts.map +1 -0
  223. package/dist/domains/bundle/state.js +132 -0
  224. package/dist/domains/bundle/state.js.map +1 -0
  225. package/dist/domains/bundle/types.d.ts +347 -0
  226. package/dist/domains/bundle/types.d.ts.map +1 -0
  227. package/dist/domains/bundle/types.js.map +1 -0
  228. package/dist/domains/bundle/user-facing.d.ts +48 -0
  229. package/dist/domains/bundle/user-facing.d.ts.map +1 -0
  230. package/dist/domains/bundle/user-facing.js +73 -0
  231. package/dist/domains/bundle/user-facing.js.map +1 -0
  232. package/dist/domains/bundle/validate.d.ts +5 -0
  233. package/dist/domains/bundle/validate.d.ts.map +1 -0
  234. package/dist/domains/bundle/validate.js +292 -0
  235. package/dist/domains/bundle/validate.js.map +1 -0
  236. package/dist/domains/comet-classic/classic-archive-entry.d.ts +2 -0
  237. package/dist/domains/comet-classic/classic-archive-entry.d.ts.map +1 -0
  238. package/dist/domains/comet-classic/classic-archive-entry.js +4 -0
  239. package/dist/domains/comet-classic/classic-archive-entry.js.map +1 -0
  240. package/dist/domains/comet-classic/classic-archive.d.ts +3 -0
  241. package/dist/domains/comet-classic/classic-archive.d.ts.map +1 -0
  242. package/dist/domains/comet-classic/classic-archive.js +392 -0
  243. package/dist/domains/comet-classic/classic-archive.js.map +1 -0
  244. package/dist/domains/comet-classic/classic-cli.d.ts +15 -0
  245. package/dist/domains/comet-classic/classic-cli.d.ts.map +1 -0
  246. package/dist/domains/comet-classic/classic-cli.js +94 -0
  247. package/dist/domains/comet-classic/classic-cli.js.map +1 -0
  248. package/dist/domains/comet-classic/classic-diagnostics.d.ts +16 -0
  249. package/dist/domains/comet-classic/classic-diagnostics.d.ts.map +1 -0
  250. package/dist/domains/comet-classic/classic-diagnostics.js +57 -0
  251. package/dist/domains/comet-classic/classic-diagnostics.js.map +1 -0
  252. package/dist/domains/comet-classic/classic-evidence.d.ts +10 -0
  253. package/dist/domains/comet-classic/classic-evidence.d.ts.map +1 -0
  254. package/dist/domains/comet-classic/classic-evidence.js +114 -0
  255. package/dist/domains/comet-classic/classic-evidence.js.map +1 -0
  256. package/dist/domains/comet-classic/classic-guard-entry.d.ts +2 -0
  257. package/dist/domains/comet-classic/classic-guard-entry.d.ts.map +1 -0
  258. package/dist/domains/comet-classic/classic-guard-entry.js +4 -0
  259. package/dist/domains/comet-classic/classic-guard-entry.js.map +1 -0
  260. package/dist/domains/comet-classic/classic-guard.d.ts +3 -0
  261. package/dist/domains/comet-classic/classic-guard.d.ts.map +1 -0
  262. package/dist/domains/comet-classic/classic-guard.js +833 -0
  263. package/dist/domains/comet-classic/classic-guard.js.map +1 -0
  264. package/dist/domains/comet-classic/classic-handoff-entry.d.ts +2 -0
  265. package/dist/domains/comet-classic/classic-handoff-entry.d.ts.map +1 -0
  266. package/dist/domains/comet-classic/classic-handoff-entry.js +4 -0
  267. package/dist/domains/comet-classic/classic-handoff-entry.js.map +1 -0
  268. package/dist/domains/comet-classic/classic-handoff.d.ts +3 -0
  269. package/dist/domains/comet-classic/classic-handoff.d.ts.map +1 -0
  270. package/dist/domains/comet-classic/classic-handoff.js +478 -0
  271. package/dist/domains/comet-classic/classic-handoff.js.map +1 -0
  272. package/dist/domains/comet-classic/classic-hook-guard-entry.d.ts +2 -0
  273. package/dist/domains/comet-classic/classic-hook-guard-entry.d.ts.map +1 -0
  274. package/dist/domains/comet-classic/classic-hook-guard-entry.js +4 -0
  275. package/dist/domains/comet-classic/classic-hook-guard-entry.js.map +1 -0
  276. package/dist/domains/comet-classic/classic-hook-guard.d.ts +3 -0
  277. package/dist/domains/comet-classic/classic-hook-guard.d.ts.map +1 -0
  278. package/dist/domains/comet-classic/classic-hook-guard.js +302 -0
  279. package/dist/domains/comet-classic/classic-hook-guard.js.map +1 -0
  280. package/dist/domains/comet-classic/classic-intent-command.d.ts +3 -0
  281. package/dist/domains/comet-classic/classic-intent-command.d.ts.map +1 -0
  282. package/dist/domains/comet-classic/classic-intent-command.js +40 -0
  283. package/dist/domains/comet-classic/classic-intent-command.js.map +1 -0
  284. package/dist/domains/comet-classic/classic-intent-entry.d.ts +2 -0
  285. package/dist/domains/comet-classic/classic-intent-entry.d.ts.map +1 -0
  286. package/dist/domains/comet-classic/classic-intent-entry.js +4 -0
  287. package/dist/domains/comet-classic/classic-intent-entry.js.map +1 -0
  288. package/dist/domains/comet-classic/classic-intent.d.ts +79 -0
  289. package/dist/domains/comet-classic/classic-intent.d.ts.map +1 -0
  290. package/dist/domains/comet-classic/classic-intent.js +307 -0
  291. package/dist/domains/comet-classic/classic-intent.js.map +1 -0
  292. package/dist/domains/comet-classic/classic-migrate.d.ts +18 -0
  293. package/dist/domains/comet-classic/classic-migrate.d.ts.map +1 -0
  294. package/dist/domains/comet-classic/classic-migrate.js +184 -0
  295. package/dist/domains/comet-classic/classic-migrate.js.map +1 -0
  296. package/dist/domains/comet-classic/classic-paths.d.ts +8 -0
  297. package/dist/domains/comet-classic/classic-paths.d.ts.map +1 -0
  298. package/dist/domains/comet-classic/classic-paths.js +61 -0
  299. package/dist/domains/comet-classic/classic-paths.js.map +1 -0
  300. package/dist/domains/comet-classic/classic-resolver.d.ts +10 -0
  301. package/dist/domains/comet-classic/classic-resolver.d.ts.map +1 -0
  302. package/dist/domains/comet-classic/classic-resolver.js +89 -0
  303. package/dist/domains/comet-classic/classic-resolver.js.map +1 -0
  304. package/dist/domains/comet-classic/classic-runtime-evals.d.ts +9 -0
  305. package/dist/domains/comet-classic/classic-runtime-evals.d.ts.map +1 -0
  306. package/dist/domains/comet-classic/classic-runtime-evals.js +45 -0
  307. package/dist/domains/comet-classic/classic-runtime-evals.js.map +1 -0
  308. package/dist/domains/comet-classic/classic-runtime-run.d.ts +7 -0
  309. package/dist/domains/comet-classic/classic-runtime-run.d.ts.map +1 -0
  310. package/dist/domains/comet-classic/classic-runtime-run.js +105 -0
  311. package/dist/domains/comet-classic/classic-runtime-run.js.map +1 -0
  312. package/dist/domains/comet-classic/classic-script-entry.d.ts +3 -0
  313. package/dist/domains/comet-classic/classic-script-entry.d.ts.map +1 -0
  314. package/dist/domains/comet-classic/classic-script-entry.js +31 -0
  315. package/dist/domains/comet-classic/classic-script-entry.js.map +1 -0
  316. package/dist/domains/comet-classic/classic-state-command.d.ts +3 -0
  317. package/dist/domains/comet-classic/classic-state-command.d.ts.map +1 -0
  318. package/dist/domains/comet-classic/classic-state-command.js +984 -0
  319. package/dist/domains/comet-classic/classic-state-command.js.map +1 -0
  320. package/dist/domains/comet-classic/classic-state-entry.d.ts +2 -0
  321. package/dist/domains/comet-classic/classic-state-entry.d.ts.map +1 -0
  322. package/dist/domains/comet-classic/classic-state-entry.js +4 -0
  323. package/dist/domains/comet-classic/classic-state-entry.js.map +1 -0
  324. package/dist/domains/comet-classic/classic-state-events.d.ts +18 -0
  325. package/dist/domains/comet-classic/classic-state-events.d.ts.map +1 -0
  326. package/dist/domains/comet-classic/classic-state-events.js +15 -0
  327. package/dist/domains/comet-classic/classic-state-events.js.map +1 -0
  328. package/dist/domains/comet-classic/classic-state.d.ts +69 -0
  329. package/dist/domains/comet-classic/classic-state.d.ts.map +1 -0
  330. package/dist/domains/comet-classic/classic-state.js +238 -0
  331. package/dist/domains/comet-classic/classic-state.js.map +1 -0
  332. package/dist/domains/comet-classic/classic-store.d.ts +7 -0
  333. package/dist/domains/comet-classic/classic-store.d.ts.map +1 -0
  334. package/dist/domains/comet-classic/classic-store.js +127 -0
  335. package/dist/domains/comet-classic/classic-store.js.map +1 -0
  336. package/dist/domains/comet-classic/classic-transitions.d.ts +24 -0
  337. package/dist/domains/comet-classic/classic-transitions.d.ts.map +1 -0
  338. package/dist/domains/comet-classic/classic-transitions.js +124 -0
  339. package/dist/domains/comet-classic/classic-transitions.js.map +1 -0
  340. package/dist/domains/comet-classic/classic-validate-command.d.ts +3 -0
  341. package/dist/domains/comet-classic/classic-validate-command.d.ts.map +1 -0
  342. package/dist/domains/comet-classic/classic-validate-command.js +154 -0
  343. package/dist/domains/comet-classic/classic-validate-command.js.map +1 -0
  344. package/dist/domains/comet-classic/classic-validate-entry.d.ts +2 -0
  345. package/dist/domains/comet-classic/classic-validate-entry.d.ts.map +1 -0
  346. package/dist/domains/comet-classic/classic-validate-entry.js +4 -0
  347. package/dist/domains/comet-classic/classic-validate-entry.js.map +1 -0
  348. package/dist/domains/comet-classic/index.d.ts +20 -0
  349. package/dist/domains/comet-classic/index.d.ts.map +1 -0
  350. package/dist/domains/comet-classic/index.js +20 -0
  351. package/dist/domains/comet-classic/index.js.map +1 -0
  352. package/dist/domains/dashboard/collector.d.ts +12 -0
  353. package/dist/domains/dashboard/collector.d.ts.map +1 -0
  354. package/dist/domains/dashboard/collector.js +475 -0
  355. package/dist/domains/dashboard/collector.js.map +1 -0
  356. package/dist/domains/dashboard/git.d.ts +8 -0
  357. package/dist/domains/dashboard/git.d.ts.map +1 -0
  358. package/dist/domains/dashboard/git.js +69 -0
  359. package/dist/domains/dashboard/git.js.map +1 -0
  360. package/dist/domains/dashboard/next-action.d.ts +17 -0
  361. package/dist/domains/dashboard/next-action.d.ts.map +1 -0
  362. package/dist/domains/dashboard/next-action.js +83 -0
  363. package/dist/domains/dashboard/next-action.js.map +1 -0
  364. package/dist/domains/dashboard/open-browser.d.ts +9 -0
  365. package/dist/domains/dashboard/open-browser.d.ts.map +1 -0
  366. package/dist/domains/dashboard/open-browser.js +40 -0
  367. package/dist/domains/dashboard/open-browser.js.map +1 -0
  368. package/dist/domains/dashboard/risk.d.ts +24 -0
  369. package/dist/domains/dashboard/risk.d.ts.map +1 -0
  370. package/dist/domains/dashboard/risk.js +97 -0
  371. package/dist/domains/dashboard/risk.js.map +1 -0
  372. package/dist/domains/dashboard/server.d.ts +21 -0
  373. package/dist/domains/dashboard/server.d.ts.map +1 -0
  374. package/dist/domains/dashboard/server.js +149 -0
  375. package/dist/domains/dashboard/server.js.map +1 -0
  376. package/dist/domains/dashboard/task-parser.d.ts +13 -0
  377. package/dist/domains/dashboard/task-parser.d.ts.map +1 -0
  378. package/dist/domains/dashboard/task-parser.js +82 -0
  379. package/dist/domains/dashboard/task-parser.js.map +1 -0
  380. package/dist/domains/dashboard/types.d.ts +122 -0
  381. package/dist/domains/dashboard/types.d.ts.map +1 -0
  382. package/dist/domains/dashboard/types.js +10 -0
  383. package/dist/domains/dashboard/types.js.map +1 -0
  384. package/dist/domains/dashboard/verify-parser.d.ts +18 -0
  385. package/dist/domains/dashboard/verify-parser.d.ts.map +1 -0
  386. package/dist/domains/dashboard/verify-parser.js +94 -0
  387. package/dist/domains/dashboard/verify-parser.js.map +1 -0
  388. package/dist/domains/dashboard/web/assets/demo-DQyfozbi.js +1 -0
  389. package/dist/domains/dashboard/web/assets/index-BcO3_QlT.css +1 -0
  390. package/dist/domains/dashboard/web/assets/index-CjU3VXVu.js +22 -0
  391. package/dist/domains/dashboard/web/favicon.png +0 -0
  392. package/dist/domains/dashboard/web/index.html +16 -0
  393. package/dist/domains/dashboard/yaml.d.ts +13 -0
  394. package/dist/domains/dashboard/yaml.d.ts.map +1 -0
  395. package/dist/domains/dashboard/yaml.js +61 -0
  396. package/dist/domains/dashboard/yaml.js.map +1 -0
  397. package/dist/domains/engine/evals.d.ts +4 -0
  398. package/dist/domains/engine/evals.d.ts.map +1 -0
  399. package/dist/domains/engine/evals.js +25 -0
  400. package/dist/domains/engine/evals.js.map +1 -0
  401. package/dist/domains/engine/guardrails.d.ts +10 -0
  402. package/dist/domains/engine/guardrails.d.ts.map +1 -0
  403. package/dist/domains/engine/guardrails.js +25 -0
  404. package/dist/domains/engine/guardrails.js.map +1 -0
  405. package/dist/domains/engine/loop.d.ts +15 -0
  406. package/dist/domains/engine/loop.d.ts.map +1 -0
  407. package/dist/domains/engine/loop.js +126 -0
  408. package/dist/domains/engine/loop.js.map +1 -0
  409. package/dist/domains/engine/manual-run.d.ts +30 -0
  410. package/dist/domains/engine/manual-run.d.ts.map +1 -0
  411. package/dist/domains/engine/manual-run.js +184 -0
  412. package/dist/domains/engine/manual-run.js.map +1 -0
  413. package/dist/domains/engine/resolver.d.ts +20 -0
  414. package/dist/domains/engine/resolver.d.ts.map +1 -0
  415. package/dist/domains/engine/resolver.js +36 -0
  416. package/dist/domains/engine/resolver.js.map +1 -0
  417. package/dist/domains/engine/run-store.d.ts +13 -0
  418. package/dist/domains/engine/run-store.d.ts.map +1 -0
  419. package/dist/domains/engine/run-store.js +100 -0
  420. package/dist/domains/engine/run-store.js.map +1 -0
  421. package/dist/domains/engine/runtime-types.d.ts +11 -0
  422. package/dist/domains/engine/runtime-types.d.ts.map +1 -0
  423. package/dist/domains/engine/runtime-types.js +2 -0
  424. package/dist/domains/engine/runtime-types.js.map +1 -0
  425. package/dist/domains/engine/standalone-run.d.ts +13 -0
  426. package/dist/domains/engine/standalone-run.d.ts.map +1 -0
  427. package/dist/domains/engine/standalone-run.js +27 -0
  428. package/dist/domains/engine/standalone-run.js.map +1 -0
  429. package/dist/domains/engine/state.d.ts +10 -0
  430. package/dist/domains/engine/state.d.ts.map +1 -0
  431. package/dist/domains/engine/state.js +160 -0
  432. package/dist/domains/engine/state.js.map +1 -0
  433. package/dist/domains/engine/types.d.ts +51 -0
  434. package/dist/domains/engine/types.d.ts.map +1 -0
  435. package/dist/domains/engine/types.js +2 -0
  436. package/dist/domains/engine/types.js.map +1 -0
  437. package/dist/domains/eval/index.d.ts +7 -0
  438. package/dist/domains/eval/index.d.ts.map +1 -0
  439. package/dist/domains/eval/index.js +11 -0
  440. package/dist/domains/eval/index.js.map +1 -0
  441. package/dist/domains/eval/repository-benchmarks.d.ts +6 -0
  442. package/dist/domains/eval/repository-benchmarks.d.ts.map +1 -0
  443. package/dist/domains/eval/repository-benchmarks.js +10 -0
  444. package/dist/domains/eval/repository-benchmarks.js.map +1 -0
  445. package/dist/domains/factory/artifacts.d.ts +53 -0
  446. package/dist/domains/factory/artifacts.d.ts.map +1 -0
  447. package/dist/domains/factory/artifacts.js +8 -0
  448. package/dist/domains/factory/artifacts.js.map +1 -0
  449. package/dist/domains/factory/package.d.ts +7 -0
  450. package/dist/domains/factory/package.d.ts.map +1 -0
  451. package/dist/domains/factory/package.js +1511 -0
  452. package/dist/domains/factory/package.js.map +1 -0
  453. package/dist/domains/factory/types.d.ts +127 -0
  454. package/dist/domains/factory/types.d.ts.map +1 -0
  455. package/dist/domains/factory/types.js +2 -0
  456. package/dist/domains/factory/types.js.map +1 -0
  457. package/dist/{core → domains/integrations}/codegraph.d.ts +1 -1
  458. package/dist/domains/integrations/codegraph.d.ts.map +1 -0
  459. package/dist/{core → domains/integrations}/codegraph.js +1 -1
  460. package/dist/domains/integrations/codegraph.js.map +1 -0
  461. package/dist/domains/integrations/openspec.d.ts +18 -0
  462. package/dist/domains/integrations/openspec.d.ts.map +1 -0
  463. package/dist/{core → domains/integrations}/openspec.js +102 -25
  464. package/dist/domains/integrations/openspec.js.map +1 -0
  465. package/dist/{core → domains/integrations}/superpowers.d.ts +10 -2
  466. package/dist/domains/integrations/superpowers.d.ts.map +1 -0
  467. package/dist/{core → domains/integrations}/superpowers.js +59 -13
  468. package/dist/domains/integrations/superpowers.js.map +1 -0
  469. package/dist/domains/skill/discovery.d.ts +17 -0
  470. package/dist/domains/skill/discovery.d.ts.map +1 -0
  471. package/dist/domains/skill/discovery.js +80 -0
  472. package/dist/domains/skill/discovery.js.map +1 -0
  473. package/dist/domains/skill/find.d.ts +41 -0
  474. package/dist/domains/skill/find.d.ts.map +1 -0
  475. package/dist/domains/skill/find.js +251 -0
  476. package/dist/domains/skill/find.js.map +1 -0
  477. package/dist/domains/skill/install.d.ts +11 -0
  478. package/dist/domains/skill/install.d.ts.map +1 -0
  479. package/dist/domains/skill/install.js +82 -0
  480. package/dist/domains/skill/install.js.map +1 -0
  481. package/dist/domains/skill/inventory.d.ts +19 -0
  482. package/dist/domains/skill/inventory.d.ts.map +1 -0
  483. package/dist/domains/skill/inventory.js +64 -0
  484. package/dist/domains/skill/inventory.js.map +1 -0
  485. package/dist/domains/skill/languages.d.ts +19 -0
  486. package/dist/domains/skill/languages.d.ts.map +1 -0
  487. package/dist/domains/skill/languages.js +21 -0
  488. package/dist/domains/skill/languages.js.map +1 -0
  489. package/dist/domains/skill/load.d.ts +5 -0
  490. package/dist/domains/skill/load.d.ts.map +1 -0
  491. package/dist/domains/skill/load.js +313 -0
  492. package/dist/domains/skill/load.js.map +1 -0
  493. package/dist/domains/skill/platform-install.d.ts +87 -0
  494. package/dist/domains/skill/platform-install.d.ts.map +1 -0
  495. package/dist/{core/skills.js → domains/skill/platform-install.js} +243 -51
  496. package/dist/domains/skill/platform-install.js.map +1 -0
  497. package/dist/domains/skill/preferences.d.ts +42 -0
  498. package/dist/domains/skill/preferences.d.ts.map +1 -0
  499. package/dist/domains/skill/preferences.js +118 -0
  500. package/dist/domains/skill/preferences.js.map +1 -0
  501. package/dist/domains/skill/snapshot.d.ts +8 -0
  502. package/dist/domains/skill/snapshot.d.ts.map +1 -0
  503. package/dist/domains/skill/snapshot.js +184 -0
  504. package/dist/domains/skill/snapshot.js.map +1 -0
  505. package/dist/domains/skill/types.d.ts +85 -0
  506. package/dist/domains/skill/types.d.ts.map +1 -0
  507. package/dist/domains/skill/types.js +2 -0
  508. package/dist/{core → domains/skill}/types.js.map +1 -1
  509. package/dist/{core → domains/skill}/uninstall.d.ts +2 -18
  510. package/dist/domains/skill/uninstall.d.ts.map +1 -0
  511. package/dist/{core → domains/skill}/uninstall.js +15 -66
  512. package/dist/domains/skill/uninstall.js.map +1 -0
  513. package/dist/domains/skill/validate.d.ts +3 -0
  514. package/dist/domains/skill/validate.d.ts.map +1 -0
  515. package/dist/domains/skill/validate.js +81 -0
  516. package/dist/domains/skill/validate.js.map +1 -0
  517. package/dist/domains/workflow-contract/builtins.d.ts +8 -0
  518. package/dist/domains/workflow-contract/builtins.d.ts.map +1 -0
  519. package/dist/domains/workflow-contract/builtins.js +229 -0
  520. package/dist/domains/workflow-contract/builtins.js.map +1 -0
  521. package/dist/domains/workflow-contract/hash.d.ts +3 -0
  522. package/dist/domains/workflow-contract/hash.d.ts.map +1 -0
  523. package/dist/domains/workflow-contract/hash.js +16 -0
  524. package/dist/domains/workflow-contract/hash.js.map +1 -0
  525. package/dist/domains/workflow-contract/index.d.ts +6 -0
  526. package/dist/domains/workflow-contract/index.d.ts.map +1 -0
  527. package/dist/domains/workflow-contract/index.js +5 -0
  528. package/dist/domains/workflow-contract/index.js.map +1 -0
  529. package/dist/domains/workflow-contract/normalize.d.ts +3 -0
  530. package/dist/domains/workflow-contract/normalize.d.ts.map +1 -0
  531. package/dist/domains/workflow-contract/normalize.js +146 -0
  532. package/dist/domains/workflow-contract/normalize.js.map +1 -0
  533. package/dist/domains/workflow-contract/types.d.ts +128 -0
  534. package/dist/domains/workflow-contract/types.d.ts.map +1 -0
  535. package/dist/domains/workflow-contract/types.js +2 -0
  536. package/dist/domains/workflow-contract/types.js.map +1 -0
  537. package/dist/domains/workflow-contract/validation.d.ts +3 -0
  538. package/dist/domains/workflow-contract/validation.d.ts.map +1 -0
  539. package/dist/domains/workflow-contract/validation.js +180 -0
  540. package/dist/domains/workflow-contract/validation.js.map +1 -0
  541. package/dist/platform/fs/file-system.d.ts.map +1 -0
  542. package/dist/platform/fs/file-system.js.map +1 -0
  543. package/dist/platform/install/detect.d.ts.map +1 -0
  544. package/dist/{core → platform/install}/detect.js +4 -3
  545. package/dist/platform/install/detect.js.map +1 -0
  546. package/dist/platform/install/platforms.d.ts.map +1 -0
  547. package/dist/{core → platform/install}/platforms.js +41 -0
  548. package/dist/platform/install/platforms.js.map +1 -0
  549. package/dist/platform/install/types.d.ts +3 -0
  550. package/dist/platform/install/types.d.ts.map +1 -0
  551. package/dist/platform/install/types.js +2 -0
  552. package/dist/platform/install/types.js.map +1 -0
  553. package/dist/platform/paths/repository-layout.d.ts +22 -0
  554. package/dist/platform/paths/repository-layout.d.ts.map +1 -0
  555. package/dist/platform/paths/repository-layout.js +11 -0
  556. package/dist/platform/paths/repository-layout.js.map +1 -0
  557. package/dist/platform/process/command-error.d.ts.map +1 -0
  558. package/dist/platform/process/command-error.js.map +1 -0
  559. package/dist/platform/process/shell-quote.d.ts +22 -0
  560. package/dist/platform/process/shell-quote.d.ts.map +1 -0
  561. package/dist/platform/process/shell-quote.js +34 -0
  562. package/dist/platform/process/shell-quote.js.map +1 -0
  563. package/dist/platform/version/version.d.ts.map +1 -0
  564. package/dist/{core → platform/version}/version.js +16 -3
  565. package/dist/platform/version/version.js.map +1 -0
  566. package/package.json +39 -13
  567. package/assets/skills/comet/scripts/comet-archive.sh +0 -311
  568. package/assets/skills/comet/scripts/comet-env.sh +0 -110
  569. package/assets/skills/comet/scripts/comet-guard.sh +0 -778
  570. package/assets/skills/comet/scripts/comet-handoff.sh +0 -390
  571. package/assets/skills/comet/scripts/comet-hook-guard.sh +0 -336
  572. package/assets/skills/comet/scripts/comet-state.sh +0 -1338
  573. package/assets/skills/comet/scripts/comet-yaml-validate.sh +0 -225
  574. package/dist/cli/index.js +0 -84
  575. package/dist/cli/index.js.map +0 -1
  576. package/dist/commands/doctor.d.ts.map +0 -1
  577. package/dist/commands/doctor.js.map +0 -1
  578. package/dist/commands/i18n.d.ts +0 -4
  579. package/dist/commands/i18n.d.ts.map +0 -1
  580. package/dist/commands/i18n.js.map +0 -1
  581. package/dist/commands/init.d.ts.map +0 -1
  582. package/dist/commands/init.js.map +0 -1
  583. package/dist/commands/status.d.ts.map +0 -1
  584. package/dist/commands/status.js +0 -108
  585. package/dist/commands/status.js.map +0 -1
  586. package/dist/commands/uninstall.d.ts.map +0 -1
  587. package/dist/commands/uninstall.js.map +0 -1
  588. package/dist/commands/update.d.ts.map +0 -1
  589. package/dist/commands/update.js.map +0 -1
  590. package/dist/core/codegraph.d.ts.map +0 -1
  591. package/dist/core/codegraph.js.map +0 -1
  592. package/dist/core/command-error.d.ts.map +0 -1
  593. package/dist/core/command-error.js.map +0 -1
  594. package/dist/core/detect.d.ts.map +0 -1
  595. package/dist/core/detect.js.map +0 -1
  596. package/dist/core/openspec.d.ts +0 -11
  597. package/dist/core/openspec.d.ts.map +0 -1
  598. package/dist/core/openspec.js.map +0 -1
  599. package/dist/core/platforms.d.ts.map +0 -1
  600. package/dist/core/platforms.js.map +0 -1
  601. package/dist/core/skills.d.ts +0 -58
  602. package/dist/core/skills.d.ts.map +0 -1
  603. package/dist/core/skills.js.map +0 -1
  604. package/dist/core/superpowers.d.ts.map +0 -1
  605. package/dist/core/superpowers.js.map +0 -1
  606. package/dist/core/types.d.ts +0 -2
  607. package/dist/core/types.d.ts.map +0 -1
  608. package/dist/core/uninstall.d.ts.map +0 -1
  609. package/dist/core/uninstall.js.map +0 -1
  610. package/dist/core/version.d.ts.map +0 -1
  611. package/dist/core/version.js.map +0 -1
  612. package/dist/utils/file-system.d.ts.map +0 -1
  613. package/dist/utils/file-system.js.map +0 -1
  614. /package/dist/{cli → app/cli}/index.d.ts +0 -0
  615. /package/dist/{commands → app/commands}/status.d.ts +0 -0
  616. /package/dist/{core → domains/bundle}/types.js +0 -0
  617. /package/dist/{utils → platform/fs}/file-system.d.ts +0 -0
  618. /package/dist/{utils → platform/fs}/file-system.js +0 -0
  619. /package/dist/{core → platform/install}/detect.d.ts +0 -0
  620. /package/dist/{core → platform/install}/platforms.d.ts +0 -0
  621. /package/dist/{core → platform/process}/command-error.d.ts +0 -0
  622. /package/dist/{core → platform/process}/command-error.js +0 -0
  623. /package/dist/{core → platform/version}/version.d.ts +0 -0
  624. /package/scripts/{postinstall.js → install/postinstall.js} +0 -0
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.3.8",
2
+ "version": "0.4.0-beta.1",
3
3
  "skills": [
4
4
  "comet/SKILL.md",
5
5
  "comet/reference/auto-transition.md",
@@ -9,14 +9,29 @@
9
9
  "comet/reference/decision-point.md",
10
10
  "comet/reference/dirty-worktree.md",
11
11
  "comet/reference/file-structure.md",
12
+ "comet/reference/intent-frame.md",
13
+ "comet/reference/scripts.md",
12
14
  "comet/reference/subagent-dispatch.md",
13
- "comet/scripts/comet-env.sh",
14
- "comet/scripts/comet-guard.sh",
15
- "comet/scripts/comet-state.sh",
16
- "comet/scripts/comet-handoff.sh",
17
- "comet/scripts/comet-archive.sh",
18
- "comet/scripts/comet-yaml-validate.sh",
19
- "comet/scripts/comet-hook-guard.sh",
15
+ "comet-any/SKILL.md",
16
+ "comet-any/reference/authoring-subagents.md",
17
+ "comet-any/reference/authored-zone-example.md",
18
+ "comet-any/reference/bundle-authoring.md",
19
+ "comet-any/reference/eval-provider.md",
20
+ "comet-any/reference/subagents/script-author.md",
21
+ "comet-any/reference/subagents/reference-author.md",
22
+ "comet-any/reference/subagents/workflow-entry-author.md",
23
+ "comet-any/reference/subagents/skill-core-author.md",
24
+ "comet-any/reference/subagents/pause-points-author.md",
25
+ "comet-any/reference/subagents/skill-reviewer.md",
26
+ "comet/scripts/comet-runtime.mjs",
27
+ "comet/scripts/comet-env.mjs",
28
+ "comet/scripts/comet-guard.mjs",
29
+ "comet/scripts/comet-state.mjs",
30
+ "comet/scripts/comet-handoff.mjs",
31
+ "comet/scripts/comet-archive.mjs",
32
+ "comet/scripts/comet-yaml-validate.mjs",
33
+ "comet/scripts/comet-hook-guard.mjs",
34
+ "comet/scripts/comet-intent.mjs",
20
35
  "comet-open/SKILL.md",
21
36
  "comet-design/SKILL.md",
22
37
  "comet-build/SKILL.md",
@@ -25,17 +40,23 @@
25
40
  "comet-hotfix/SKILL.md",
26
41
  "comet-tweak/SKILL.md"
27
42
  ],
43
+ "internalSkills": [
44
+ "comet/runtime/classic/skill.yaml",
45
+ "comet/runtime/classic/guardrails.yaml",
46
+ "comet/runtime/classic/checks.yaml"
47
+ ],
28
48
  "rules": [
29
- "comet/rules/comet-phase-guard.md"
49
+ "comet/rules/comet-phase-guard.md",
50
+ "comet/rules/comet-phase-guard.en.md"
30
51
  ],
31
52
  "hooks": {
32
- "comet/scripts/comet-hook-guard.sh": {
53
+ "comet/scripts/comet-hook-guard.mjs": {
33
54
  "matcher": "Write|Edit",
34
55
  "description": "Block code writes in wrong Comet phase (open/design/archive)"
35
56
  }
36
57
  },
37
58
  "languages": [
38
- { "id": "en", "name": "English", "skillsDir": "skills" },
39
- { "id": "zh", "name": "中文", "skillsDir": "skills-zh" }
59
+ { "id": "en", "name": "English", "skillsDir": "skills", "artifactLanguage": "en" },
60
+ { "id": "zh", "name": "中文", "skillsDir": "skills-zh", "artifactLanguage": "zh-CN" }
40
61
  ]
41
62
  }
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: comet
3
- description: "Comet OpenSpec + Superpowers dual-star development workflow. Start with /comet for automatic phase detection and dispatch to subcommands. Five phases: open → design → build → verify → archive."
3
+ description: "Use when the user wants to start or resume a Comet workflow and route by active change, .comet.yaml, and hotfix/tweak intent."
4
4
  ---
5
5
 
6
6
  # Comet — OpenSpec + Superpowers Dual-Star Development Workflow
@@ -22,23 +22,67 @@ Agents need only read this section for decision-making. Refer to the Reference A
22
22
 
23
23
  ### Output Language Rule
24
24
 
25
- Use the language of the user request that triggered this workflow as the default output language. When resuming an existing change with a clear dominant artifact language, preserve that language unless the user explicitly asks to switch.
25
+ Use the configured Comet artifact language as the output language for every OpenSpec and Superpowers artifact. The configured value is a normalized language id, `en` or `zh-CN`. For an existing change, read `language` from `openspec/changes/<name>/.comet.yaml` using `"$COMET_BASH" "$COMET_STATE" get <name> language`. Before `.comet.yaml` exists, read `language` from `.comet/config.yaml`; if neither exists, fall back to the current user request language. Include the resolved language explicitly in every prompt or ARGUMENTS passed to external OpenSpec/Superpowers skills.
26
26
 
27
27
  ### Automatic Phase Detection
28
28
 
29
- **Step 0: Active Change Discovery and Intent Detection**
29
+ **Step 0: Active Change Discovery and Intent Resolution**
30
+
31
+ 1. First load script locations through `comet/reference/scripts.md` and ensure `$COMET_INTENT` is available.
32
+ 2. Run `openspec list --json` to collect active changes.
33
+ 3. Fill a `CometIntentFrame` from the user request, active change list, and necessary repository state.
34
+ 4. Prefer `node "$COMET_INTENT" route --stdin` to pass the frame JSON and get the runtime-normalized route. `CometIntentFrame + runtime scorer` is the source of truth; this prose is only for intent recognition slot extraction.
35
+ 5. Handle the runtime route:
36
+ - `hotfix` → invoke `/comet-hotfix`
37
+ - `tweak` → invoke `/comet-tweak`
38
+ - `full` → follow the active-change table to invoke `/comet-open` or ask for confirmation
39
+ - `resume` → continue to Step 1 and read the selected change `.comet.yaml`
40
+ - `ask_user` → pause through `comet/reference/decision-point.md` and wait for the user's choice
41
+ - `out_of_scope` → explain that the input is not a Comet workflow start/resume request and do not initialize a change
42
+
43
+ **Minimal CometIntentFrame Skeleton**:
44
+
45
+ ```json
46
+ {
47
+ "schema_version": "comet.intent.v1",
48
+ "utterance": "<user request>",
49
+ "intent": { "name": "start_change", "confidence": 0.8 },
50
+ "slots": {
51
+ "requested_action": "start",
52
+ "workflow_candidate": "full",
53
+ "user_explicit_workflow": null,
54
+ "change_id": null,
55
+ "existing_behavior": null,
56
+ "new_capability": null,
57
+ "public_api_change": null,
58
+ "schema_change": null,
59
+ "cross_module_change": null
60
+ },
61
+ "context": {
62
+ "active_changes_count": 0,
63
+ "active_change_names": []
64
+ },
65
+ "evidence": [],
66
+ "proposed_route": {
67
+ "name": "ask_user",
68
+ "confidence": 0.5
69
+ }
70
+ }
71
+ ```
30
72
 
31
- 1. Detect presets first; if hotfix/tweak matches, invoke the corresponding preset skill directly and do not enter the normal open branch
32
- 2. When no preset matches, run `openspec list --json` to get all active changes
73
+ **Intent Recognition Slot Extraction**:
74
+ See `comet/reference/intent-frame.md` for complete field meanings; normal routing only needs the minimal skeleton above.
33
75
 
34
- **Preset detection has highest priority**:
35
- - User explicitly describes a bug fix / hotfix + meets hotfix conditions directly invoke `/comet-hotfix`
36
- - User explicitly describes copy/config/docs/prompt small adjustment + meets tweak conditionsdirectly invoke `/comet-tweak`
37
- - No preset match follow the table below
76
+ - `fix_bug` + `existing_behavior: true` + no new capability/public API/schema/cross-module signal → prefer `hotfix`
77
+ - User explicitly describes a lightweight/medium change that can fit in a single OpenSpec change, should be executed through OpenSpec apply, and does not need full `/comet` deep design/plan → prefer `tweak`
78
+ - Copy, config, docs, prompt, or a lightweight/medium single OpenSpec changeprefer `tweak`
79
+ - New capability, public API, schema change, cross-module coordination, or architecture work → prefer `full`
80
+ - Multiple active changes without an explicit change → `ask_user`
81
+ - Low confidence, missing key evidence, or explicit workflow conflicting with risk signals → `ask_user`
38
82
 
39
83
  | Active changes | User input | Behavior |
40
84
  |----------------|------------|----------|
41
- | None | non-preset input | → Invoke `/comet-open` |
85
+ | None | `full` route | → Invoke `/comet-open` |
42
86
  | Exactly 1 | `/comet <description>` | → **Ask**: continue this change or create a new change |
43
87
  | Multiple | `/comet <description>` | → **Ask**: continue existing or create new; if continuing, list changes for selection |
44
88
  | Exactly 1 | `/comet` with no description | → Auto-select, enter Step 1 |
@@ -57,16 +101,16 @@ Prefer reading `openspec/changes/<name>/.comet.yaml`. If not available, fall bac
57
101
  **Resume rules**:
58
102
  - On every context resume, rerun Step 0 and Step 1; do not trust conversation history for phase detection
59
103
  - If there is an active change and the worktree has uncommitted changes, handle them through `comet/reference/dirty-worktree.md`. That protocol defines checks, attribution, and prohibitions; this file does not repeat them
60
- - If `phase: build`, first check `build_pause`, `plan`, `build_mode`, and `isolation` (see details below):
61
- - If `build_pause: plan-ready` but `isolation` and `build_mode` are already set, treat as stale pause: first output `[COMET] Detected stale pause (build_pause=plan-ready but isolation/build_mode already set), auto-clearing and continuing`, then run `"$COMET_BASH" "$COMET_STATE" set <name> build_pause null`, then read the next unchecked task from tasks.md and resume execution per `build_mode`
62
- - If `build_pause: plan-ready` and the plan file exists, but `isolation` or `build_mode` is not yet set, return to the `/comet-build` plan-ready resume point, prompt the user to choose isolation and execution method, and do not regenerate the plan
104
+ - If `phase: build`, first check `build_pause`, `plan`, `isolation`, `build_mode`, `tdd_mode`, and `review_mode` (see details below):
105
+ - If `build_pause: plan-ready` but `isolation`, `build_mode`, `tdd_mode`, and `review_mode` are all already set, treat as stale pause: first output `[COMET] Detected stale pause (build_pause=plan-ready but isolation/build_mode/tdd_mode/review_mode are set), auto-clearing and continuing`, then run `node "$COMET_STATE" set <name> build_pause null`, then read the next unchecked task from tasks.md and resume execution per `build_mode`
106
+ - If `build_pause: plan-ready` and the plan file exists, but `isolation`, `build_mode`, `tdd_mode`, or `review_mode` is not yet set, return to the `/comet-build` plan-ready resume point, prompt the user to complete/confirm workspace isolation, execution method, TDD mode, and code review mode, and do not regenerate the plan
63
107
  - If `build_pause: plan-ready` but the plan file is missing, return to `/comet-build` to handle corrupted state or regenerate the plan
64
- - If `build_mode`, `isolation`, or `tdd_mode` is unset, return to the corresponding `/comet-build` step to supplement before executing
108
+ - If `isolation`, `build_mode`, `tdd_mode`, or `review_mode` is unset, return to the corresponding `/comet-build` step to supplement before executing
65
109
  - If all are set, read the next unchecked task from tasks.md and continue:
66
110
  - If `build_mode: subagent-driven-development`, do not execute tasks directly in the main window; return to `/comet-build`'s background subagent dispatch rules, main window only coordinates
67
111
  - Other execution modes follow `/comet-build`'s corresponding rules
68
- - If `phase: verify` and `verify_result: fail`, enter the verification failure decision blocking point: pause and ask the user to fix or accept deviation; only after the user chooses fix, run `"$COMET_BASH" "$COMET_STATE" transition <name> verify-fail` and invoke `/comet-build`
69
- - If `phase: open` but proposal/design/tasks are complete, first run `"$COMET_BASH" "$COMET_GUARD" <change-name> open --apply` to repair state, then continue detection
112
+ - If `phase: verify` and `verify_result: fail`, enter the verification failure decision blocking point: pause and ask the user to fix or accept deviation; only after the user chooses fix, run `node "$COMET_STATE" transition <name> verify-fail` and invoke `/comet-build`
113
+ - If `phase: open` but proposal/design/tasks are complete, first run `node "$COMET_GUARD" <change-name> open --apply` to repair state, then continue detection
70
114
  - If `phase: archive`, only invoke `/comet-archive`; `/comet-archive` must first wait for final archive confirmation. After archive succeeds, the change moves to the archive directory, so do not run guard against the old active directory
71
115
 
72
116
  **Step 2: Phase Determination** (check in order, first match wins)
@@ -82,22 +126,19 @@ Prefer reading `openspec/changes/<name>/.comet.yaml`. If not available, fall bac
82
126
 
83
127
  If metadata conflicts with file state, use verifiable file state as source of truth and correct `.comet.yaml` before continuing.
84
128
 
85
- ### Preset Upgrade Criteria
129
+ ### Preset Upgrade Assessment
130
+
131
+ hotfix/tweak scope assessment uses a three-layer division of labor, avoiding "using pure file count as a hard upgrade condition" that wrongly blocks normal small changes:
86
132
 
87
- **hotfix → full** (upgrade if any condition met):
88
- - Change involves **3+ files**
89
- - Architecture changes (new modules, new interfaces, new dependencies)
90
- - Database schema changes
91
- - Fix introduces new public API
92
- - Fix scope exceeds a single function/module
133
+ 1. **Qualitative-change signals** (agent semantic recognition; hitting any one pauses and delegates a two-choice decision to the user): cross-module coordinated change, new capability needed, database schema change, introduces new public API, hits deep architecture issues (each preset reuses this core signal set and may add its own context-specific signal, such as tweak's "needing to split into multiple OpenSpec changes")
134
+ 2. **File-count tripwire** (user decides; not an automatic upgrade): when changed files exceed a hint threshold, pause and let the user decide whether to continue the preset or upgrade to full; do not auto-kick
135
+ 3. **Verification weight** (scale script decides): `comet-state scale` only decides `verify_mode` (verification weight); it does not block the flow or trigger an upgrade
93
136
 
94
- **tweak full** (upgrade if any condition met):
95
- - Change involves **5+ files**
96
- - Cross-module coordination required
97
- - **5+** new test cases needed
98
- - Config item additions or deletions (not value changes)
99
- - New capability needed
100
- - Delta spec needed (existing spec affected)
137
+ **Upgrade decision point (user chooses one of two)**:
138
+ - Continue the preset lightweight flow (user confirms scope is manageable)
139
+ - Upgrade to full `/comet` (use `node "$COMET_STATE" transition <name> preset-escalate` to legally rewind to the design phase, supplementing Design Doc and Superpowers plan)
140
+
141
+ See the "Upgrade Assessment" section of each `comet-hotfix` / `comet-tweak` for detailed rules.
101
142
 
102
143
  ### Error Handling Quick Reference
103
144
 
@@ -105,7 +146,7 @@ If metadata conflicts with file state, use verifiable file state as source of tr
105
146
  |----------|----------|
106
147
  | `openspec list --json` fails | Check if openspec is installed, prompt user to run `openspec init` |
107
148
  | Sub-skill unavailable | Stop workflow, prompt to install or enable the corresponding skill |
108
- | `.comet.yaml` malformed or missing | Use file state as source of truth, correct with `"$COMET_BASH" "$COMET_STATE" set` then continue |
149
+ | `.comet.yaml` malformed or missing | Use file state as source of truth, correct with `node "$COMET_STATE" set` then continue |
109
150
  | Build/test fails | Return to build phase for fixes, do not enter verify |
110
151
  | Incomplete change directory structure | Fill missing files according to `comet-open` artifact requirements |
111
152
 
@@ -118,18 +159,18 @@ Flow chain: open → design → build → verify → archive
118
159
 
119
160
  **Continuous execution requirement**: starting from the detected phase, the agent automatically continues through all later phases. But **auto-advancing only applies at transition points without user decisions**. When encountering user decision points, **must use the current platform's available user input/confirmation mechanism to pause and wait for the user's explicit response**. Must not use recommendation rules, defaults, or historical preferences to substitute for user confirmation, and must not just output a text prompt and then continue executing.
120
161
 
121
- **Distinguish phase advancement vs automatic handoff**: each sub-skill runs phase guard `--apply` before exit to advance the `.comet.yaml` `phase` field. This step **always happens** and is not controlled by `auto_transition`. After that, the sub-skill runs `"$COMET_BASH" "$COMET_STATE" next <name>` to resolve the next action: when `auto_transition` is not `false`, output is `NEXT: auto` (auto-invoke next skill); when `auto_transition` is `false`, output is `NEXT: manual` (do not invoke next skill, show a manual run hint). Therefore `auto_transition` **only controls next skill invocation, not phase advancement**. Regardless of `auto_transition`, user decision points below remain blocking.
162
+ **Distinguish phase advancement vs automatic handoff**: each sub-skill runs phase guard `--apply` before exit to advance the `.comet.yaml` `phase` field. This step **always happens** and is not controlled by `auto_transition`. After that, the sub-skill runs `node "$COMET_STATE" next <name>` to resolve the next action: when `auto_transition` is not `false`, output is `NEXT: auto` (auto-invoke next skill); when `auto_transition` is `false`, output is `NEXT: manual` (do not invoke next skill, show a manual run hint). Therefore `auto_transition` **only controls next skill invocation, not phase advancement**. Regardless of `auto_transition`, user decision points below remain blocking.
122
163
 
123
164
  **Decision points are blocking points**: whenever reaching any of the following nodes, the current `/comet` invocation must stop, and follow the `comet/reference/decision-point.md` protocol to obtain the user's explicit choice. Only after the user explicitly chooses can the corresponding state fields be written and operations executed, then auto-advance resumes.
124
165
 
125
166
  Nodes requiring user participation (pause only at these nodes):
126
167
  1. Open phase proposal/design/tasks review and confirmation
127
168
  2. Confirm design approach during brainstorming
128
- 3. Plan-ready pause choice during build phase, followed by workflow configuration selection (isolation + execution method + TDD mode)
169
+ 3. Plan-ready pause choice during build phase, followed by workflow configuration selection (workspace isolation + execution method + TDD mode + code review mode)
129
170
  4. Decide to fix or accept deviation when verify fails (including Spec drift handling)
130
171
  5. Choose branch handling method for finishing-branch
131
172
  6. Archive phase final confirmation before running the archive script
132
- 7. Encounter upgrade conditions (hotfix/tweak → full workflow)
173
+ 7. Encounter an upgrade-assessment signal (hotfix/tweak → user chooses one of two: continue preset / upgrade to full workflow)
133
174
  8. Build phase scope expansion requiring redesign or new change split
134
175
  9. Open phase large PRD requiring confirmation to split into multiple changes
135
176
 
@@ -158,7 +199,7 @@ Agents should not skip these decision points; other unambiguous phase transition
158
199
  | `/comet-verify` | 4. Verify and Close | Both | Verification report, branch handling |
159
200
  | `/comet-archive` | 5. Archive | OpenSpec | delta→main spec sync, design doc markup, archive |
160
201
  | `/comet-hotfix` | Preset path | Both | Quick fix (skip brainstorming) |
161
- | `/comet-tweak` | Preset path | Both | Small change (skip brainstorming and full plan) |
202
+ | `/comet-tweak` | Preset path | Both | OpenSpec-chained medium change (delta spec is first-class, skip brainstorming and full plan) |
162
203
 
163
204
  ```
164
205
  /comet
@@ -168,11 +209,11 @@ Agents should not skip these decision points; other unambiguous phase transition
168
209
 
169
210
  /comet-hotfix (preset, skip brainstorming)
170
211
  open ──→ build ──→ verify ──→ archive
171
- If upgrade triggeredblock for confirmation → supplement Design Doc → return to full workflow
212
+ Upgrade-assessment signal hit → user chooses one of two (continue preset / upgrade full)if upgrade, transition preset-escalate → supplement Design Doc → return to full workflow
172
213
 
173
- /comet-tweak (preset, skip brainstorming and full plan)
174
- open ──→ lightweight build ──→ light verify ──→ archive
175
- If upgrade triggeredblock for confirmation → supplement Design Doc → return to full workflow
214
+ /comet-tweak (lightweight preset, chains OpenSpec, delta spec is first-class)
215
+ open ──→ build ──→ verify ──→ archive
216
+ Upgrade-assessment signal hit → user chooses one of two (continue preset / upgrade full)if upgrade, transition preset-escalate → supplement Design Doc → return to full workflow
176
217
  ```
177
218
 
178
219
  ---
@@ -185,9 +226,10 @@ Agents should not skip these decision points; other unambiguous phase transition
185
226
  - Before `build → verify`, `build_mode` must be selected
186
227
  - `build_mode: subagent-driven-development` must also have `subagent_dispatch: confirmed`
187
228
  - Before full workflow leaves build phase, `tdd_mode` must be selected as `tdd` or `direct`
229
+ - Before full workflow leaves build phase, `review_mode` must be selected as `off`, `standard`, or `thorough`
188
230
  - `build_mode: direct` is allowed by default only for `hotfix` / `tweak`; full workflow requires `direct_override: true`
189
231
  - `build_pause` is not an execution method and must not be written to `build_mode`
190
- - These constraints are enforced by both `comet-guard.sh build --apply` and `comet-state.sh transition <name> build-complete`
232
+ - These constraints are enforced by both `comet-guard.mjs build --apply` and `comet-state.mjs transition <name> build-complete`
191
233
 
192
234
  ### .comet.yaml Field Reference
193
235
 
@@ -215,68 +257,11 @@ See `comet/reference/debug-gate.md` for the complete debug gate protocol.
215
257
 
216
258
  ### Script Location
217
259
 
218
- Comet scripts are distributed in `comet/scripts/`. **Do not hardcode paths** — locate once, cache in env vars. This block is a standard boilerplate repeated in every sub-skill for independent loadability; changes must be kept in sync across all files (boilerplate version: `v2`, update this version when changing to help locate files needing sync):
260
+ Comet scripts are distributed in `comet/scripts/`. **Do not hardcode paths** — locate once, cache in env vars. The full bootstrap block, command reference (`--apply`, `transition`, `next`, `archive`), and output formats live in `comet/reference/scripts.md`. Run that bootstrap once per session, then reuse `$COMET_GUARD`, `$COMET_STATE`, `$COMET_HANDOFF`, `$COMET_ARCHIVE`, `$COMET_RUNTIME` throughout. Key entry points:
219
261
 
220
262
  ```bash
221
- COMET_ENV="${COMET_ENV:-$(find . "$HOME"/.*/skills "$HOME/.config" "$HOME/.gemini" -path '*/comet/scripts/comet-env.sh' -type f -print -quit 2>/dev/null)}"
222
- if [ -z "$COMET_ENV" ]; then
223
- echo "ERROR: comet-env.sh not found. Ensure the comet skill is installed." >&2
224
- return 1
225
- fi
226
- . "$COMET_ENV"
227
-
228
- # Stop workflow when script location fails
229
- if [ -z "$COMET_GUARD" ] || [ -z "$COMET_STATE" ] || [ -z "$COMET_HANDOFF" ] || [ -z "$COMET_ARCHIVE" ]; then
230
- echo "ERROR: Comet scripts not found. Ensure the comet skill is installed." >&2
231
- echo "Expected path pattern: */comet/scripts/comet-*.sh under project or platform skill directories" >&2
232
- return 1
233
- fi
263
+ node "$COMET_GUARD" <change-name> <phase> --apply # phase guard + auto state update
264
+ node "$COMET_STATE" transition <change-name> <event> # open-complete | design-complete | build-complete | verify-pass | verify-fail
265
+ node "$COMET_STATE" next <change-name> # NEXT: auto|manual|done + SKILL: <skill-name>; auto_transition:false manual, which pauses only the next skill invocation and does not block phase updates
266
+ node "$COMET_ARCHIVE" <change-name> # full archive in one command
234
267
  ```
235
-
236
- **Auto state update**: Guard supports `--apply` flag, automatically updating `.comet.yaml` state fields after checks pass:
237
-
238
- ```bash
239
- "$COMET_BASH" "$COMET_GUARD" <change-name> <phase> --apply
240
- ```
241
-
242
- `--apply` delegates to `comet-state transition`. Use these semantic events when state changes need to be expressed directly:
243
-
244
- ```bash
245
- "$COMET_BASH" "$COMET_STATE" transition <change-name> open-complete
246
- "$COMET_BASH" "$COMET_STATE" transition <change-name> design-complete
247
- "$COMET_BASH" "$COMET_STATE" transition <change-name> build-complete
248
- "$COMET_BASH" "$COMET_STATE" transition <change-name> verify-pass
249
- "$COMET_BASH" "$COMET_STATE" transition <change-name> verify-fail
250
- "$COMET_BASH" "$COMET_STATE" transition <archive-name> archived
251
- ```
252
-
253
- **Resolve next action**: after guard-based phase advancement, use the `next` subcommand to determine whether to auto-invoke the next skill:
254
-
255
- ```bash
256
- "$COMET_BASH" "$COMET_STATE" next <change-name>
257
- ```
258
-
259
- Output format: `NEXT: auto|manual|done` + `SKILL: <skill-name>` (omitted for `done`) + `HINT` (for `manual` only). With `auto_transition: false`, output is `manual`, which pauses only the next skill invocation and does not block phase updates.
260
-
261
- **Archive script**: Complete all archive steps in one command:
262
-
263
- ```bash
264
- "$COMET_BASH" "$COMET_ARCHIVE" <change-name>
265
- ```
266
-
267
- After loading comet, agents should run the variable assignments above once, then reuse `$COMET_GUARD`, `$COMET_STATE`, `$COMET_HANDOFF`, `$COMET_ARCHIVE` throughout the session.
268
-
269
-
270
- ### Best Practices
271
-
272
- 1. **brainstorming cannot be skipped** — Every change must undergo deep design (except hotfix and tweak)
273
- 2. **delta spec is a living document** — Freely modify during phase 3, sync at archive
274
- 3. **Handoff packages are generated by scripts** — OpenSpec → Superpowers context must be generated through `comet-handoff.sh` as compact traceable excerpts (use `--full` when needed), and validated by guard for source/hash/mode
275
- 4. **Keep tasks.md in sync** — Check off each completed task
276
- 5. **Commit frequently** — One commit per task, message reflects design intent
277
- 6. **Verify before archive confirmation** — Enter `/comet-archive` only after `/comet-verify` passes, but wait for final user confirmation before running the archive script
278
- 7. **Classify incremental updates** — Small edits, medium brainstorming, large new changes
279
- 8. **Plan must associate with change** — File header contains `change:` and `design-doc:` metadata
280
- 9. **Archive closure** — design doc and plan must mark `archived-with` status
281
- 10. **Modifying existing features** — Just open a new change
282
- 11. **Preset has limits** — Switch to full workflow promptly when hotfix/tweak meet upgrade conditions
@@ -13,7 +13,7 @@ This protocol is shared by all comet sub-skills. It defines the automatic handof
13
13
  After exit conditions are met and the phase guard has advanced phase, run:
14
14
 
15
15
  ```bash
16
- "$COMET_BASH" "$COMET_STATE" next <change-name>
16
+ node "$COMET_STATE" next <change-name>
17
17
  ```
18
18
 
19
19
  The script outputs a deterministic next step based on `phase`, `workflow`, and `auto_transition`:
@@ -8,6 +8,7 @@ This file is the field reference for the `.comet.yaml` state file. Consult on de
8
8
 
9
9
  ```yaml
10
10
  workflow: full
11
+ language: en
11
12
  phase: build
12
13
  design_doc: docs/superpowers/specs/YYYY-MM-DD-topic-design.md
13
14
  plan: docs/superpowers/plans/YYYY-MM-DD-feature.md
@@ -16,6 +17,8 @@ build_mode: subagent-driven-development
16
17
  build_pause: null
17
18
  subagent_dispatch: confirmed
18
19
  tdd_mode: tdd
20
+ review_mode: standard
21
+ auto_transition: true
19
22
  isolation: branch
20
23
  verify_mode: light
21
24
  verify_result: pending
@@ -31,14 +34,16 @@ archived: false
31
34
  | Field | Meaning |
32
35
  |-------|---------|
33
36
  | `workflow` | `full`, `hotfix`, or `tweak` |
37
+ | `language` | Artifact language, `en` or `zh-CN`. Written to `.comet/config.yaml` by `comet init`, snapshotted into `.comet.yaml` when a change is created, and used as the main-language constraint for OpenSpec / Superpowers artifacts |
34
38
  | `phase` | Current phase: `open`, `design`, `build`, `verify`, `archive` (init sets `open`; guard handles transitions) |
35
39
  | `design_doc` | Associated Superpowers Design Doc path; may be empty |
36
40
  | `plan` | Associated Superpowers Plan path; may be empty |
37
41
  | `base_ref` | Git commit SHA recorded at init for scale assessment. Used as baseline for changed-file counting when no plan exists |
38
- | `build_mode` | Selected execution mode; may be empty |
42
+ | `build_mode` | Selected execution mode; may be empty. Values: `subagent-driven-development` (isolated background subagents implement and review each task), `executing-plans` (main session executes sequentially by plan), `direct` (main session codes directly; allowed by default only for hotfix/tweak, full workflow requires `direct_override: true`) |
39
43
  | `build_pause` | Build phase internal pause point. `null` = no pause, `plan-ready` = plan generated, paused for user model switch |
40
44
  | `subagent_dispatch` | `null` or `confirmed`. Only when the platform's real background subagent/Task/multi-agent dispatch capability is confirmed may `build_mode: subagent-driven-development` be written and used to leave the build phase |
41
45
  | `tdd_mode` | `tdd` or `direct`. Full workflow must select before leaving build. `tdd` forces write-failing-test-first per task; `direct` skips TDD enforcement. hotfix/tweak default to `direct` |
46
+ | `review_mode` | `off`, `standard`, or `thorough`. Full workflow must select before leaving build; hotfix/tweak default to `off` |
42
47
  | `isolation` | `branch` or `worktree`, workspace isolation mode. Full init may be `null` but only until `/comet-build` Step 3; hotfix/tweak default to `branch` |
43
48
  | `verify_mode` | `light` or `full`; may be empty |
44
49
  | `auto_transition` | `true` or `false`. Only controls whether to automatically invoke the next skill after phase guard advances phase; `false` outputs `manual` from `comet-state next`, pausing next-skill invocation but not blocking phase field updates |
@@ -54,8 +59,8 @@ archived: false
54
59
  | Field | Meaning |
55
60
  |-------|---------|
56
61
  | `direct_override` | `true`/`false`. Full workflow must explicitly set to `true` to use `build_mode: direct` |
57
- | `build_command` | Project build command. Guard runs this first; prints command output on failure |
58
- | `verify_command` | Project verify command. Verify guard runs this first; falls back to build command when unset |
62
+ | `build_command` | Project build command. Guard runs this first; supports restricted command words/quotes/paths plus `&&` sequential steps; rejects `;`, pipes, bare `&`, `$`, and backticks |
63
+ | `verify_command` | Project verify command. Verify guard runs this first; same restricted command grammar as `build_command`; falls back to build command when unset |
59
64
 
60
65
  ## State Machine Hard Constraints
61
66
 
@@ -63,6 +68,8 @@ archived: false
63
68
  - Before `build → verify`, `build_mode` must be selected
64
69
  - `build_mode: subagent-driven-development` requires `subagent_dispatch: confirmed`
65
70
  - Full workflow must select `tdd_mode` as `tdd` or `direct` before leaving build
71
+ - Full workflow must select `review_mode` as `off`, `standard`, or `thorough` before leaving build
66
72
  - `build_mode: direct` defaults to `hotfix`/`tweak` only; full workflow requires `direct_override: true`
67
73
  - `build_pause` is not an execution mode; must not be written to `build_mode`
68
- - These constraints exist in both `comet-guard.sh build --apply` and `comet-state.sh transition <name> build-complete`
74
+ - These constraints exist in both `comet-guard.mjs build --apply` and `comet-state.mjs transition <name> build-complete`
75
+ - `preset-escalate` event: only allows `hotfix`/`tweak` workflow at `phase: build`; atomically sets `workflow`/`classic_profile` to `full`, rewinds `phase` to `design`, and clears `design_doc` (satisfying the comet-design entry requirement). This is the only legal channel for a preset → full upgrade — direct `set phase design` is hard-blocked by the state machine, and `set classic_profile` is a machine-owned field that cannot be set manually
@@ -4,10 +4,20 @@ Canonical path: `comet/reference/context-recovery.md`
4
4
 
5
5
  This protocol is shared by all comet sub-skills that may trigger context compression. When the agent suspects context compression has occurred (previous conversation summarized, cannot find previously discussed content), follow this protocol to recover.
6
6
 
7
+ ## Any-Entry Recovery Principle
8
+
9
+ The user may resume the workflow directly from `/comet-open`, `/comet-design`, `/comet-build`, `/comet-verify`, `/comet-archive`, `/comet-hotfix`, or `/comet-tweak`. On entry to any sub-skill, first locate scripts via `comet/reference/scripts.md`, then run the entry check or recovery check for that sub-skill's phase. Do not infer phase from conversation history.
10
+
11
+ ```bash
12
+ node "$COMET_STATE" check <change-name> <phase> --recover
13
+ ```
14
+
15
+ If the check shows the actual phase, workflow, or evidence belongs to another skill, switch according to script output and `/comet` routing rules; do not keep writing state in the wrong phase. If the worktree has uncommitted changes, attribute them first via `comet/reference/dirty-worktree.md`.
16
+
7
17
  ## Recovery Steps
8
18
 
9
19
  ```bash
10
- "$COMET_BASH" "$COMET_STATE" check <change-name> <phase> --recover
20
+ node "$COMET_STATE" check <change-name> <phase> --recover
11
21
  ```
12
22
 
13
23
  The script outputs structured recovery context (phase, completed fields, pending fields, recovery action). Follow the **Recovery action** output for next steps.
@@ -21,7 +31,7 @@ If the recovery script outputs `build_mode: subagent-driven-development`:
21
31
  3. Read `openspec/changes/<name>/.comet/subagent-progress.md` to recover the current task or final review, implementation commit, RED/GREEN evidence, passed reviews, unresolved feedback, and review-fix round
22
32
  4. Do not execute tasks directly in the main session
23
33
  5. Resume from the checkpoint's exact stage; begin implementer dispatch for the first unchecked task only when the checkpoint is missing or mismatched
24
- 6. After dual review and targeted checkoff verification pass, immediately continue to the next task without summarizing or asking whether to continue
34
+ 6. After `review_mode` validation and targeted checkoff verification pass, immediately continue to the next task without summarizing or asking whether to continue
25
35
 
26
36
  ## Design Phase Special Recovery
27
37
 
@@ -14,4 +14,20 @@ This protocol is shared by comet sub-skills that directly modify code, including
14
14
  1. Reproduce and locate the root cause first by reading the full error, checking recent changes, and tracing data flow
15
15
  2. If the root cause is a source bug, first add a minimal failing test that reproduces the crash or unexpected behavior, then modify the source
16
16
  3. After the fix, run that failing test, related tests, and the project's build or verification commands until all pass
17
- 4. Keep the test, the source fix, and the tasks.md checkoff in the current change; do not replace the current change verification loop by starting a separate “write test cases” change
17
+ 4. Keep the test, the source fix, and the tasks.md checkoff in the current change; do not replace the current change verification loop by starting a separate “write test cases” change
18
+
19
+ ## Parallel Investigation of Multiple Failures
20
+
21
+ Before entering the four-stage flow, run a failure-independence assessment to decide serial vs. parallel investigation:
22
+
23
+ - **No parallelism (keep existing serial `systematic-debugging`)**: ≤ 2 failures; failures are related (fixing one might fix others); shared state; would touch the same set of files; failure independence not yet established
24
+ - **Parallel (load the Superpowers `dispatching-parallel-agents` skill)**: ≥ 3 failures from distinct problem domains (different test files with different root causes, different subsystems broken independently), mutually independent and non-interfering
25
+
26
+ When parallel conditions are met:
27
+
28
+ 1. Immediately use the Skill tool to load the Superpowers `dispatching-parallel-agents` skill
29
+ 2. Dispatch one background investigation agent per independent failure, grouped by problem domain, with all dispatches in a single response for concurrent execution. Each agent prompt must be self-contained (specific failure, error messages, allowed investigation scope, prohibition on touching other problem domains' code)
30
+ 3. All agents remain bound by this protocol's "no source changes before the root cause is identified" constraint; they only locate the root cause and return findings — **they do not submit fixes directly**
31
+ 4. Once all investigations return, the main session serially consolidates findings and performs fixes; fixes still go through the current `review_mode` verification and review loop
32
+
33
+ > Parallelism applies only to **investigation**. Fixes are always serial, avoiding conflicts from multiple agents editing the same set of files at once — consistent with the `subagent-driven-development` red flag of "never dispatch multiple implementation subagents in parallel."
@@ -7,14 +7,25 @@ This protocol is shared by all comet sub-skills that contain user decision point
7
7
  ## Core Rules
8
8
 
9
9
  - Decision points are blocking points. Pause and wait for an explicit user choice before continuing
10
- - Use the current platform's available user input or confirmation mechanism to collect the choice
10
+ - Use the current platform's available user input or confirmation mechanism to collect the choice; when platforms such as Claude Code provide `AskUserQuestion`, prefer `AskUserQuestion` to present single-select or multi-select options
11
+ - If the current tool list does not include `AskUserQuestion`, or the first `AskUserQuestion` call fails, treat structured questions as unavailable for this session; do not repeatedly retry `AskUserQuestion` for later decision points in the same session, and use the text-options fallback directly
11
12
  - If the current platform has no structured question tool, ask clear options in the conversation and stop until the user replies
12
13
  - Never substitute recommendation rules, defaults, historical preferences, or “the user would probably agree” for current confirmation
13
14
  - Do not write state fields, execute the chosen branch, or auto-continue before the user explicitly chooses
14
15
 
16
+ ## `AskUserQuestion` Priority Strategy
17
+
18
+ When using structured questions:
19
+
20
+ - Use a single-select `AskUserQuestion` question for single-choice decision points, and a multi-select question for multi-choice decision points
21
+ - Each option must include a short label and impact description; recommendations may explain tradeoffs but must not auto-select
22
+ - If the tool call succeeds, wait for the user to answer through that question; do not also print a duplicate text option list
23
+ - If the tool is missing, the call fails, or the host reports an error, record that structured questions are unavailable for this session, then use the text-options fallback
24
+
15
25
  ## Minimum Presentation Requirements
16
26
 
17
27
  - State what the current decision point is deciding
18
28
  - Present clear options; when the user must pick one option, keep the options mutually exclusive and actionable
29
+ - In text-options fallback mode, explicitly state "single-select" or "multi-select", number the options, describe each option's impact, ask the user to reply with the option number(s), then stop until the user replies
19
30
  - Recommendations may explain tradeoffs, but may not replace user confirmation
20
- - Only execute the corresponding commands or state updates after the user chooses
31
+ - Only execute the corresponding commands or state updates after the user chooses
@@ -0,0 +1,74 @@
1
+ # CometIntentFrame Field Reference
2
+
3
+ Read this file only when field meanings are needed. Normal `/comet` routing only needs the minimal skeleton in the main Skill; the runtime fills omitted defaults and outputs the final `route`.
4
+
5
+ ## Top-Level Fields
6
+
7
+ | Field | Meaning |
8
+ |-------|---------|
9
+ | `schema_version` | Frame version. Currently fixed to `comet.intent.v1`. |
10
+ | `utterance` | The user request that triggered `/comet`. |
11
+ | `intent` | High-level user intent and confidence. If confidence is below the runtime threshold, routing falls back to `ask_user`. |
12
+ | `slots` | Routing slots normalized from the user request. |
13
+ | `context` | Repository context read from local state; this is not extracted from the user utterance. |
14
+ | `evidence` | Evidence for key routing conclusions. Missing key evidence makes the runtime prefer `ask_user`. |
15
+ | `proposed_route` | Agent-submitted route candidate. Minimal input only needs `name` and `confidence`; the runtime reviews it and outputs the final `route`. |
16
+
17
+ ## `intent`
18
+
19
+ | Field | Meaning |
20
+ |-------|---------|
21
+ | `intent.name` | High-level user intent: start, resume, fix bug, make tweak, ask question, or unknown. |
22
+ | `intent.confidence` | Agent confidence in the high-level intent. This participates in low-confidence fallback; `proposed_route.confidence` does not. |
23
+
24
+ ## `slots`
25
+
26
+ | Field | Meaning |
27
+ |-------|---------|
28
+ | `requested_action` | The action the user wants, such as `start`, `resume`, `continue`, `fix`, `modify`, `create`, `verify`, `archive`, or `question`. |
29
+ | `workflow_candidate` | Agent-inferred candidate workflow: `full`, `hotfix`, `tweak`, or `null`. This is an inference and the runtime reviews it. |
30
+ | `user_explicit_workflow` | Whether the user explicitly named a workflow. If the user says "use hotfix", set `hotfix`; otherwise set `null`. Explicit workflow still falls back to `ask_user` when it conflicts with risk signals. |
31
+ | `change_id` | Active change name explicitly requested by the user for resume or operation. Use `null` when unspecified. |
32
+ | `existing_behavior` | Whether the request fixes existing behavior or a regression. `true` with no new capability/API/schema/cross-module risk tends toward `hotfix`. |
33
+ | `new_capability` | Whether the request adds a new capability. Usually tends toward `full`. |
34
+ | `public_api_change` | Whether the request changes a user-visible contract, such as CLI flags, config fields, JSON output, or public Skill flow. Usually tends toward `full`. |
35
+ | `schema_change` | Whether the request changes structured data formats, such as `.comet.yaml`, `run-state.json`, eval manifests, bundle manifests, or config schema. Usually tends toward `full`. |
36
+ | `cross_module_change` | Whether the request crosses module or workflow boundaries. Usually tends toward `full`. |
37
+ | `target_area` | Optional explanation field for the target area the user mentioned. The minimal skeleton does not need it. |
38
+ | `scope` | Optional explanation field for rough scope size. The current scorer does not let it drive routing by itself, and the minimal skeleton does not need it. |
39
+
40
+ ## `context`
41
+
42
+ | Field | Meaning |
43
+ |-------|---------|
44
+ | `active_changes_count` | Number of unarchived active changes from `openspec list --json`. Multiple active changes without a `change_id` route to `ask_user`. |
45
+ | `active_change_names` | Names of active changes. When the user supplies `change_id`, the runtime checks it against this list. |
46
+ | `dirty_worktree` | Optional state field. The entry-route minimal skeleton does not need it; dirty worktree handling belongs to `comet/reference/dirty-worktree.md`. |
47
+
48
+ ## `evidence`
49
+
50
+ Each evidence item contains:
51
+
52
+ | Field | Meaning |
53
+ |-------|---------|
54
+ | `field` | Frame field supported by the evidence, such as `intent.name` or `slots.workflow_candidate`. |
55
+ | `quote` | Evidence snippet from the user request, repository state, or `.comet.yaml`. |
56
+ | `source` | Evidence source: `user`, `repo`, or `state`. |
57
+
58
+ ## `proposed_route`
59
+
60
+ | Field | Meaning |
61
+ |-------|---------|
62
+ | `name` | Agent route candidate: `full`, `hotfix`, `tweak`, `resume`, `ask_user`, or `out_of_scope`. |
63
+ | `confidence` | Agent confidence in the route candidate. Diagnostic only; it does not participate in low-confidence fallback. |
64
+ | `next_skill` | Derived field normalized by the runtime. The minimal skeleton does not need it. |
65
+ | `requires_confirmation` | Derived field normalized by the runtime. The minimal skeleton does not need it. |
66
+ | `fallback_reason` | Derived field normalized by the runtime. The minimal skeleton does not need it. |
67
+
68
+ ## Routing Notes
69
+
70
+ - Existing bug, regression, or broken behavior with no new capability/API/schema/cross-module risk: prefer `hotfix`.
71
+ - Copy, config, docs, prompt, or lightweight/medium single OpenSpec change: prefer `tweak`.
72
+ - New capability, public API, schema change, cross-module coordination, or architecture work: prefer `full`.
73
+ - Multiple active changes without an explicit change: `ask_user`.
74
+ - Low confidence, missing key evidence, or explicit workflow conflicting with risk signals: `ask_user`.