oh-my-opencode 5.0.0-beta.6 → 5.0.0-beta.60

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 (990) hide show
  1. package/.agents/command/publish.md +59 -23
  2. package/.agents/skills/codex-qa/scripts/lsp-e2e.sh +1 -3
  3. package/.agents/skills/opencode-qa/scripts/lsp-e2e.sh +1 -1
  4. package/.agents/skills/pre-publish-review/SKILL.md +9 -12
  5. package/.agents/skills/publish/SKILL.md +59 -23
  6. package/.agents/skills/senpi-qa/SKILL.md +80 -0
  7. package/.agents/skills/senpi-qa/scripts/resolve-evidence-dir.mjs +65 -0
  8. package/.agents/skills/senpi-qa/scripts/resolve-evidence-dir.test.mjs +171 -0
  9. package/.agents/skills/tech-debt-audit/SKILL.md +6 -76
  10. package/.agents/skills/work-with-pr/SKILL.md +37 -23
  11. package/.opencode/command/publish.md +59 -23
  12. package/.opencode/skills/pre-publish-review/SKILL.md +9 -12
  13. package/.opencode/skills/work-with-pr/SKILL.md +37 -23
  14. package/README.ja.md +65 -60
  15. package/README.ko.md +66 -61
  16. package/README.md +65 -72
  17. package/README.ru.md +62 -60
  18. package/README.zh-cn.md +61 -60
  19. package/THIRD-PARTY-NOTICES.md +27 -99
  20. package/dist/agents/atlas/agent.d.ts +0 -1
  21. package/dist/agents/gpt-prompt-identity.d.ts +1 -1
  22. package/dist/agents/sisyphus/grok-4.d.ts +20 -0
  23. package/dist/agents/sisyphus/index.d.ts +2 -0
  24. package/dist/agents/sisyphus-agent-config.d.ts +6 -0
  25. package/dist/agents/sisyphus-agent-factory.d.ts +1 -1
  26. package/dist/agents/sisyphus-runtime-prompt-reconciler.d.ts +15 -4
  27. package/dist/agents/types.d.ts +4 -2
  28. package/dist/cli/config-manager/parse-opencode-config-file.d.ts +2 -1
  29. package/dist/cli/doctor/checks/index.d.ts +2 -0
  30. package/dist/cli/doctor/checks/latest-version.d.ts +11 -0
  31. package/dist/cli/doctor/checks/system-plugin.d.ts +4 -3
  32. package/dist/cli/doctor/framework/constants.d.ts +5 -0
  33. package/dist/cli/doctor/framework/types.d.ts +2 -0
  34. package/dist/cli/fallback-lane-policy.d.ts +1 -0
  35. package/dist/cli/index.js +51738 -59690
  36. package/dist/cli/install-codex/install-codex-test-fixtures.d.ts +1 -1
  37. package/dist/cli/run/on-complete-hook.d.ts +2 -0
  38. package/dist/cli/runtime-commands.d.ts +1 -1
  39. package/dist/cli/worktree-sweep/classify.d.ts +16 -0
  40. package/dist/cli/worktree-sweep/format.d.ts +8 -0
  41. package/dist/cli/worktree-sweep/git.d.ts +19 -0
  42. package/dist/cli/worktree-sweep/index.d.ts +7 -0
  43. package/dist/cli/worktree-sweep/options.d.ts +2 -0
  44. package/dist/cli/worktree-sweep/parse-worktree-list.d.ts +8 -0
  45. package/dist/cli/worktree-sweep/sweep.d.ts +2 -0
  46. package/dist/cli/worktree-sweep/types.d.ts +65 -0
  47. package/dist/cli/worktree-sweep/worktree-sweep.d.ts +2 -0
  48. package/dist/cli-node/index.js +50900 -58829
  49. package/dist/config/index.d.ts +1 -1
  50. package/dist/config/schema/background-task.d.ts +1 -0
  51. package/dist/config/schema/commands.d.ts +1 -1
  52. package/dist/config/schema/hooks.d.ts +1 -2
  53. package/dist/config/schema/oh-my-opencode-config.d.ts +5 -11
  54. package/dist/config/schema/ulw-execute.d.ts +5 -0
  55. package/dist/config/schema.d.ts +0 -1
  56. package/dist/config/validate.d.ts +2 -0
  57. package/dist/create-hooks.d.ts +3 -2
  58. package/dist/features/background-agent/compaction-aware-message-resolver.d.ts +1 -0
  59. package/dist/features/background-agent/constants.d.ts +0 -7
  60. package/dist/features/background-agent/error-classifier.d.ts +1 -0
  61. package/dist/features/background-agent/manager.d.ts +9 -1
  62. package/dist/features/background-agent/parent-wake-dispatched-tracker.d.ts +0 -1
  63. package/dist/features/background-agent/parent-wake-notifier-types.d.ts +1 -1
  64. package/dist/features/background-agent/parent-wake-prompt-dispatch.d.ts +1 -1
  65. package/dist/features/background-agent/parent-wake-session-inspector.d.ts +1 -1
  66. package/dist/features/background-agent/subagent-spawn-limits.d.ts +8 -0
  67. package/dist/features/background-agent/types.d.ts +4 -0
  68. package/dist/features/btw-side/btw-command-draft.d.ts +7 -0
  69. package/dist/features/btw-side/context-injector.d.ts +15 -0
  70. package/dist/features/btw-side/index.d.ts +8 -0
  71. package/dist/features/btw-side/metadata.d.ts +15 -0
  72. package/dist/features/btw-side/parent-context-budget.d.ts +9 -0
  73. package/dist/features/btw-side/server-session-registry.d.ts +8 -0
  74. package/dist/features/btw-side/tui-adoption-cache.d.ts +13 -0
  75. package/dist/features/btw-side/tui-adoption-guard.d.ts +5 -0
  76. package/dist/features/btw-side/tui-controller-types.d.ts +68 -0
  77. package/dist/features/btw-side/tui-controller.d.ts +19 -0
  78. package/dist/features/btw-side/tui-escape-return.d.ts +12 -0
  79. package/dist/features/btw-side/tui-keymap.d.ts +17 -0
  80. package/dist/features/btw-side/tui-parent-validator.d.ts +6 -0
  81. package/dist/features/btw-side/tui-picker-options.d.ts +20 -0
  82. package/dist/features/btw-side/tui-picker.d.ts +9 -0
  83. package/dist/features/btw-side/tui-prompt-queue.d.ts +8 -0
  84. package/dist/features/btw-side/tui-session-bridge.d.ts +11 -0
  85. package/dist/features/btw-side/tui-session-catalog.d.ts +35 -0
  86. package/dist/features/btw-side/tui-side-removal.d.ts +11 -0
  87. package/dist/features/btw-side/tui-side-start.d.ts +9 -0
  88. package/dist/features/btw-side/tui-wiring.d.ts +8 -0
  89. package/dist/features/builtin-commands/templates/ulw-execute.d.ts +1 -0
  90. package/dist/features/builtin-commands/types.d.ts +1 -1
  91. package/dist/features/claude-tasks/storage.d.ts +7 -2
  92. package/dist/features/hook-message-injector/index.d.ts +1 -0
  93. package/dist/features/hook-message-injector/sdk-message-lookup.d.ts +1 -0
  94. package/dist/features/monitor/manager-internals.d.ts +1 -1
  95. package/dist/features/monitor/output-injector-types.d.ts +1 -1
  96. package/dist/features/opengateway-provider/index.d.ts +13 -0
  97. package/dist/features/task-toast-manager/manager.d.ts +0 -24
  98. package/dist/features/team-mode/tools/messaging-fallback-wake.d.ts +17 -0
  99. package/dist/features/team-mode/tools/messaging-live-delivery-recipient.d.ts +3 -0
  100. package/dist/features/team-mode/tools/messaging-runtime.d.ts +7 -0
  101. package/dist/hooks/anthropic-context-window-limit-recovery/message-storage-directory.d.ts +0 -3
  102. package/dist/hooks/anthropic-context-window-limit-recovery/state.d.ts +1 -0
  103. package/dist/hooks/anthropic-context-window-limit-recovery/storage/empty-messages.d.ts +0 -1
  104. package/dist/hooks/anthropic-context-window-limit-recovery/tool-result-storage.d.ts +11 -0
  105. package/dist/hooks/atlas/atlas-hook.d.ts +1 -0
  106. package/dist/hooks/atlas/atlas-lifecycle-store.d.ts +50 -0
  107. package/dist/hooks/atlas/event-handler.d.ts +1 -0
  108. package/dist/hooks/atlas/final-wave-approval-gate.test-support.d.ts +50 -0
  109. package/dist/hooks/atlas/system-reminder-templates.d.ts +0 -1
  110. package/dist/hooks/atlas/tool-execute-before.d.ts +3 -0
  111. package/dist/hooks/atlas/types.d.ts +1 -0
  112. package/dist/hooks/claude-code-hooks/session-hook-state.d.ts +1 -0
  113. package/dist/hooks/claude-code-hooks/stop.d.ts +2 -0
  114. package/dist/hooks/claude-code-hooks/todo.d.ts +0 -1
  115. package/dist/hooks/claude-code-hooks/transcript.d.ts +2 -0
  116. package/dist/hooks/compaction-context-injector/validated-model.d.ts +2 -0
  117. package/dist/hooks/fsync-skip-warning/index.d.ts +4 -0
  118. package/dist/hooks/hashline-edit-diff-enhancer/hook.d.ts +1 -0
  119. package/dist/hooks/hashline-edit-diff-enhancer/pending-captures.d.ts +13 -0
  120. package/dist/hooks/index.d.ts +1 -2
  121. package/dist/hooks/keyword-detector/hook.d.ts +9 -0
  122. package/dist/hooks/keyword-detector/ultrawork/index.d.ts +2 -0
  123. package/dist/hooks/keyword-detector/ultrawork/source-detector.d.ts +0 -1
  124. package/dist/hooks/model-fallback/hook.d.ts +1 -1
  125. package/dist/hooks/prometheus-md-only/agent-resolution.d.ts +2 -2
  126. package/dist/hooks/runtime-fallback/chat-message-handler.d.ts +2 -0
  127. package/dist/hooks/runtime-fallback/retry-model-payload.d.ts +1 -0
  128. package/dist/hooks/runtime-fallback/runtime-model-settings.d.ts +6 -0
  129. package/dist/hooks/runtime-fallback/session-status-handler.d.ts +1 -1
  130. package/dist/hooks/runtime-fallback/types.d.ts +3 -1
  131. package/dist/hooks/sisyphus-junior-notepad/constants.d.ts +1 -1
  132. package/dist/hooks/todo-continuation-enforcer/types.d.ts +1 -0
  133. package/dist/hooks/{start-work → ulw-execute}/context-info-builder.d.ts +1 -1
  134. package/dist/hooks/{start-work → ulw-execute}/index.d.ts +1 -1
  135. package/dist/hooks/ulw-execute/ulw-execute-hook.d.ts +23 -0
  136. package/dist/hooks/unstable-agent-babysitter/task-message-analyzer.d.ts +1 -0
  137. package/dist/index.js +29256 -25391
  138. package/dist/mcp/index.d.ts +0 -4
  139. package/dist/mcp/types.d.ts +0 -1
  140. package/dist/oh-my-opencode.schema.json +21 -47
  141. package/dist/plugin/chat-message/types.d.ts +6 -4
  142. package/dist/plugin/chat-message/ulw-execute-message.d.ts +5 -0
  143. package/dist/plugin/event-session-lifecycle.d.ts +1 -0
  144. package/dist/plugin/hooks/create-core-hooks.d.ts +2 -2
  145. package/dist/plugin/hooks/create-session-hooks.d.ts +2 -3
  146. package/dist/plugin/hooks/create-transform-hooks.d.ts +2 -0
  147. package/dist/plugin/messages-transform.d.ts +1 -0
  148. package/dist/plugin/stop-continuation.d.ts +3 -0
  149. package/dist/plugin/system-transform.d.ts +5 -1
  150. package/dist/plugin-dispose.d.ts +3 -0
  151. package/dist/shared/agent-tool-restrictions.d.ts +0 -1
  152. package/dist/shared/compaction-agent-config-checkpoint.d.ts +1 -0
  153. package/dist/shared/index.d.ts +2 -0
  154. package/dist/shared/legacy-plugin-warning.d.ts +2 -1
  155. package/dist/shared/normalize-sdk-response.d.ts +1 -0
  156. package/dist/shared/omo-process-sweep.d.ts +2 -4
  157. package/dist/shared/plugin-entry-migrator.d.ts +4 -3
  158. package/dist/shared/plugin-entry-shape.d.ts +6 -0
  159. package/dist/shared/runtime-fallback-retry-marker.d.ts +16 -0
  160. package/dist/shared/shell-env.d.ts +1 -1
  161. package/dist/skills/ast-grep/AGENTS.md +51 -0
  162. package/dist/skills/ast-grep/SKILL.md +1 -1
  163. package/dist/skills/coding-agent-sessions/AGENTS.md +62 -0
  164. package/dist/skills/coding-agent-sessions/SKILL.md +1 -1
  165. package/dist/skills/data-scientist/SKILL.md +99 -239
  166. package/dist/skills/data-scientist/references/execution-surfaces.md +91 -0
  167. package/dist/skills/data-scientist/references/placement.md +74 -0
  168. package/dist/skills/data-scientist/references/polars-lane.md +95 -0
  169. package/dist/skills/data-scientist/references/uv-setup.md +1 -1
  170. package/dist/skills/data-scientist/references/visualization.md +64 -0
  171. package/dist/skills/data-scientist/scripts/ensure-js-deps.sh +28 -0
  172. package/dist/skills/data-scientist/scripts/ensure-py-deps.sh +37 -0
  173. package/dist/skills/debugging/SKILL.md +3 -1
  174. package/dist/skills/debugging/references/methodology/00-setup.md +12 -0
  175. package/dist/skills/debugging/references/methodology/02-investigate.md +21 -0
  176. package/dist/skills/debugging/references/runtimes/go.md +15 -1
  177. package/dist/skills/debugging/references/runtimes/native-binary.md +38 -0
  178. package/dist/skills/debugging/references/runtimes/node.md +25 -0
  179. package/dist/skills/debugging/references/runtimes/python.md +13 -0
  180. package/dist/skills/debugging/references/runtimes/rust.md +41 -0
  181. package/dist/skills/debugging/references/scripts/dap.mjs +267 -0
  182. package/dist/skills/debugging/references/scripts/dap.test.ts +86 -0
  183. package/dist/skills/debugging/references/scripts/fixture-adapter.mjs +59 -0
  184. package/dist/skills/debugging/references/tools/dap.md +103 -0
  185. package/dist/skills/debugging/references/tools/frida.md +193 -0
  186. package/dist/skills/frontend/ATTRIBUTION.md +10 -0
  187. package/dist/skills/frontend/SKILL.md +15 -8
  188. package/dist/skills/frontend/references/design/README.md +10 -2
  189. package/dist/skills/frontend/references/design/_INDEX.md +2 -0
  190. package/dist/skills/frontend/references/design/ambience-skill.md +145 -0
  191. package/dist/skills/frontend/references/design/interaction-skill.md +2 -0
  192. package/dist/skills/frontend/references/design/print-paged-media.md +76 -0
  193. package/dist/skills/frontend/references/design/stylegallery.md +80 -0
  194. package/dist/skills/frontend/references/designpowers/README.md +1 -1
  195. package/dist/skills/frontend/references/designpowers/lane-a-direction.md +1 -1
  196. package/dist/skills/frontend/references/designpowers/lane-b-execution.md +11 -11
  197. package/dist/skills/frontend/references/designpowers/lane-d-memory.md +3 -3
  198. package/dist/skills/frontend/references/designpowers/orchestration.md +1 -1
  199. package/dist/skills/frontend/references/designpowers/routing.md +5 -5
  200. package/dist/skills/git-master/SKILL.md +1 -1
  201. package/dist/skills/init-deep/SKILL.md +14 -14
  202. package/dist/skills/lsp-setup/SKILL.md +1 -1
  203. package/dist/skills/programming/SKILL.md +1 -1
  204. package/dist/skills/refactor/SKILL.md +4 -4
  205. package/dist/skills/remove-ai-slops/SKILL.md +1 -1
  206. package/dist/skills/review-work/SKILL.md +101 -419
  207. package/dist/skills/ultimate-browsing/ATTRIBUTION.md +38 -11
  208. package/dist/skills/ultimate-browsing/SKILL.md +26 -9
  209. package/dist/skills/ultimate-browsing/engine/AGENTS.md +110 -0
  210. package/dist/skills/ultimate-browsing/engine/templates/package.json +1 -1
  211. package/dist/skills/ultimate-browsing/references/chrome-stealth.md +23 -18
  212. package/dist/skills/ultimate-browsing/references/insane-search/README.md +9 -2
  213. package/dist/skills/{start-work → ulw-execute}/SKILL.md +20 -19
  214. package/dist/skills/ulw-plan/SKILL.md +7 -8
  215. package/dist/skills/ulw-plan/references/full-workflow.md +31 -7
  216. package/dist/skills/ulw-plan/references/intent-clear.md +2 -1
  217. package/dist/skills/ulw-plan/references/intent-unclear.md +5 -5
  218. package/dist/skills/ulw-plan/scripts/scaffold-plan.mjs +1 -1
  219. package/dist/skills/ulw-research/SKILL.md +8 -3
  220. package/dist/skills/visual-qa/AGENTS.md +58 -0
  221. package/dist/skills/visual-qa/SKILL.md +4 -3
  222. package/dist/tools/delegate-task/builtin-categories.d.ts +3 -1
  223. package/dist/tools/delegate-task/builtin-category-definition.d.ts +2 -1
  224. package/dist/tools/delegate-task/constants.d.ts +2 -2
  225. package/dist/tools/delegate-task/openai-categories.d.ts +7 -2
  226. package/dist/tools/delegate-task/sync-session-cleanup.d.ts +3 -0
  227. package/dist/tools/delegate-task/sync-session-poller.d.ts +1 -0
  228. package/dist/tools/delegate-task/tool-description.d.ts +3 -1
  229. package/dist/tools/delegate-task/types.d.ts +4 -0
  230. package/dist/tools/session-manager/directory-filter.d.ts +2 -0
  231. package/dist/tui.d.ts +12 -0
  232. package/dist/tui.js +37048 -46599
  233. package/package.json +47 -41
  234. package/packages/git-bash-mcp/dist/cli.js +6 -1
  235. package/packages/git-bash-mcp/package.json +1 -1
  236. package/packages/lsp-core/src/index.ts +1 -0
  237. package/packages/lsp-core/src/lsp/client-diagnostics-concurrency.integration.test.ts +44 -0
  238. package/packages/lsp-core/src/lsp/client-diagnostics-freshness.integration.test.ts +57 -48
  239. package/packages/lsp-core/src/lsp/client-diagnostics-pull-timeout.test.ts +64 -0
  240. package/packages/lsp-core/src/lsp/client-wrapper-outside-cwd.test.ts +78 -0
  241. package/packages/lsp-core/src/lsp/client-wrapper.test.ts +103 -6
  242. package/packages/lsp-core/src/lsp/client-wrapper.ts +50 -16
  243. package/packages/lsp-core/src/lsp/client.ts +32 -3
  244. package/packages/lsp-core/src/lsp/connection.ts +16 -0
  245. package/packages/lsp-core/src/lsp/constants.ts +6 -0
  246. package/packages/lsp-core/src/lsp/controlled-clock-test-support.ts +61 -0
  247. package/packages/lsp-core/src/lsp/errors.ts +15 -0
  248. package/packages/lsp-core/src/lsp/fixtures/workspace-edit-server.mjs +10 -3
  249. package/packages/lsp-core/src/lsp/format-document.test.ts +143 -0
  250. package/packages/lsp-core/src/lsp/format-document.ts +90 -0
  251. package/packages/lsp-core/src/lsp/json-rpc-connection.ts +11 -6
  252. package/packages/lsp-core/src/lsp/manager-lifecycle.test.ts +262 -0
  253. package/packages/lsp-core/src/lsp/manager-max-clients.test.ts +151 -0
  254. package/packages/lsp-core/src/lsp/manager.ts +138 -12
  255. package/packages/lsp-core/src/lsp/outside-context-workspace.ts +33 -0
  256. package/packages/lsp-core/src/lsp/server-definitions.ts +29 -0
  257. package/packages/lsp-core/src/lsp/server-installation.test.ts +376 -0
  258. package/packages/lsp-core/src/lsp/server-installation.ts +200 -27
  259. package/packages/lsp-core/src/lsp/server-resolution-local-binary.test.ts +170 -0
  260. package/packages/lsp-core/src/lsp/server-resolution.ts +18 -5
  261. package/packages/lsp-core/src/lsp/timer-provider.ts +13 -0
  262. package/packages/lsp-core/src/lsp/transport-request-timeout.test.ts +73 -0
  263. package/packages/lsp-core/src/lsp/transport.ts +16 -2
  264. package/packages/lsp-core/src/lsp/types.ts +8 -0
  265. package/packages/lsp-core/src/lsp/workspace-apply-edit-test-support.ts +29 -1
  266. package/packages/lsp-core/src/lsp/workspace-document-state.test.ts +84 -1
  267. package/packages/lsp-core/src/lsp/workspace-document-state.ts +30 -11
  268. package/packages/lsp-core/src/lsp/workspace-markers.ts +18 -0
  269. package/packages/lsp-core/src/mcp.ts +3 -0
  270. package/packages/lsp-core/src/request-context.test.ts +29 -0
  271. package/packages/lsp-core/src/request-context.ts +1 -1
  272. package/packages/lsp-core/src/tool-surface.test.ts +13 -1
  273. package/packages/lsp-core/src/tools/definitions.ts +14 -0
  274. package/packages/lsp-core/src/tools/format.test.ts +56 -0
  275. package/packages/lsp-core/src/tools/format.ts +56 -0
  276. package/packages/lsp-core/src/tools/index.ts +1 -0
  277. package/packages/lsp-core/src/tools/parameters.test.ts +51 -0
  278. package/packages/lsp-core/src/tools/types.ts +10 -0
  279. package/packages/lsp-daemon/dist/cli.js +902 -479
  280. package/packages/lsp-daemon/dist/client.d.ts +10 -0
  281. package/packages/lsp-daemon/dist/client.js +920 -493
  282. package/packages/lsp-daemon/dist/daemon-client.d.ts +1 -0
  283. package/packages/lsp-daemon/dist/daemon-client.js +3 -0
  284. package/packages/lsp-daemon/dist/ensure-daemon.d.ts +6 -1
  285. package/packages/lsp-daemon/dist/ensure-daemon.js +10 -2
  286. package/packages/lsp-daemon/dist/index.js +824 -402
  287. package/packages/lsp-daemon/dist/ownership.js +2 -2
  288. package/packages/lsp-daemon/dist/proxy.js +3 -0
  289. package/packages/lsp-daemon/dist/version-reap.js +1 -1
  290. package/packages/lsp-daemon/package.json +1 -1
  291. package/packages/lsp-tools-mcp/dist/cli.js +762 -341
  292. package/packages/lsp-tools-mcp/dist/lsp/manager.js +272 -138
  293. package/packages/lsp-tools-mcp/dist/mcp.js +787 -368
  294. package/packages/lsp-tools-mcp/dist/request-context.js +12 -13
  295. package/packages/lsp-tools-mcp/dist/tools.js +717 -302
  296. package/packages/lsp-tools-mcp/package.json +1 -1
  297. package/packages/omo-codex/THIRD-PARTY-NOTICES.md +4 -21
  298. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +4 -6
  299. package/packages/omo-codex/plugin/.mcp.json +0 -6
  300. package/packages/omo-codex/plugin/AGENTS.md +47 -0
  301. package/packages/omo-codex/plugin/README.md +6 -2
  302. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +197 -148
  303. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  304. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  305. package/packages/omo-codex/plugin/components/bootstrap/src/hook.ts +1 -0
  306. package/packages/omo-codex/plugin/components/comment-checker/AGENTS.md +9 -0
  307. package/packages/omo-codex/plugin/components/comment-checker/biome.json +2 -2
  308. package/packages/omo-codex/plugin/components/comment-checker/dist/cli.js +2 -1
  309. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  310. package/packages/omo-codex/plugin/components/comment-checker/package.json +5 -5
  311. package/packages/omo-codex/plugin/components/comment-checker/src/apply-patch.ts +2 -8
  312. package/packages/omo-codex/plugin/components/comment-checker/src/core.ts +1 -2
  313. package/packages/omo-codex/plugin/components/comment-checker/src/request-extractor.ts +1 -1
  314. package/packages/omo-codex/plugin/components/comment-checker/src/runner.ts +1 -0
  315. package/packages/omo-codex/plugin/components/git-bash/AGENTS.md +1 -1
  316. package/packages/omo-codex/plugin/components/git-bash/dist/cli.js +1 -1
  317. package/packages/omo-codex/plugin/components/git-bash/dist/codex-hook.js +2 -1
  318. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  319. package/packages/omo-codex/plugin/components/git-bash/package.json +3 -4
  320. package/packages/omo-codex/plugin/components/git-bash/src/codex-hook.ts +2 -1
  321. package/packages/omo-codex/plugin/components/git-bash/test/codex-hook.test.ts +6 -7
  322. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/AGENTS.md +2 -2
  323. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/biome.json +2 -2
  324. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/directive.md +2 -0
  325. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/dist/cli.js +36 -29
  326. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/dist/codex-hook.js +32 -26
  327. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/dist/types.d.ts +3 -0
  328. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  329. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +5 -5
  330. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/src/codex-hook.ts +32 -28
  331. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/src/types.ts +3 -0
  332. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/test/cli.test.ts +1 -1
  333. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/test/codex-hook.test.ts +137 -28
  334. package/packages/omo-codex/plugin/components/lcx/skills/lcx-doctor/SKILL.md +4 -2
  335. package/packages/omo-codex/plugin/components/lsp/AGENTS.md +30 -15
  336. package/packages/omo-codex/plugin/components/lsp/biome.json +2 -2
  337. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +4 -4
  338. package/packages/omo-codex/plugin/components/lsp/dist/cli.js +941 -540
  339. package/packages/omo-codex/plugin/components/lsp/dist/daemon-cli-path.js +1 -1
  340. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  341. package/packages/omo-codex/plugin/components/lsp/package.json +5 -5
  342. package/packages/omo-codex/plugin/components/lsp/src/cli.ts +1 -1
  343. package/packages/omo-codex/plugin/components/lsp/src/codex-hook.ts +1 -1
  344. package/packages/omo-codex/plugin/components/lsp/src/daemon-cli-path.ts +1 -5
  345. package/packages/omo-codex/plugin/components/lsp/test/codex-hook-unavailable.test.ts +6 -7
  346. package/packages/omo-codex/plugin/components/lsp/test/codex-hook.test.ts +1 -2
  347. package/packages/omo-codex/plugin/components/lsp/test/package-smoke.test.ts +11 -1
  348. package/packages/omo-codex/plugin/components/rules/AGENTS.md +12 -0
  349. package/packages/omo-codex/plugin/components/rules/README.md +2 -0
  350. package/packages/omo-codex/plugin/components/rules/biome.json +2 -2
  351. package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus/gpt-6.md +123 -0
  352. package/packages/omo-codex/plugin/components/rules/dist/cli.js +91 -68
  353. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  354. package/packages/omo-codex/plugin/components/rules/package.json +7 -7
  355. package/packages/omo-codex/plugin/components/rules/src/config.ts +1 -2
  356. package/packages/omo-codex/plugin/components/rules/src/persistent-cache.ts +1 -2
  357. package/packages/omo-codex/plugin/components/rules/src/post-compact-budget.ts +15 -5
  358. package/packages/omo-codex/plugin/components/rules/src/rules-engine-factory.ts +1 -4
  359. package/packages/omo-codex/plugin/components/rules/src/static-injection.ts +4 -9
  360. package/packages/omo-codex/plugin/components/rules/test/bundled-rules-priority.test.ts +11 -16
  361. package/packages/omo-codex/plugin/components/rules/test/bundled-rules.test.ts +17 -25
  362. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-budget.test.ts +9 -7
  363. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-context.test.ts +0 -6
  364. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-dedup.test.ts +6 -4
  365. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-directive.test.ts +12 -9
  366. package/packages/omo-codex/plugin/components/rules/test/codex-hook.test.ts +28 -37
  367. package/packages/omo-codex/plugin/components/rules/test/dynamic-target-fingerprints.test.ts +1 -2
  368. package/packages/omo-codex/plugin/components/rules/test/engine.test.ts +7 -4
  369. package/packages/omo-codex/plugin/components/rules/test/finder.test.ts +2 -3
  370. package/packages/omo-codex/plugin/components/rules/test/formatter.test.ts +39 -72
  371. package/packages/omo-codex/plugin/components/rules/test/hephaestus-model-variant.test.ts +38 -3
  372. package/packages/omo-codex/plugin/components/rules/test/hook-output.test.ts +2 -3
  373. package/packages/omo-codex/plugin/components/rules/test/matcher.test.ts +2 -3
  374. package/packages/omo-codex/plugin/components/rules/test/package-smoke.test.ts +1 -1
  375. package/packages/omo-codex/plugin/components/rules/test/parser.test.ts +1 -2
  376. package/packages/omo-codex/plugin/components/rules/test/post-compact-budget.test.ts +29 -6
  377. package/packages/omo-codex/plugin/components/rules/test/rules-engine-consumption.test.ts +3 -6
  378. package/packages/omo-codex/plugin/components/rules/test/scanner.test.ts +1 -2
  379. package/packages/omo-codex/plugin/components/rules/test/sources.test.ts +2 -5
  380. package/packages/omo-codex/plugin/components/rules/test/windows-git-bash-bundled-rule.test.ts +2 -17
  381. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  382. package/packages/omo-codex/plugin/components/teammode/package.json +5 -5
  383. package/packages/omo-codex/plugin/components/teammode/test/thread-title-hook.test.ts +4 -10
  384. package/packages/omo-codex/plugin/components/telemetry/AGENTS.md +8 -0
  385. package/packages/omo-codex/plugin/components/telemetry/biome.json +2 -2
  386. package/packages/omo-codex/plugin/components/telemetry/dist/cli.js +2407 -684
  387. package/packages/omo-codex/plugin/components/telemetry/dist/posthog.js +2411 -689
  388. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  389. package/packages/omo-codex/plugin/components/telemetry/package.json +5 -5
  390. package/packages/omo-codex/plugin/components/telemetry/src/codex-hook.ts +1 -4
  391. package/packages/omo-codex/plugin/components/telemetry/src/posthog.ts +4 -14
  392. package/packages/omo-codex/plugin/components/telemetry/src/product-identity.ts +1 -1
  393. package/packages/omo-codex/plugin/components/telemetry/test/diagnostics.test.ts +2 -5
  394. package/packages/omo-codex/plugin/components/ultrawork/AGENTS.md +10 -4
  395. package/packages/omo-codex/plugin/components/ultrawork/README.md +2 -0
  396. package/packages/omo-codex/plugin/components/ultrawork/agents/explorer.toml +1 -1
  397. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-clone-fidelity-reviewer.toml +1 -1
  398. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-code-reviewer.toml +1 -1
  399. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-gate-reviewer.toml +1 -1
  400. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-qa-executor.toml +1 -1
  401. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-worker-high.toml +1 -1
  402. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-worker-low.toml +1 -1
  403. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-worker-medium.toml +1 -1
  404. package/packages/omo-codex/plugin/components/ultrawork/agents/librarian.toml +1 -1
  405. package/packages/omo-codex/plugin/components/ultrawork/agents/metis.toml +1 -1
  406. package/packages/omo-codex/plugin/components/ultrawork/agents/momus.toml +1 -1
  407. package/packages/omo-codex/plugin/components/ultrawork/agents/plan.toml +1 -1
  408. package/packages/omo-codex/plugin/components/ultrawork/biome.json +2 -2
  409. package/packages/omo-codex/plugin/components/ultrawork/dist/cli.js +490 -4
  410. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  411. package/packages/omo-codex/plugin/components/ultrawork/package.json +5 -6
  412. package/packages/omo-codex/plugin/components/ultrawork/scripts/sync-directive.mjs +30 -14
  413. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/SKILL.md +6 -7
  414. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +31 -7
  415. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-clear.md +2 -1
  416. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-unclear.md +5 -5
  417. package/packages/omo-codex/plugin/components/ultrawork/src/directive-content.ts +4 -0
  418. package/packages/omo-codex/plugin/components/ultrawork/src/directive.ts +5 -2
  419. package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook-trigger-policy.test.ts +9 -1
  420. package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook.test.ts +0 -136
  421. package/packages/omo-codex/plugin/components/ultrawork/test/directive-source.test.ts +14 -8
  422. package/packages/omo-codex/plugin/components/ultrawork/test/package-smoke.test.ts +12 -1
  423. package/packages/omo-codex/plugin/components/ultrawork/test/skill-pointer.test.ts +0 -2
  424. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/AGENTS.md +4 -4
  425. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/NOTICE +1 -1
  426. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/README.md +6 -6
  427. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/biome.json +2 -2
  428. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/directive.md +10 -10
  429. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/dist/cli.js +16 -16
  430. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +16 -0
  431. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/package.json +12 -12
  432. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/boulder-reader.ts +1 -1
  433. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/cli.ts +1 -1
  434. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/codex-hook.ts +4 -4
  435. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/directive.ts +1 -1
  436. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/index.ts +1 -1
  437. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/types.ts +1 -1
  438. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/boulder-reader.test.ts +3 -3
  439. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/cli.test.ts +4 -11
  440. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/codex-hook.test.ts +24 -22
  441. package/packages/omo-codex/plugin/components/ulw-loop/AGENTS.md +19 -0
  442. package/packages/omo-codex/plugin/components/ulw-loop/CHANGELOG.md +1 -1
  443. package/packages/omo-codex/plugin/components/ulw-loop/README.md +12 -1
  444. package/packages/omo-codex/plugin/components/ulw-loop/biome.json +2 -2
  445. package/packages/omo-codex/plugin/components/ulw-loop/directive.md +26 -13
  446. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-codex-validation.d.ts +16 -0
  447. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-codex-validation.js +25 -0
  448. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-continuation.js +10 -4
  449. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-reconciliation.d.ts +2 -5
  450. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-reconciliation.js +5 -78
  451. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-template.d.ts +12 -0
  452. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-template.js +114 -0
  453. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint.d.ts +7 -1
  454. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint.js +50 -42
  455. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-arg-parser.js +2 -2
  456. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-commands.js +21 -8
  457. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-output.d.ts +2 -1
  458. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-output.js +12 -1
  459. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-subcommands.d.ts +1 -1
  460. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-subcommands.js +40 -37
  461. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +1396 -516
  462. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-instruction.d.ts +2 -0
  463. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-instruction.js +28 -8
  464. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-snapshot.d.ts +2 -5
  465. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-snapshot.js +24 -20
  466. package/packages/omo-codex/plugin/components/ulw-loop/dist/constants.d.ts +1 -0
  467. package/packages/omo-codex/plugin/components/ulw-loop/dist/constants.js +1 -0
  468. package/packages/omo-codex/plugin/components/ulw-loop/dist/domain-types.d.ts +17 -9
  469. package/packages/omo-codex/plugin/components/ulw-loop/dist/paths.d.ts +1 -0
  470. package/packages/omo-codex/plugin/components/ulw-loop/dist/paths.js +13 -4
  471. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-io.d.ts +1 -0
  472. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-io.js +34 -4
  473. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-missing-recovery.d.ts +14 -0
  474. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-missing-recovery.js +29 -0
  475. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-aggregate.d.ts +7 -0
  476. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-aggregate.js +9 -0
  477. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-artifacts.d.ts +12 -0
  478. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-artifacts.js +104 -0
  479. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-fields.d.ts +13 -1
  480. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-fields.js +65 -9
  481. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-verdicts.js +5 -1
  482. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate.d.ts +4 -2
  483. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate.js +72 -117
  484. package/packages/omo-codex/plugin/components/ulw-loop/dist/review-blockers.d.ts +2 -0
  485. package/packages/omo-codex/plugin/components/ulw-loop/dist/review-blockers.js +16 -7
  486. package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/factory.d.ts +2 -0
  487. package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/factory.js +125 -0
  488. package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/manifest.d.ts +46 -0
  489. package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/manifest.js +28 -0
  490. package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/types.d.ts +127 -0
  491. package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/types.js +1 -0
  492. package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk.d.ts +3 -0
  493. package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk.js +3 -0
  494. package/packages/omo-codex/plugin/components/ulw-loop/dist/spawn-guard.d.ts +6 -1
  495. package/packages/omo-codex/plugin/components/ulw-loop/dist/spawn-guard.js +195 -29
  496. package/packages/omo-codex/plugin/components/ulw-loop/dist/state-lock.d.ts +9 -0
  497. package/packages/omo-codex/plugin/components/ulw-loop/dist/state-lock.js +227 -0
  498. package/packages/omo-codex/plugin/components/ulw-loop/dist/status-next-actions.d.ts +6 -0
  499. package/packages/omo-codex/plugin/components/ulw-loop/dist/status-next-actions.js +33 -0
  500. package/packages/omo-codex/plugin/components/ulw-loop/dist/stop-resume-hook.js +20 -6
  501. package/packages/omo-codex/plugin/components/ulw-loop/dist/surface.d.ts +19 -0
  502. package/packages/omo-codex/plugin/components/ulw-loop/dist/surface.js +75 -0
  503. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +17 -4
  504. package/packages/omo-codex/plugin/components/ulw-loop/package.json +6 -6
  505. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +10 -4
  506. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/define-goal.md +108 -0
  507. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +32 -8
  508. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-codex-validation.ts +40 -0
  509. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-continuation.ts +8 -6
  510. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-reconciliation.ts +5 -98
  511. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-template.ts +134 -0
  512. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint.ts +52 -73
  513. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-arg-parser.ts +10 -4
  514. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-commands.ts +24 -8
  515. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-output.ts +14 -1
  516. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-subcommands.ts +52 -46
  517. package/packages/omo-codex/plugin/components/ulw-loop/src/cli.ts +8 -6
  518. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-instruction.ts +35 -7
  519. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-snapshot.ts +34 -28
  520. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-hook.ts +3 -1
  521. package/packages/omo-codex/plugin/components/ulw-loop/src/constants.ts +1 -0
  522. package/packages/omo-codex/plugin/components/ulw-loop/src/domain-types.ts +19 -9
  523. package/packages/omo-codex/plugin/components/ulw-loop/src/paths.ts +25 -4
  524. package/packages/omo-codex/plugin/components/ulw-loop/src/plan-io.ts +39 -4
  525. package/packages/omo-codex/plugin/components/ulw-loop/src/plan-missing-recovery.ts +38 -0
  526. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate-aggregate.ts +11 -0
  527. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate-artifacts.ts +123 -0
  528. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate-fields.ts +71 -15
  529. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate-verdicts.ts +6 -1
  530. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate.ts +92 -136
  531. package/packages/omo-codex/plugin/components/ulw-loop/src/review-blockers.ts +29 -8
  532. package/packages/omo-codex/plugin/components/ulw-loop/src/sdk/factory.ts +159 -0
  533. package/packages/omo-codex/plugin/components/ulw-loop/src/sdk/manifest.ts +42 -0
  534. package/packages/omo-codex/plugin/components/ulw-loop/src/sdk/types.ts +140 -0
  535. package/packages/omo-codex/plugin/components/ulw-loop/src/sdk.ts +3 -0
  536. package/packages/omo-codex/plugin/components/ulw-loop/src/spawn-guard.ts +205 -28
  537. package/packages/omo-codex/plugin/components/ulw-loop/src/state-lock.ts +239 -0
  538. package/packages/omo-codex/plugin/components/ulw-loop/src/status-next-actions.ts +36 -0
  539. package/packages/omo-codex/plugin/components/ulw-loop/src/stop-resume-hook.ts +19 -6
  540. package/packages/omo-codex/plugin/components/ulw-loop/src/surface.ts +107 -0
  541. package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint-continuation.test.ts +0 -1
  542. package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint-final.test.ts +131 -82
  543. package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint-template.test.ts +147 -0
  544. package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint.test.ts +16 -22
  545. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-checkpoint-continuation.test.ts +4 -2
  546. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-checkpoint.test.ts +31 -2
  547. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-commands.test.ts +2 -0
  548. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-complete-goals.test.ts +3 -1
  549. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-create-goals.test.ts +35 -8
  550. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-entrypoint.test.ts +38 -4
  551. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-json-errors.test.ts +27 -0
  552. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-scope-required.test.ts +144 -0
  553. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-status-next-actions.test.ts +185 -0
  554. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-steering-batch.test.ts +8 -3
  555. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-validation-batch.test.ts +6 -0
  556. package/packages/omo-codex/plugin/components/ulw-loop/test/codex-goal-instruction.test.ts +37 -2
  557. package/packages/omo-codex/plugin/components/ulw-loop/test/codex-goal-snapshot.test.ts +52 -11
  558. package/packages/omo-codex/plugin/components/ulw-loop/test/codex-hook.test.ts +0 -3
  559. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/cli-session.ts +4 -0
  560. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/quality-gate-builder.ts +9 -4
  561. package/packages/omo-codex/plugin/components/ulw-loop/test/guided-recovery.test.ts +67 -0
  562. package/packages/omo-codex/plugin/components/ulw-loop/test/package-smoke.test.ts +5 -37
  563. package/packages/omo-codex/plugin/components/ulw-loop/test/paths.test.ts +9 -0
  564. package/packages/omo-codex/plugin/components/ulw-loop/test/plan-io-cross-process.test.ts +106 -0
  565. package/packages/omo-codex/plugin/components/ulw-loop/test/plan-io.test.ts +36 -2
  566. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-aggregate-basics.test.ts +258 -0
  567. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-cap-and-dedupe.test.ts +22 -0
  568. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-fields-messages.test.ts +98 -0
  569. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-lazycodex-surface.test.ts +93 -0
  570. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-poisoning-cascades.test.ts +97 -0
  571. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-roles.test.ts +51 -2
  572. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-senpi-surface.test.ts +131 -0
  573. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-single-report.test.ts +241 -0
  574. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate.test.ts +58 -3
  575. package/packages/omo-codex/plugin/components/ulw-loop/test/review-blockers.test.ts +9 -7
  576. package/packages/omo-codex/plugin/components/ulw-loop/test/sdk-contract.test.ts +137 -0
  577. package/packages/omo-codex/plugin/components/ulw-loop/test/sdk-session-context.test.ts +148 -0
  578. package/packages/omo-codex/plugin/components/ulw-loop/test/spawn-guard.test.ts +444 -7
  579. package/packages/omo-codex/plugin/components/ulw-loop/test/state-lock.test.ts +218 -0
  580. package/packages/omo-codex/plugin/components/ulw-loop/test/steering.test.ts +8 -5
  581. package/packages/omo-codex/plugin/components/ulw-loop/test/stop-resume-hook.test.ts +1 -1
  582. package/packages/omo-codex/plugin/components/ulw-loop/test/surface.test.ts +74 -0
  583. package/packages/omo-codex/plugin/components/ulw-loop/test/ultrawork-directive.test.ts +13 -8
  584. package/packages/omo-codex/plugin/components/ulw-loop/vitest.config.ts +1 -0
  585. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  586. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  587. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  588. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  589. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  590. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  591. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  592. package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +18 -0
  593. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  594. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  595. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  596. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  597. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  598. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  599. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  600. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +17 -0
  601. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  602. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  603. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  604. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  605. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  606. package/packages/omo-codex/plugin/model-catalog.json +16 -7
  607. package/packages/omo-codex/plugin/package-lock.json +676 -524
  608. package/packages/omo-codex/plugin/package.json +2 -3
  609. package/packages/omo-codex/plugin/scripts/AGENTS.md +39 -0
  610. package/packages/omo-codex/plugin/scripts/auto-update-plan.mjs +1 -2
  611. package/packages/omo-codex/plugin/scripts/auto-update.mjs +0 -9
  612. package/packages/omo-codex/plugin/scripts/canonical-ultrawork-directive.mjs +17 -0
  613. package/packages/omo-codex/plugin/scripts/hook-status-message.mjs +0 -1
  614. package/packages/omo-codex/plugin/scripts/migrate-codex-config/catalog.mjs +16 -7
  615. package/packages/omo-codex/plugin/scripts/migrate-codex-config/multi-agent-v2-guard.mjs +8 -4
  616. package/packages/omo-codex/plugin/scripts/migrate-codex-config/subagent-limit-guard.mjs +19 -90
  617. package/packages/omo-codex/plugin/scripts/migrate-codex-config/toml-section-editor.mjs +1 -1
  618. package/packages/omo-codex/plugin/scripts/sync-skills.mjs +94 -55
  619. package/packages/omo-codex/plugin/shared/package.json +3 -4
  620. package/packages/omo-codex/plugin/shared/src/config-loader.ts +2 -102
  621. package/packages/omo-codex/plugin/shared/src/config-migration.ts +0 -1
  622. package/packages/omo-codex/plugin/shared/test/config-loader.test.ts +41 -130
  623. package/packages/omo-codex/plugin/skills/ast-grep/AGENTS.md +51 -0
  624. package/packages/omo-codex/plugin/skills/ast-grep/SKILL.md +1 -1
  625. package/packages/omo-codex/plugin/skills/coding-agent-sessions/AGENTS.md +62 -0
  626. package/packages/omo-codex/plugin/skills/coding-agent-sessions/SKILL.md +1 -1
  627. package/packages/omo-codex/plugin/skills/data-scientist/SKILL.md +99 -239
  628. package/packages/omo-codex/plugin/skills/data-scientist/references/execution-surfaces.md +91 -0
  629. package/packages/omo-codex/plugin/skills/data-scientist/references/placement.md +74 -0
  630. package/packages/omo-codex/plugin/skills/data-scientist/references/polars-lane.md +95 -0
  631. package/packages/omo-codex/plugin/skills/data-scientist/references/uv-setup.md +1 -1
  632. package/packages/omo-codex/plugin/skills/data-scientist/references/visualization.md +64 -0
  633. package/packages/omo-codex/plugin/skills/data-scientist/scripts/ensure-js-deps.sh +28 -0
  634. package/packages/omo-codex/plugin/skills/data-scientist/scripts/ensure-py-deps.sh +37 -0
  635. package/packages/omo-codex/plugin/skills/debugging/SKILL.md +3 -1
  636. package/packages/omo-codex/plugin/skills/debugging/references/methodology/00-setup.md +12 -0
  637. package/packages/omo-codex/plugin/skills/debugging/references/methodology/02-investigate.md +21 -0
  638. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/go.md +15 -1
  639. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/native-binary.md +38 -0
  640. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/node.md +25 -0
  641. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/python.md +13 -0
  642. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/rust.md +41 -0
  643. package/packages/omo-codex/plugin/skills/debugging/references/scripts/dap.mjs +267 -0
  644. package/packages/omo-codex/plugin/skills/debugging/references/scripts/fixture-adapter.mjs +59 -0
  645. package/packages/omo-codex/plugin/skills/debugging/references/tools/dap.md +103 -0
  646. package/packages/omo-codex/plugin/skills/debugging/references/tools/frida.md +193 -0
  647. package/packages/omo-codex/plugin/skills/frontend/ATTRIBUTION.md +10 -0
  648. package/packages/omo-codex/plugin/skills/frontend/SKILL.md +15 -8
  649. package/packages/omo-codex/plugin/skills/frontend/references/design/README.md +10 -2
  650. package/packages/omo-codex/plugin/skills/frontend/references/design/_INDEX.md +2 -0
  651. package/packages/omo-codex/plugin/skills/frontend/references/design/ambience-skill.md +145 -0
  652. package/packages/omo-codex/plugin/skills/frontend/references/design/interaction-skill.md +2 -0
  653. package/packages/omo-codex/plugin/skills/frontend/references/design/print-paged-media.md +76 -0
  654. package/packages/omo-codex/plugin/skills/frontend/references/design/stylegallery.md +80 -0
  655. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/README.md +1 -1
  656. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-a-direction.md +1 -1
  657. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-b-execution.md +11 -11
  658. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-d-memory.md +3 -3
  659. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/orchestration.md +1 -1
  660. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/routing.md +5 -5
  661. package/packages/omo-codex/plugin/skills/git-master/SKILL.md +1 -1
  662. package/packages/omo-codex/plugin/skills/init-deep/SKILL.md +18 -16
  663. package/packages/omo-codex/plugin/skills/lcx-doctor/SKILL.md +4 -2
  664. package/packages/omo-codex/plugin/skills/lsp-setup/SKILL.md +1 -1
  665. package/packages/omo-codex/plugin/skills/programming/SKILL.md +1 -1
  666. package/packages/omo-codex/plugin/skills/refactor/SKILL.md +8 -6
  667. package/packages/omo-codex/plugin/skills/remove-ai-slops/SKILL.md +5 -3
  668. package/packages/omo-codex/plugin/skills/review-work/SKILL.md +114 -422
  669. package/packages/omo-codex/plugin/skills/ultimate-browsing/ATTRIBUTION.md +38 -11
  670. package/packages/omo-codex/plugin/skills/ultimate-browsing/SKILL.md +26 -9
  671. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/AGENTS.md +110 -0
  672. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/templates/package.json +1 -1
  673. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/chrome-stealth.md +23 -18
  674. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/README.md +9 -2
  675. package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +26 -13
  676. package/packages/omo-codex/plugin/skills/{start-work → ulw-execute}/SKILL.md +29 -31
  677. package/packages/omo-codex/plugin/skills/ulw-execute/agents/openai.yaml +2 -0
  678. package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +34 -4
  679. package/packages/omo-codex/plugin/skills/ulw-loop/references/define-goal.md +108 -0
  680. package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +32 -8
  681. package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +6 -7
  682. package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +31 -7
  683. package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-clear.md +2 -1
  684. package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-unclear.md +5 -5
  685. package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +12 -5
  686. package/packages/omo-codex/plugin/skills/visual-qa/AGENTS.md +58 -0
  687. package/packages/omo-codex/plugin/skills/visual-qa/SKILL.md +8 -5
  688. package/packages/omo-codex/plugin/test/AGENTS.md +47 -0
  689. package/packages/omo-codex/plugin/test/aggregate-agents.test.mjs +19 -173
  690. package/packages/omo-codex/plugin/test/aggregate-hooks.test.mjs +16 -51
  691. package/packages/omo-codex/plugin/test/aggregate-manifest.test.mjs +2 -3
  692. package/packages/omo-codex/plugin/test/aggregate-mcp.test.mjs +2 -7
  693. package/packages/omo-codex/plugin/test/aggregate-model-catalog.test.mjs +14 -4
  694. package/packages/omo-codex/plugin/test/aggregate-plugin-fixture.mjs +175 -13
  695. package/packages/omo-codex/plugin/test/aggregate.test.mjs +78 -2
  696. package/packages/omo-codex/plugin/test/auto-update-release-notes.test.mjs +19 -33
  697. package/packages/omo-codex/plugin/test/auto-update.test.mjs +4 -29
  698. package/packages/omo-codex/plugin/test/bootstrap-setup.test.mjs +0 -31
  699. package/packages/omo-codex/plugin/test/canonical-ultrawork-directive.test.mjs +53 -0
  700. package/packages/omo-codex/plugin/test/component-bin-names.test.mjs +2 -2
  701. package/packages/omo-codex/plugin/test/component-bundled-cli.test.mjs +1 -51
  702. package/packages/omo-codex/plugin/test/component-hook-contract-cases.mjs +88 -2
  703. package/packages/omo-codex/plugin/test/hook-status-message.test.mjs +5 -6
  704. package/packages/omo-codex/plugin/test/lcx-contribute-bug-fix-template.test.mjs +21 -27
  705. package/packages/omo-codex/plugin/test/mcp-research-servers.test.mjs +1 -3
  706. package/packages/omo-codex/plugin/test/migrate-codex-config.test.mjs +35 -35
  707. package/packages/omo-codex/plugin/test/multi-agent-v2-regression.test.mjs +1 -1
  708. package/packages/omo-codex/plugin/test/scaffold-plan.test.mjs +0 -36
  709. package/packages/omo-codex/plugin/test/subagent-limit-migration.test.mjs +107 -15
  710. package/packages/omo-codex/plugin/test/sync-skills-codex-compatibility.test.mjs +168 -0
  711. package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +54 -24
  712. package/packages/omo-codex/plugin/test/sync-skills.test.mjs +18 -119
  713. package/packages/omo-codex/plugin/test/teammode-archive-ambiguity.test.mjs +0 -40
  714. package/packages/omo-codex/plugin/test/teammode-communication.test.mjs +6 -62
  715. package/packages/omo-codex/plugin/test/teammode-thread-links.test.mjs +3 -36
  716. package/packages/omo-codex/plugin/test/teammode-transport.test.mjs +0 -44
  717. package/packages/omo-codex/plugin/test/teammode-worktree.test.mjs +2 -6
  718. package/packages/omo-codex/plugin/test/ultrawork-skill-pointer.test.mjs +5 -5
  719. package/packages/omo-codex/plugin/test/ulw-plan-review-state-contract.test.mjs +0 -3
  720. package/packages/omo-codex/scripts/AGENTS.md +36 -0
  721. package/packages/omo-codex/scripts/check-model-catalog-parity.mjs +42 -0
  722. package/packages/omo-codex/scripts/install-cache-copy.test.mjs +27 -1
  723. package/packages/omo-codex/scripts/install-config-autonomous-features.test.mjs +1 -1
  724. package/packages/omo-codex/scripts/install-config-autonomous.test.mjs +2 -1
  725. package/packages/omo-codex/scripts/install-config-git-bash.test.mjs +0 -23
  726. package/packages/omo-codex/scripts/install-config-reasoning.test.mjs +5 -5
  727. package/packages/omo-codex/scripts/install-config.test.mjs +15 -17
  728. package/packages/omo-codex/scripts/install-dist/install-local.mjs +2987 -1370
  729. package/packages/omo-codex/scripts/install-generated-bundle.test.mjs +3 -4
  730. package/packages/omo-codex/scripts/install-git-bash-mcp-env.test.mjs +1 -25
  731. package/packages/omo-codex/scripts/install-lazycodex-version-stamp.test.mjs +7 -2
  732. package/packages/omo-codex/scripts/install-mcp-runtime.test.mjs +0 -36
  733. package/packages/omo-codex/scripts/install-packaged-local.test.mjs +1 -6
  734. package/packages/{omo-codex/plugin/components/ultrawork/skills/ultrawork/SKILL.md → prompts-core/prompts/ultrawork/codex.md} +26 -20
  735. package/packages/shared-skills/package.json +7 -1
  736. package/packages/shared-skills/skill-source-filter.d.ts +16 -0
  737. package/packages/shared-skills/skill-source-filter.mjs +44 -0
  738. package/packages/shared-skills/skills/ast-grep/AGENTS.md +51 -0
  739. package/packages/shared-skills/skills/ast-grep/SKILL.md +1 -1
  740. package/packages/shared-skills/skills/coding-agent-sessions/AGENTS.md +62 -0
  741. package/packages/shared-skills/skills/coding-agent-sessions/SKILL.md +1 -1
  742. package/packages/shared-skills/skills/data-scientist/SKILL.md +99 -239
  743. package/packages/shared-skills/skills/data-scientist/references/execution-surfaces.md +91 -0
  744. package/packages/shared-skills/skills/data-scientist/references/placement.md +74 -0
  745. package/packages/shared-skills/skills/data-scientist/references/polars-lane.md +95 -0
  746. package/packages/shared-skills/skills/data-scientist/references/uv-setup.md +1 -1
  747. package/packages/shared-skills/skills/data-scientist/references/visualization.md +64 -0
  748. package/packages/shared-skills/skills/data-scientist/scripts/ensure-js-deps.sh +28 -0
  749. package/packages/shared-skills/skills/data-scientist/scripts/ensure-py-deps.sh +37 -0
  750. package/packages/shared-skills/skills/debugging/SKILL.md +3 -1
  751. package/packages/shared-skills/skills/debugging/references/methodology/00-setup.md +12 -0
  752. package/packages/shared-skills/skills/debugging/references/methodology/02-investigate.md +21 -0
  753. package/packages/shared-skills/skills/debugging/references/runtimes/go.md +15 -1
  754. package/packages/shared-skills/skills/debugging/references/runtimes/native-binary.md +38 -0
  755. package/packages/shared-skills/skills/debugging/references/runtimes/node.md +25 -0
  756. package/packages/shared-skills/skills/debugging/references/runtimes/python.md +13 -0
  757. package/packages/shared-skills/skills/debugging/references/runtimes/rust.md +41 -0
  758. package/packages/shared-skills/skills/debugging/references/scripts/dap.mjs +267 -0
  759. package/packages/shared-skills/skills/debugging/references/scripts/dap.test.ts +86 -0
  760. package/packages/shared-skills/skills/debugging/references/scripts/fixture-adapter.mjs +59 -0
  761. package/packages/shared-skills/skills/debugging/references/tools/dap.md +103 -0
  762. package/packages/shared-skills/skills/debugging/references/tools/frida.md +193 -0
  763. package/packages/shared-skills/skills/frontend/ATTRIBUTION.md +10 -0
  764. package/packages/shared-skills/skills/frontend/SKILL.md +15 -8
  765. package/packages/shared-skills/skills/frontend/references/design/README.md +10 -2
  766. package/packages/shared-skills/skills/frontend/references/design/_INDEX.md +2 -0
  767. package/packages/shared-skills/skills/frontend/references/design/ambience-skill.md +145 -0
  768. package/packages/shared-skills/skills/frontend/references/design/interaction-skill.md +2 -0
  769. package/packages/shared-skills/skills/frontend/references/design/print-paged-media.md +76 -0
  770. package/packages/shared-skills/skills/frontend/references/design/stylegallery.md +80 -0
  771. package/packages/shared-skills/skills/frontend/references/designpowers/README.md +1 -1
  772. package/packages/shared-skills/skills/frontend/references/designpowers/lane-a-direction.md +1 -1
  773. package/packages/shared-skills/skills/frontend/references/designpowers/lane-b-execution.md +11 -11
  774. package/packages/shared-skills/skills/frontend/references/designpowers/lane-d-memory.md +3 -3
  775. package/packages/shared-skills/skills/frontend/references/designpowers/orchestration.md +1 -1
  776. package/packages/shared-skills/skills/frontend/references/designpowers/routing.md +5 -5
  777. package/packages/shared-skills/skills/git-master/SKILL.md +1 -1
  778. package/packages/shared-skills/skills/init-deep/SKILL.md +14 -14
  779. package/packages/shared-skills/skills/lsp-setup/SKILL.md +1 -1
  780. package/packages/shared-skills/skills/programming/SKILL.md +1 -1
  781. package/packages/shared-skills/skills/refactor/SKILL.md +4 -4
  782. package/packages/shared-skills/skills/remove-ai-slops/SKILL.md +1 -1
  783. package/packages/shared-skills/skills/review-work/SKILL.md +101 -419
  784. package/packages/shared-skills/skills/ultimate-browsing/ATTRIBUTION.md +38 -11
  785. package/packages/shared-skills/skills/ultimate-browsing/SKILL.md +26 -9
  786. package/packages/shared-skills/skills/ultimate-browsing/engine/AGENTS.md +110 -0
  787. package/packages/shared-skills/skills/ultimate-browsing/engine/templates/package.json +1 -1
  788. package/packages/shared-skills/skills/ultimate-browsing/references/chrome-stealth.md +23 -18
  789. package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/README.md +9 -2
  790. package/packages/shared-skills/skills/{start-work → ulw-execute}/SKILL.md +20 -19
  791. package/packages/shared-skills/skills/ulw-plan/SKILL.md +7 -8
  792. package/packages/shared-skills/skills/ulw-plan/references/full-workflow.md +31 -7
  793. package/packages/shared-skills/skills/ulw-plan/references/intent-clear.md +2 -1
  794. package/packages/shared-skills/skills/ulw-plan/references/intent-unclear.md +5 -5
  795. package/packages/shared-skills/skills/ulw-plan/scripts/scaffold-plan.mjs +1 -1
  796. package/packages/shared-skills/skills/ulw-research/SKILL.md +8 -3
  797. package/packages/shared-skills/skills/visual-qa/AGENTS.md +58 -0
  798. package/packages/shared-skills/skills/visual-qa/SKILL.md +4 -3
  799. package/postinstall.mjs +2 -0
  800. package/script/qa/web-terminal-visual-qa.mjs +2 -0
  801. package/script/qa/xterm-live-terminal.mjs +18 -2
  802. package/dist/config/schema/codegraph.d.ts +0 -12
  803. package/dist/config/schema/start-work.d.ts +0 -5
  804. package/dist/features/builtin-commands/templates/start-work.d.ts +0 -1
  805. package/dist/features/builtin-skills/index.d.ts +0 -1
  806. package/dist/features/builtin-skills/skill-file-loader.d.ts +0 -1
  807. package/dist/features/builtin-skills/skills/agent-browser-skill.d.ts +0 -1
  808. package/dist/features/builtin-skills/skills/agent-browser-template.d.ts +0 -1
  809. package/dist/features/builtin-skills/skills/debugging.d.ts +0 -1
  810. package/dist/features/builtin-skills/skills/dev-browser.d.ts +0 -1
  811. package/dist/features/builtin-skills/skills/frontend.d.ts +0 -1
  812. package/dist/features/builtin-skills/skills/git-master-sections/commit-atomic-planning.d.ts +0 -1
  813. package/dist/features/builtin-skills/skills/git-master-sections/commit-context-analysis.d.ts +0 -1
  814. package/dist/features/builtin-skills/skills/git-master-sections/commit-execution-verification.d.ts +0 -1
  815. package/dist/features/builtin-skills/skills/git-master-sections/commit-workflow.d.ts +0 -1
  816. package/dist/features/builtin-skills/skills/git-master-sections/history-search-workflow.d.ts +0 -1
  817. package/dist/features/builtin-skills/skills/git-master-sections/overview.d.ts +0 -1
  818. package/dist/features/builtin-skills/skills/git-master-sections/quick-reference.d.ts +0 -1
  819. package/dist/features/builtin-skills/skills/git-master-sections/rebase-workflow.d.ts +0 -1
  820. package/dist/features/builtin-skills/skills/git-master-skill-metadata.d.ts +0 -1
  821. package/dist/features/builtin-skills/skills/git-master.d.ts +0 -1
  822. package/dist/features/builtin-skills/skills/index.d.ts +0 -1
  823. package/dist/features/builtin-skills/skills/init-deep.d.ts +0 -1
  824. package/dist/features/builtin-skills/skills/playwright-cli.d.ts +0 -1
  825. package/dist/features/builtin-skills/skills/playwright-mcp-skill.d.ts +0 -1
  826. package/dist/features/builtin-skills/skills/playwright.d.ts +0 -1
  827. package/dist/features/builtin-skills/skills/remove-ai-slops.d.ts +0 -1
  828. package/dist/features/builtin-skills/skills/review-work.d.ts +0 -1
  829. package/dist/features/builtin-skills/skills/security-research.d.ts +0 -1
  830. package/dist/features/builtin-skills/skills/security-review.d.ts +0 -1
  831. package/dist/features/builtin-skills/skills/team-mode.d.ts +0 -1
  832. package/dist/features/builtin-skills/skills/visual-qa.d.ts +0 -1
  833. package/dist/features/builtin-skills/skills.d.ts +0 -1
  834. package/dist/features/builtin-skills/types.d.ts +0 -1
  835. package/dist/features/claude-code-plugin-loader/agent-loader.d.ts +0 -1
  836. package/dist/features/claude-code-plugin-loader/command-loader.d.ts +0 -1
  837. package/dist/features/claude-code-plugin-loader/discovery-core.d.ts +0 -1
  838. package/dist/features/claude-code-plugin-loader/discovery-paths.d.ts +0 -1
  839. package/dist/features/claude-code-plugin-loader/discovery.d.ts +0 -1
  840. package/dist/features/claude-code-plugin-loader/hook-loader.d.ts +0 -1
  841. package/dist/features/claude-code-plugin-loader/index.d.ts +0 -1
  842. package/dist/features/claude-code-plugin-loader/install-path-resolver.d.ts +0 -1
  843. package/dist/features/claude-code-plugin-loader/installed-plugin-database.d.ts +0 -1
  844. package/dist/features/claude-code-plugin-loader/loaded-plugin.d.ts +0 -1
  845. package/dist/features/claude-code-plugin-loader/loader.d.ts +0 -1
  846. package/dist/features/claude-code-plugin-loader/mcp-server-loader.d.ts +0 -1
  847. package/dist/features/claude-code-plugin-loader/plugin-key.d.ts +0 -1
  848. package/dist/features/claude-code-plugin-loader/plugin-manifest.d.ts +0 -1
  849. package/dist/features/claude-code-plugin-loader/plugin-path-resolver.d.ts +0 -1
  850. package/dist/features/claude-code-plugin-loader/plugin-settings.d.ts +0 -1
  851. package/dist/features/claude-code-plugin-loader/scope-filter.d.ts +0 -1
  852. package/dist/features/claude-code-plugin-loader/skill-loader.d.ts +0 -1
  853. package/dist/features/claude-code-plugin-loader/types.d.ts +0 -1
  854. package/dist/hooks/codegraph-bootstrap/command-runner.d.ts +0 -17
  855. package/dist/hooks/codegraph-bootstrap/hook.d.ts +0 -35
  856. package/dist/hooks/codegraph-bootstrap/index.d.ts +0 -1
  857. package/dist/hooks/codegraph-bootstrap/project-root.d.ts +0 -1
  858. package/dist/hooks/codegraph-bootstrap/status.d.ts +0 -11
  859. package/dist/hooks/ralph-loop/completion-promise-detector-test-input.d.ts +0 -11
  860. package/dist/hooks/ralph-loop/loop-session-recovery.d.ts +0 -7
  861. package/dist/hooks/start-work/start-work-hook.d.ts +0 -23
  862. package/dist/mcp/codegraph.d.ts +0 -16
  863. package/dist/plugin/chat-message/start-work-message.d.ts +0 -5
  864. package/dist/shared/prompt-async-gate/message-inspection-error.d.ts +0 -1
  865. package/dist/shared/prompt-async-gate/pending-tool-turn.d.ts +0 -1
  866. package/dist/shared/prompt-async-gate/prompt-message-state.d.ts +0 -1
  867. package/dist/shared/prompt-async-gate/queue.d.ts +0 -1
  868. package/dist/shared/prompt-async-gate/recent-dispatches.d.ts +0 -1
  869. package/dist/shared/prompt-async-gate/reservations.d.ts +0 -1
  870. package/dist/shared/prompt-async-gate/semantic-dedupe.d.ts +0 -1
  871. package/dist/shared/prompt-async-gate/session-idle-dispatch.d.ts +0 -1
  872. package/dist/shared/prompt-async-gate/timing.d.ts +0 -1
  873. package/dist/shared/prompt-async-gate/types.d.ts +0 -1
  874. package/dist/skills/data-scientist/references/common-scenarios.md +0 -176
  875. package/dist/skills/data-scientist/references/execution-templates.md +0 -197
  876. package/dist/skills/data-scientist/references/integration-patterns.md +0 -153
  877. package/dist/skills/data-scientist/references/performance-benchmarks.md +0 -37
  878. package/dist/tools/call-omo-agent/background-agent-executor.d.ts +0 -5
  879. package/dist/tools/call-omo-agent/message-storage-directory.d.ts +0 -1
  880. package/dist/tools/delegate-task/anthropic-categories.d.ts +0 -2
  881. package/dist/tools/delegate-task/model-string-parser.d.ts +0 -1
  882. package/packages/lsp-tools-mcp/dist/lsp/cleanup-errors.d.ts +0 -1
  883. package/packages/lsp-tools-mcp/dist/lsp/constants.d.ts +0 -1
  884. package/packages/lsp-tools-mcp/dist/lsp/language-mappings.d.ts +0 -1
  885. package/packages/lsp-tools-mcp/dist/lsp/process-signal-cleanup.d.ts +0 -1
  886. package/packages/lsp-tools-mcp/dist/missing-dependency-result.d.ts +0 -1
  887. package/packages/omo-codex/plugin/components/codegraph/AGENTS.md +0 -58
  888. package/packages/omo-codex/plugin/components/codegraph/NODE-RUNTIME-LICENSES.md +0 -2951
  889. package/packages/omo-codex/plugin/components/codegraph/NOTICE +0 -16
  890. package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +0 -12149
  891. package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +0 -9747
  892. package/packages/omo-codex/plugin/components/codegraph/package.json +0 -33
  893. package/packages/omo-codex/plugin/components/codegraph/src/cache-gc.ts +0 -29
  894. package/packages/omo-codex/plugin/components/codegraph/src/cli.ts +0 -79
  895. package/packages/omo-codex/plugin/components/codegraph/src/hook-input.ts +0 -33
  896. package/packages/omo-codex/plugin/components/codegraph/src/hook-sweep.ts +0 -25
  897. package/packages/omo-codex/plugin/components/codegraph/src/hook-types.ts +0 -131
  898. package/packages/omo-codex/plugin/components/codegraph/src/hook.ts +0 -258
  899. package/packages/omo-codex/plugin/components/codegraph/src/mcp-bridge.ts +0 -309
  900. package/packages/omo-codex/plugin/components/codegraph/src/mcp-unavailable.ts +0 -80
  901. package/packages/omo-codex/plugin/components/codegraph/src/post-tool-use-hook.ts +0 -34
  902. package/packages/omo-codex/plugin/components/codegraph/src/serve-invocation.ts +0 -29
  903. package/packages/omo-codex/plugin/components/codegraph/src/serve.ts +0 -263
  904. package/packages/omo-codex/plugin/components/codegraph/src/session-start-command.ts +0 -106
  905. package/packages/omo-codex/plugin/components/codegraph/src/session-start-cooldown.ts +0 -145
  906. package/packages/omo-codex/plugin/components/codegraph/src/session-start-hook-runtime.ts +0 -21
  907. package/packages/omo-codex/plugin/components/codegraph/src/session-start-lock.ts +0 -139
  908. package/packages/omo-codex/plugin/components/codegraph/src/session-start-outcome.ts +0 -15
  909. package/packages/omo-codex/plugin/components/codegraph/src/session-start-paths.ts +0 -32
  910. package/packages/omo-codex/plugin/components/codegraph/src/session-start-project.ts +0 -109
  911. package/packages/omo-codex/plugin/components/codegraph/src/session-start-worker-result.ts +0 -148
  912. package/packages/omo-codex/plugin/components/codegraph/src/session-start-worker.ts +0 -175
  913. package/packages/omo-codex/plugin/components/codegraph/src/sweep-cli.ts +0 -81
  914. package/packages/omo-codex/plugin/components/codegraph/test/cache-gc.test.ts +0 -34
  915. package/packages/omo-codex/plugin/components/codegraph/test/hook-exclusion.test.ts +0 -112
  916. package/packages/omo-codex/plugin/components/codegraph/test/hook-registration.test.ts +0 -26
  917. package/packages/omo-codex/plugin/components/codegraph/test/hook-session-start-guard.test.ts +0 -160
  918. package/packages/omo-codex/plugin/components/codegraph/test/hook-store-upgrade.test.ts +0 -50
  919. package/packages/omo-codex/plugin/components/codegraph/test/hook-sweep.test.ts +0 -29
  920. package/packages/omo-codex/plugin/components/codegraph/test/hook.test.ts +0 -320
  921. package/packages/omo-codex/plugin/components/codegraph/test/mcp-bridge-fixtures.ts +0 -172
  922. package/packages/omo-codex/plugin/components/codegraph/test/package-runtime.test.ts +0 -91
  923. package/packages/omo-codex/plugin/components/codegraph/test/provisioned-node-guard.test.ts +0 -100
  924. package/packages/omo-codex/plugin/components/codegraph/test/serve-built-wrapper.test.ts +0 -76
  925. package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-bridge-lifecycle.test.ts +0 -133
  926. package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-bridge.test.ts +0 -245
  927. package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-facade.test.ts +0 -69
  928. package/packages/omo-codex/plugin/components/codegraph/test/serve-node-support.test.ts +0 -43
  929. package/packages/omo-codex/plugin/components/codegraph/test/serve-provision.test.ts +0 -147
  930. package/packages/omo-codex/plugin/components/codegraph/test/serve-unavailable.test.ts +0 -175
  931. package/packages/omo-codex/plugin/components/codegraph/test/serve.test.ts +0 -385
  932. package/packages/omo-codex/plugin/components/codegraph/test/session-start-node-support.test.ts +0 -206
  933. package/packages/omo-codex/plugin/components/codegraph/test/session-start-project.test.ts +0 -58
  934. package/packages/omo-codex/plugin/components/codegraph/test/session-start-state.test.ts +0 -104
  935. package/packages/omo-codex/plugin/components/codegraph/test/session-start-trust-boundary.test.ts +0 -65
  936. package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-availability.test.ts +0 -106
  937. package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-cooldown.test.ts +0 -116
  938. package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-flow.test.ts +0 -258
  939. package/packages/omo-codex/plugin/components/codegraph/test/sweep-cli.test.ts +0 -56
  940. package/packages/omo-codex/plugin/components/codegraph/tsconfig.build.json +0 -13
  941. package/packages/omo-codex/plugin/components/codegraph/tsconfig.json +0 -25
  942. package/packages/omo-codex/plugin/components/start-work-continuation/LICENSE +0 -21
  943. package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +0 -28
  944. package/packages/omo-codex/plugin/components/ultrawork/directive.md +0 -471
  945. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +0 -18
  946. package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +0 -17
  947. package/packages/omo-codex/plugin/hooks/stop-checking-start-work-continuation.json +0 -17
  948. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-start-work-continuation.json +0 -17
  949. package/packages/omo-codex/plugin/scripts/migrate-omo-sot/editor.mjs +0 -125
  950. package/packages/omo-codex/plugin/scripts/migrate-omo-sot/jsonc.mjs +0 -43
  951. package/packages/omo-codex/plugin/scripts/migrate-omo-sot/scaffold.mjs +0 -29
  952. package/packages/omo-codex/plugin/scripts/migrate-omo-sot.mjs +0 -121
  953. package/packages/omo-codex/plugin/skills/data-scientist/references/common-scenarios.md +0 -176
  954. package/packages/omo-codex/plugin/skills/data-scientist/references/execution-templates.md +0 -197
  955. package/packages/omo-codex/plugin/skills/data-scientist/references/integration-patterns.md +0 -153
  956. package/packages/omo-codex/plugin/skills/data-scientist/references/performance-benchmarks.md +0 -37
  957. package/packages/omo-codex/plugin/skills/start-work/agents/openai.yaml +0 -2
  958. package/packages/omo-codex/plugin/test/aggregate-skills.test.mjs +0 -92
  959. package/packages/omo-codex/plugin/test/component-codegraph-mcp-smoke.test.mjs +0 -76
  960. package/packages/omo-codex/plugin/test/migrate-omo-sot.test.mjs +0 -179
  961. package/packages/omo-codex/plugin/test/sync-skills-orchestration.test.mjs +0 -314
  962. package/packages/omo-codex/plugin/test/ulw-plan-scope-contract.test.mjs +0 -24
  963. package/packages/shared-skills/skills/data-scientist/references/common-scenarios.md +0 -176
  964. package/packages/shared-skills/skills/data-scientist/references/execution-templates.md +0 -197
  965. package/packages/shared-skills/skills/data-scientist/references/integration-patterns.md +0 -153
  966. package/packages/shared-skills/skills/data-scientist/references/performance-benchmarks.md +0 -37
  967. /package/dist/hooks/{start-work → ulw-execute}/context-info-formatters.d.ts +0 -0
  968. /package/dist/hooks/{start-work → ulw-execute}/explicit-plan-context.d.ts +0 -0
  969. /package/dist/hooks/{start-work → ulw-execute}/notepad-scaffold.d.ts +0 -0
  970. /package/dist/hooks/{start-work → ulw-execute}/parse-user-request.d.ts +0 -0
  971. /package/dist/hooks/{start-work → ulw-execute}/plan-discovery-context.d.ts +0 -0
  972. /package/dist/hooks/{start-work → ulw-execute}/plan-selection.d.ts +0 -0
  973. /package/dist/hooks/{start-work → ulw-execute}/session-plan-affinity.d.ts +0 -0
  974. /package/dist/hooks/{start-work → ulw-execute}/work-initializer.d.ts +0 -0
  975. /package/dist/hooks/{start-work → ulw-execute}/worktree-block.d.ts +0 -0
  976. /package/dist/hooks/{start-work → ulw-execute}/worktree-detector.d.ts +0 -0
  977. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/.gitattributes +0 -0
  978. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/CHANGELOG.md +0 -0
  979. /package/packages/omo-codex/plugin/components/{codegraph → ulw-execute-continuation}/LICENSE +0 -0
  980. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/plan-checklist.ts +0 -0
  981. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/boulder-completed.json +0 -0
  982. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/boulder-mixed-platforms.json +0 -0
  983. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/boulder-single-codex-work.json +0 -0
  984. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-all-done.md +0 -0
  985. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-scaffold.md +0 -0
  986. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-with-nested-checkboxes.md +0 -0
  987. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-with-unchecked.md +0 -0
  988. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/tsconfig.build.json +0 -0
  989. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/tsconfig.json +0 -0
  990. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/vitest.config.ts +0 -0
@@ -0,0 +1,171 @@
1
+ import { afterEach, describe, expect, test } from "bun:test"
2
+ import { spawnSync } from "node:child_process"
3
+ import { existsSync, mkdirSync, mkdtempSync, rmSync, symlinkSync } from "node:fs"
4
+ import { tmpdir } from "node:os"
5
+ import { join, relative } from "node:path"
6
+ import { fileURLToPath, pathToFileURL } from "node:url"
7
+
8
+ import { EVIDENCE_RELATIVE_ROOT, resolveEvidenceDir } from "./resolve-evidence-dir.mjs"
9
+
10
+ const cleanupRoots = []
11
+ const cliPath = fileURLToPath(new URL("./resolve-evidence-dir.mjs", import.meta.url))
12
+
13
+ afterEach(() => {
14
+ for (const root of cleanupRoots.splice(0)) rmSync(root, { recursive: true, force: true })
15
+ })
16
+
17
+ function makeGitRoot() {
18
+ const root = mkdtempSync(join(tmpdir(), "senpi-qa-evidence-"))
19
+ cleanupRoots.push(root)
20
+ mkdirSync(join(root, ".git"))
21
+ return root
22
+ }
23
+
24
+ describe("resolveEvidenceDir", () => {
25
+ test("#given a git worktree and a safe slug #when resolved #then it returns the canonical adapter evidence directory", () => {
26
+ // given
27
+ const repoRoot = makeGitRoot()
28
+
29
+ // when
30
+ const resolved = resolveEvidenceDir({ repoRoot, slug: "20260820-senpi-qa-contract" })
31
+
32
+ // then
33
+ expect(resolved).toBe(join(repoRoot, ".omo", "evidence", "omo-senpi-adapter", "20260820-senpi-qa-contract"))
34
+ })
35
+
36
+ test("#given a relative git worktree path #when resolved #then it still returns an absolute evidence directory", () => {
37
+ // given
38
+ const repoRoot = makeGitRoot()
39
+ const relativeRoot = relative(process.cwd(), repoRoot)
40
+
41
+ // when
42
+ const resolved = resolveEvidenceDir({ repoRoot: relativeRoot, slug: "20260820-relative-root" })
43
+
44
+ // then
45
+ expect(resolved).toBe(join(repoRoot, ".omo", "evidence", "omo-senpi-adapter", "20260820-relative-root"))
46
+ })
47
+
48
+ test("#given a resolved evidence path #when the resolver returns #then it has created no directory", () => {
49
+ // given
50
+ const repoRoot = makeGitRoot()
51
+
52
+ // when
53
+ const resolved = resolveEvidenceDir({ repoRoot, slug: "20260820-senpi-qa-contract" })
54
+
55
+ // then
56
+ expect(existsSync(resolved)).toBe(false)
57
+ expect(existsSync(join(repoRoot, ".omo"))).toBe(false)
58
+ })
59
+
60
+ test("#given the adapter evidence root #when it is the declared relative root #then it stays under .omo/evidence", () => {
61
+ // given / when / then
62
+ expect(EVIDENCE_RELATIVE_ROOT).toBe(join(".omo", "evidence", "omo-senpi-adapter"))
63
+ })
64
+
65
+ test("#given an unsafe slug #when resolved #then it is rejected before any path is produced", () => {
66
+ // given
67
+ const repoRoot = makeGitRoot()
68
+ const unsafeSlugs = [
69
+ "",
70
+ " ",
71
+ ".",
72
+ "..",
73
+ "../escape",
74
+ "nested/slug",
75
+ "nested\\slug",
76
+ "/absolute",
77
+ join(repoRoot, "absolute"),
78
+ "local-ignore/qa-evidence/20260819-senpi",
79
+ "..%2Fescape",
80
+ "-leading-hyphen",
81
+ "trailing-hyphen-",
82
+ "Upper-Case",
83
+ "under_score",
84
+ ]
85
+
86
+ // when / then
87
+ for (const slug of unsafeSlugs) {
88
+ expect(() => resolveEvidenceDir({ repoRoot, slug }), `must reject ${JSON.stringify(slug)}`).toThrow()
89
+ }
90
+ })
91
+
92
+ test("#given a directory that is not a git worktree #when resolved #then it is rejected", () => {
93
+ // given
94
+ const notARepo = mkdtempSync(join(tmpdir(), "senpi-qa-not-git-"))
95
+ cleanupRoots.push(notARepo)
96
+
97
+ // when / then
98
+ expect(() => resolveEvidenceDir({ repoRoot: notARepo, slug: "20260820-senpi-qa-contract" })).toThrow(/git/i)
99
+ })
100
+
101
+ test("#given a rejected slug #when the error surfaces #then it names the offending slug for the operator", () => {
102
+ // given
103
+ const repoRoot = makeGitRoot()
104
+
105
+ // when / then
106
+ expect(() => resolveEvidenceDir({ repoRoot, slug: "local-ignore/qa-evidence/x" })).toThrow(
107
+ /local-ignore\/qa-evidence\/x/,
108
+ )
109
+ })
110
+
111
+ test("#given the documented Node CLI #when valid and invalid slugs run #then stdout and exit codes enforce the contract", () => {
112
+ // given
113
+ const repoRoot = makeGitRoot()
114
+
115
+ // when
116
+ const valid = spawnSync("node", [cliPath, "--repo-root", repoRoot, "--slug", "20260820-node-cli"], {
117
+ encoding: "utf8",
118
+ })
119
+ const invalid = spawnSync(
120
+ "node",
121
+ [cliPath, "--repo-root", repoRoot, "--slug", "local-ignore/qa-evidence/x"],
122
+ { encoding: "utf8" },
123
+ )
124
+
125
+ // then
126
+ expect(valid.status).toBe(0)
127
+ expect(valid.stdout.trim()).toBe(join(repoRoot, EVIDENCE_RELATIVE_ROOT, "20260820-node-cli"))
128
+ expect(invalid.status).toBe(1)
129
+ expect(invalid.stderr).toContain("local-ignore/qa-evidence/x")
130
+ })
131
+
132
+ test("#given a symlink to the documented Node CLI #when invoked #then the entrypoint still enforces the contract", () => {
133
+ // given
134
+ const repoRoot = makeGitRoot()
135
+ const symlinkPath = join(repoRoot, "resolve-evidence-dir.mjs")
136
+ symlinkSync(cliPath, symlinkPath)
137
+
138
+ // when
139
+ const result = spawnSync(
140
+ "node",
141
+ [symlinkPath, "--repo-root", repoRoot, "--slug", "20260820-symlink-cli"],
142
+ { encoding: "utf8" },
143
+ )
144
+
145
+ // then
146
+ expect(result.status).toBe(0)
147
+ expect(result.stdout.trim()).toBe(join(repoRoot, EVIDENCE_RELATIVE_ROOT, "20260820-symlink-cli"))
148
+ })
149
+
150
+ test("#given an embedding runner with a missing argv path #when the module is imported #then exports still load", () => {
151
+ // given
152
+ const missingEntrypoint = join(tmpdir(), `missing-senpi-qa-entrypoint-${process.pid}.mjs`)
153
+ const moduleUrl = pathToFileURL(cliPath).href
154
+
155
+ // when
156
+ const result = spawnSync(
157
+ "node",
158
+ [
159
+ "--input-type=module",
160
+ "--eval",
161
+ `process.argv[1] = ${JSON.stringify(missingEntrypoint)}; await import(${JSON.stringify(moduleUrl)})`,
162
+ ],
163
+ { encoding: "utf8" },
164
+ )
165
+
166
+ // then
167
+ expect(result.status).toBe(0)
168
+ expect(result.stdout).toBe("")
169
+ expect(result.stderr).toBe("")
170
+ })
171
+ })
@@ -1,24 +1,11 @@
1
1
  ---
2
2
  name: tech-debt-audit
3
- description: "Thorough, file-cited technical debt audit across 9 dimensions using AST-grep (tree-sitter), grep, language-native tooling, and optionally CodeGraph knowledge graph. Produces TECH_DEBT_AUDIT.md with severity, effort estimates, and prioritized fixes. Use when asked for codebase health check, tech debt audit, architecture review, code quality assessment, or cleanup planning. Triggers: 'tech debt', 'technical debt', 'debt audit', 'code health', 'technical debt audit', 'codebase health check', 'find tech debt', 'debt analysis', 'audit code quality'."
3
+ description: "Thorough, file-cited technical debt audit across 9 dimensions using AST-grep (tree-sitter), grep, LSP, and language-native tooling. Produces TECH_DEBT_AUDIT.md with severity, effort estimates, and prioritized fixes. Use when asked for codebase health check, tech debt audit, architecture review, code quality assessment, or cleanup planning. Triggers: 'tech debt', 'technical debt', 'debt audit', 'code health', 'technical debt audit', 'codebase health check', 'find tech debt', 'debt analysis', 'audit code quality'."
4
4
  ---
5
5
 
6
6
  # Tech Debt Audit Protocol
7
7
 
8
- Model-agnostic technical debt audit for oh-my-openagent (OMO). Uses OMO's built-in tools (`grep`, `glob`, `bash` with `sg`, `read`, `lsp_diagnostics`, `task`) plus **optional CodeGraph MCP** for enhanced code graph analysis when available. Produces a grounded, citable `TECH_DEBT_AUDIT.md` artifact.
9
-
10
- ## CodeGraph Enhancement (Optional)
11
-
12
- If you have [CodeGraph](https://github.com/colbymchenry/codegraph) installed (check with `codegraph status`), its MCP tools (`codegraph_search`, `codegraph_callers`, `codegraph_callees`, `codegraph_impact`, `codegraph_explore`, etc.) can supersede or augment the standard tool searches in the dimensions marked below. CodeGraph gives you:
13
- - **Symbol search** — instant by-name lookup via FTS5
14
- - **Call graph analysis** — callers/callees for any function
15
- - **Impact analysis** — blast radius before changing any symbol
16
- - **Smart context building** — entry points, related symbols, and snippets in one call
17
- - **Framework-aware routes** — URL patterns linked to their handlers
18
-
19
- To use CodeGraph, ensure the `codegraph` MCP server is configured in your project's `.mcp.json` or global MCP config. The skill will auto-detect CodeGraph by checking if `codegraph` MCP tools are available. Sub-agents spawned via `task()` cannot use CodeGraph — they use the standard tool fallback.
20
-
21
- ---
8
+ Model-agnostic technical debt audit for oh-my-openagent (OMO). Uses OMO's built-in tools (`grep`, `glob`, `bash` with `sg`, `read`, `lsp_diagnostics`, `task`). Produces a grounded, citable `TECH_DEBT_AUDIT.md` artifact.
22
9
 
23
10
  ## Output
24
11
 
@@ -42,19 +29,6 @@ Write results to `TECH_DEBT_AUDIT.md` in the repo root with:
42
29
  5. Cross-reference high-churn + large = debt hot zones
43
30
  6. Write the mental model paragraph in your own working context
44
31
 
45
- ### CodeGraph Enhancement (if available)
46
- Instead of guessing module boundaries, query the code graph:
47
-
48
- ```
49
- codegraph_explore(query="architecture overview and main modules")
50
- ```
51
- This returns symbol relationships and source grouped by file. Use the structure as your architectural mental model instead of hand-inferring it from directory names.
52
-
53
- ```
54
- codegraph_explore(query="main entry points and execution flow")
55
- ```
56
- This surfaces entry points and call chains. Use these to understand how the code actually flows vs how the directory layout suggests it flows.
57
-
58
32
  ## Phase 1: Audit Across 9 Dimensions
59
33
 
60
34
  Use OMO tools for each dimension. Run parallel tool calls within each dimension. Every finding MUST cite `file:line:col`.
@@ -68,33 +42,12 @@ Use OMO tools for each dimension. Run parallel tool calls within each dimension.
68
42
  - `grep("async|await")` on sync-looking files — misplaced async boundaries
69
43
  - `bash("wc -l <file>")` on each large file found in Phase 0
70
44
 
71
- #### CodeGraph Enhancement (if available)
72
-
73
- **Dead code detection:**
74
- ```
75
- codegraph_callers(symbol="<suspected-dead-function>")
76
- codegraph_callers(symbol="<suspected-dead-class>")
77
- ```
78
- Run `codegraph_callers` on suspected dead exports found via grep/glob. If the result shows zero callers (excluding test files), it's dead code.
79
-
80
- **Circular dependency detection:**
81
- ```
82
- codegraph_impact(target="<module-or-file>", direction="upstream")
83
- ```
84
- Use `codegraph_impact` on key modules to trace their dependents. If A depends on B and B depends on A, that's a cycle.
85
-
86
- **Architecture boundaries:**
87
- ```
88
- codegraph_explore(query="module dependencies and architecture boundaries")
89
- ```
90
- Use `codegraph_explore` to survey actual module structure.
91
-
92
45
  #### What to flag
93
46
  - Files > 500 LOC (god files)
94
47
  - Functions > 80 LOC or > 4 nesting levels
95
48
  - Classes with > 15 methods or > 400 LOC
96
49
  - Import cycles (A → B → A)
97
- - Dead exports: function/class defined but never imported elsewhere (CodeGraph: `codegraph_callers`)
50
+ - Dead exports: function/class defined but never imported elsewhere (confirm with `lsp_find_references`)
98
51
  - Commented-out code blocks (>3 consecutive consecutive lines)
99
52
 
100
53
  ### 2. Consistency Rot
@@ -148,14 +101,6 @@ Use `codegraph_explore` to survey actual module structure.
148
101
  - `grep(".env|process.env|Bun.env")` — env var usage
149
102
  - `grep("API_KEY|SECRET|PASSWORD|TOKEN")` in non-config files — hardcoded config
150
103
 
151
- #### CodeGraph Enhancement (if available)
152
-
153
- **Blast radius of core dependencies:**
154
- ```
155
- codegraph_impact(target="<core-utility-function>", direction="upstream")
156
- ```
157
- Run this on a few key internal modules (logger, config loader, HTTP client) to see how widely they're used. A widely-depended-on module with poor error handling or type safety is a high-priority refactor target because changes to it ripple everywhere.
158
-
159
104
  #### What to flag
160
105
  - Outdated major-version deps
161
106
  - Dependencies that do the same thing (duplicate libraries)
@@ -184,21 +129,6 @@ Run this on a few key internal modules (logger, config loader, HTTP client) to s
184
129
  - `grep("console.error|logger\\.error|log\\.error")` — actual error logging
185
130
  - `bash("sg -p \"throw new $ERR($$$)\" -l ts .")` — error types used
186
131
 
187
- #### CodeGraph Enhancement (if available)
188
-
189
- **Trace error propagation through call chains:**
190
- ```
191
- codegraph_callers(symbol="<key-error-handler-or-middleware>")
192
- codegraph_explore(query="how errors propagate through <key-error-handler>")
193
- ```
194
- Use `codegraph_callers` to find who calls your error handlers. If errors are caught and swallowed at multiple levels, that's a finding.
195
-
196
- **Impact of changing error types:**
197
- ```
198
- codegraph_impact(target="<error-class-or-interface>", direction="upstream")
199
- ```
200
- Check the blast radius of custom error classes. If changing an error type would break 20+ consumers, the error contract is too tight.
201
-
202
132
  #### What to flag
203
133
  - Empty catch blocks (worst offense)
204
134
  - Generic `catch (e) { console.error(e) }` without recovery
@@ -237,18 +167,18 @@ Check the blast radius of custom error classes. If changing an error type would
237
167
 
238
168
  ## Phase 2: Deeper Dives (Parallel Sub-Agents)
239
169
 
240
- For large codebases (>50k LOC), delegate heavy dimensions to parallel sub-agents. Sub-agents CANNOT use CodeGraph — they use standard tools only:
170
+ For large codebases (>50k LOC), delegate heavy dimensions to parallel sub-agents. Each sub-agent runs the standard tool passes for its dimensions:
241
171
 
242
172
  ```
243
173
  task(category="unspecified-low", run_in_background=true, load_skills=[], prompt="[CONTEXT] Tech debt audit. [GOAL] Audit dimensions 1 (Architecture) and 2 (Consistency). [REQUEST] Run ast_grep and grep searches for dimensions 1-2 from the tech-debt-audit skill. Report every finding with file:line:col. Tag severity: Critical/High/Medium/Low.")
244
174
  task(category="unspecified-low", run_in_background=true, load_skills=[], prompt="[CONTEXT] Tech debt audit. [GOAL] Audit dimensions 3 (Type debt) and 7 (Error handling). [REQUEST] Run searches for dimensions 3 and 7 from the tech-debt-audit skill. Report every finding with file:line:col. Tag severity.")
245
175
  ```
246
176
 
247
- Spawn 2-3 sub-agents for the heaviest dimensions, collect results in parallel, then synthesize. The main agent handles CodeGraph queries itself while sub-agents run the standard tool passes.
177
+ Spawn 2-3 sub-agents for the heaviest dimensions, collect results in parallel, then synthesize.
248
178
 
249
179
  ## Phase 3: Synthesize & Deliver
250
180
 
251
- 1. Collect all findings from direct tool calls, CodeGraph queries (if available), and sub-agent results
181
+ 1. Collect all findings from direct tool calls and sub-agent results
252
182
  2. Deduplicate — same issue mentioned by multiple dimensions
253
183
  3. Classify severity:
254
184
  - **Critical** — Causes incorrect behavior, data loss, or security vulnerability
@@ -196,12 +196,20 @@ while true:
196
196
 
197
197
  ### Gate A: CI Checks
198
198
 
199
- CI is the fastest feedback loop. Wait for it to complete, then parse results.
199
+ CI is the fastest feedback loop. Subscribe to its completion via `monitor` — never block a model round-trip on `gh pr checks --watch`.
200
200
 
201
- ```bash
202
- # Wait for checks to start (GitHub needs a moment after push)
203
- # Then watch for completion
204
- gh pr checks "$PR_NUMBER" --watch --fail-fast
201
+ ```
202
+ # Subscribe to CI completion — the monitor event wakes the session when checks finish.
203
+ # Do NOT use `gh pr checks --watch` as a blocking tool call; it burns a full model
204
+ # round-trip (~29s) on every poll. Instead, register a monitor and end the turn:
205
+ monitor({
206
+ description: "CI completion for PR $PR_NUMBER",
207
+ command: "gh pr checks $PR_NUMBER --watch --fail-fast",
208
+ filter: "completed|fail|cancel"
209
+ })
210
+ # → end turn; the monitor's matching line arrives as an injected event.
211
+ # For a single midpoint status peek (at most once), use:
212
+ # gh pr checks "$PR_NUMBER" # one-shot, no --watch
205
213
  ```
206
214
 
207
215
  **On failure**: Get the failed run logs to understand what broke:
@@ -243,20 +251,21 @@ fi
243
251
 
244
252
  **On issues**: Cubic's review body contains structured issue descriptions. Parse them, determine which are valid (some may be false positives), and fix the valid ones per the iteration discipline below.
245
253
 
246
- Cubic reviews are triggered automatically on PR updates. After pushing a fix, wait for the new review to appear before checking again. Use `gh api` polling with a conditional loop:
254
+ Cubic reviews are triggered automatically on PR updates. After pushing a fix, subscribe to the new review arriving — never spin a `for _ in $(seq 1 30)` polling loop that burns model round-trips.
247
255
 
248
- ```bash
249
- # Wait for a NEW Cubic review after push. If none arrives within the bound,
250
- # Cubic is out of quota (or not running) → skip Gate B rather than spin forever.
256
+ ```
257
+ # Subscribe to a NEW Cubic review after push. The monitor exits when a review
258
+ # newer than PUSH_TIME appears, or times out (quota exhausted → Gate B SKIPPED).
251
259
  PUSH_TIME=$(date -u +%Y-%m-%dT%H:%M:%SZ)
252
- for _ in $(seq 1 30); do
253
- LATEST_REVIEW_TIME=$(gh api "repos/${REPO}/pulls/${PR_NUMBER}/reviews" \
254
- --jq '[.[] | select(.user.login == "cubic-dev-ai[bot]")] | last | .submitted_at')
255
- [[ "$LATEST_REVIEW_TIME" > "$PUSH_TIME" ]] && break
256
- timeout 20 gh pr checks "$PR_NUMBER" --watch >/dev/null 2>&1 || true # spend the interval usefully
257
- done
258
- # Loop exhausted without a newer review → treat Gate B as SKIPPED (quota exhausted)
259
- [[ "$LATEST_REVIEW_TIME" > "$PUSH_TIME" ]] || echo "Cubic: SKIPPED (no review within bound — quota exhausted)"
260
+ monitor({
261
+ description: "Cubic review for PR $PR_NUMBER",
262
+ command: "LATEST=$(gh api repos/${REPO}/pulls/${PR_NUMBER}/reviews --jq '[.[] | select(.user.login == "cubic-dev-ai[bot]")] | last | .submitted_at // empty'); [ -n \"$LATEST\" ] && [ \"$LATEST\" > \"$PUSH_TIME\" ] && echo NEW_REVIEW || echo WAITING",
263
+ filter: "NEW_REVIEW",
264
+ timeout_ms: 600000 # 10 min bound — if no review arrives, Gate B is SKIPPED (quota exhausted)
265
+ })
266
+ # → end turn; if the monitor times out without NEW_REVIEW, treat Gate B as SKIPPED.
267
+ # For a single midpoint peek (at most once), use:
268
+ # gh api "repos/${REPO}/pulls/${PR_NUMBER}/reviews" --jq '[.[] | select(.user.login == "cubic-dev-ai[bot]")] | last | .submitted_at'
260
269
  ```
261
270
 
262
271
  ### Iteration discipline
@@ -292,13 +301,18 @@ gh pr merge "$PR_NUMBER" --merge --auto --delete-branch
292
301
  # are green, fall back to a direct merge: gh pr merge "$PR_NUMBER" --merge --delete-branch
293
302
  ```
294
303
 
295
- Then WAIT until the merge has actually completed before you report done or clean up - never walk away while the PR is still merging:
304
+ Then subscribe to the merge completing — never block a model round-trip on an `until [ ... MERGED ]` polling loop:
296
305
 
297
- ```bash
298
- # Block until the PR is actually MERGED (auto-merge lands once all required checks pass)
299
- until [ "$(gh pr view "$PR_NUMBER" --json state -q .state)" = "MERGED" ]; do
300
- gh pr checks "$PR_NUMBER" --watch --fail-fast >/dev/null 2>&1 || true # spend the interval on the checks
301
- done
306
+ ```
307
+ # Subscribe to merge completion. The monitor exits when gh pr view returns MERGED.
308
+ monitor({
309
+ description: "Merge completion for PR $PR_NUMBER",
310
+ command: "[ \"$(gh pr view $PR_NUMBER --json state -q .state)\" = \"MERGED\" ] && echo MERGED || echo WAITING",
311
+ filter: "MERGED",
312
+ timeout_ms: 1800000 # 30 min bound for auto-merge to land after all gates pass
313
+ })
314
+ # → end turn; the MERGED event wakes the session for the cleanup step.
315
+ # If the monitor times out, check merge state once: gh pr view "$PR_NUMBER" --json state -q .state
302
316
  ```
303
317
 
304
318
  If the user opted out of merging, skip the merge but STILL run the cleanup below: the worktree is removed either way.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  description: Publish oh-my-opencode to npm via GitHub Actions workflow
3
- argument-hint: <patch|minor|major>
3
+ argument-hint: <patch|minor|major|explicit-semver>
4
4
  ---
5
5
 
6
6
 
@@ -54,15 +54,16 @@ This contract applies to the slash-command copies (`.agents/command/publish.md`,
54
54
 
55
55
  ## CRITICAL: ARGUMENT REQUIREMENT
56
56
 
57
- **You MUST receive a version bump type from the user.** Valid options:
57
+ **You MUST receive one release selector from the user.** Valid options:
58
58
  - `patch`: Bug fixes, backward-compatible (1.1.7 → 1.1.8)
59
59
  - `minor`: New features, backward-compatible (1.1.7 → 1.2.0)
60
60
  - `major`: Breaking changes (1.1.7 → 2.0.0)
61
+ - An explicit valid semantic version, including a prerelease such as `5.0.0-beta.9`
61
62
 
62
- **If the user did not provide a bump type argument, STOP IMMEDIATELY and ask:**
63
- > "To proceed with deployment, please specify a version bump type: `patch`, `minor`, or `major`"
63
+ **If the user did not provide a release selector, STOP IMMEDIATELY and ask:**
64
+ > "To proceed with deployment, specify `patch`, `minor`, `major`, or an explicit semantic version such as `5.0.0-beta.9`."
64
65
 
65
- **DO NOT PROCEED without explicit user confirmation of bump type.**
66
+ Reject any other value. Do not infer or repair malformed versions.
66
67
 
67
68
  ---
68
69
 
@@ -72,7 +73,7 @@ This contract applies to the slash-command copies (`.agents/command/publish.md`,
72
73
 
73
74
  ```
74
75
  [
75
- { "id": "confirm-bump", "content": "Confirm version bump type with user (patch/minor/major)", "status": "in_progress", "priority": "high" },
76
+ { "id": "confirm-release-input", "content": "Confirm release selector with user (patch/minor/major or explicit semver)", "status": "in_progress", "priority": "high" },
76
77
  { "id": "check-uncommitted", "content": "Check for uncommitted changes and commit if needed", "status": "pending", "priority": "high" },
77
78
  { "id": "sync-remote", "content": "Sync with remote (pull --rebase && push if unpushed commits)", "status": "pending", "priority": "high" },
78
79
  { "id": "run-workflow", "content": "Trigger GitHub Actions publish workflow", "status": "pending", "priority": "high" },
@@ -92,9 +93,23 @@ This contract applies to the slash-command copies (`.agents/command/publish.md`,
92
93
 
93
94
  ---
94
95
 
95
- ## STEP 1: CONFIRM BUMP TYPE
96
+ ## STEP 1: CONFIRM AND CLASSIFY THE RELEASE SELECTOR
96
97
 
97
- If the user already named a bump type (argument or message), that IS the confirmation — state it and continue immediately. Only ask and wait when no bump type was given.
98
+ If the user already supplied the selector in the command argument or message, that IS the confirmation. Parse it exactly once:
99
+
100
+ ```bash
101
+ RELEASE_INPUT="${ARGUMENTS}"
102
+ if [[ "$RELEASE_INPUT" =~ ^(patch|minor|major)$ ]]; then
103
+ RELEASE_KIND=bump
104
+ elif [[ "$RELEASE_INPUT" =~ ^([0-9]+\.){2}[0-9]+(-[0-9A-Za-z]+(\.[0-9A-Za-z]+)*)?$ ]]; then
105
+ RELEASE_KIND=version
106
+ else
107
+ echo "Invalid release selector: $RELEASE_INPUT" >&2
108
+ exit 1
109
+ fi
110
+ ```
111
+
112
+ Only ask and wait when no selector was provided.
98
113
 
99
114
  ---
100
115
 
@@ -125,16 +140,29 @@ This ensures the GitHub Actions workflow runs on the latest code including all l
125
140
 
126
141
  ## STEP 3: TRIGGER GITHUB ACTIONS WORKFLOW
127
142
 
128
- Run the publish workflow:
129
- ```bash
130
- gh workflow run publish -f bump={bump_type}
131
- ```
143
+ Dispatch from `dev`, pass bump selectors through `bump`, and pass exact versions through `version`. The required `bump` input remains `patch` for explicit-version dispatches but is ignored by the workflow because `version` takes precedence.
132
144
 
133
- Wait 3 seconds, then get the run ID:
134
145
  ```bash
135
- gh run list --workflow=publish --limit=1 --json databaseId,status --jq '.[0]'
146
+ if [ "$RELEASE_KIND" = bump ]; then
147
+ RUN_URL="$(gh workflow run publish.yml --ref dev -f "bump=${RELEASE_INPUT}")"
148
+ else
149
+ RUN_URL="$(gh workflow run publish.yml --ref dev -f bump=patch -f "version=${RELEASE_INPUT}")"
150
+ fi
151
+
152
+ if ! [[ "$RUN_URL" =~ ^https://github.com/code-yeongyu/oh-my-openagent/actions/runs/[0-9]+$ ]]; then
153
+ echo "Publish dispatch did not return an exact workflow run URL: $RUN_URL" >&2
154
+ exit 1
155
+ fi
156
+ RUN_ID="${RUN_URL##*/}"
157
+ if ! [[ "$RUN_ID" =~ ^[0-9]+$ ]]; then
158
+ echo "Publish dispatch returned an invalid run ID: $RUN_ID" >&2
159
+ exit 1
160
+ fi
161
+ gh run view "${RUN_ID}" --json databaseId,status,url --jq '{databaseId,status,url}'
136
162
  ```
137
163
 
164
+ The returned run ID owns this release attempt. Never replace it with a latest-run lookup.
165
+
138
166
  ---
139
167
 
140
168
  ## STEP 4: WAIT FOR WORKFLOW COMPLETION
@@ -150,14 +178,14 @@ The publish run is a single workflow with sequential stages. Expected timeline (
150
178
 
151
179
  Poll job-level status every 30 seconds and report stage transitions to the user:
152
180
  ```bash
153
- gh run view {run_id} --json status,conclusion,jobs --jq '{status, conclusion, stage: ([.jobs[] | select(.status=="in_progress") | .name] | join(", "))}'
181
+ gh run view "${RUN_ID}" --json status,conclusion,jobs --jq '{status, conclusion, stage: ([.jobs[] | select(.status=="in_progress") | .name] | join(", "))}'
154
182
  ```
155
183
 
156
184
  **IMPORTANT: Use polling loop, NOT sleep commands.** Use the waiting time to draft the enhanced release summary (Step 6) — do not sit idle, and do not start any review activity.
157
185
 
158
186
  If conclusion is `failure`, show error and stop:
159
187
  ```bash
160
- gh run view {run_id} --log-failed
188
+ gh run view "${RUN_ID}" --log-failed
161
189
  ```
162
190
 
163
191
  ---
@@ -175,22 +203,30 @@ NEW_VERSION=$(node -p "require('./package.json').version")
175
203
  gh release view "v${NEW_VERSION}" --json tagName,url --jq '{tag: .tagName, url: .url}'
176
204
  ```
177
205
 
178
- **After verifying, generate a local preview of the auto-generated content:**
206
+ **Release notes are written BEFORE the release, not after.**
207
+
208
+ The release body is extracted from the `CHANGELOG.md` section for this version. Author the user-facing
209
+ notes under `## [Unreleased]` and land them before dispatching `/publish`; release-state preparation
210
+ stamps that heading into `## [<version>] - <UTC date>` and commits it with the release state, so the
211
+ published commit already carries its own notes.
212
+
213
+ Preview exactly what the release body will be:
179
214
 
180
215
  ```bash
181
- bun run script/generate-changelog.ts
216
+ bun run script/generate-changelog.ts > /tmp/contributors.md
217
+ bun run script/print-release-notes.ts "${NEW_VERSION}" /tmp/contributors.md
182
218
  ```
183
219
 
184
220
  <agent-instruction>
185
221
  After running the preview, present the output to the user and say:
186
222
 
187
- > **The following content is ALREADY included in the release automatically:**
188
- > - Commit changelog (grouped by feat/fix/refactor)
189
- > - Contributor thank-you messages (for non-team contributors)
223
+ > **This is the exact body the release will publish:** the notes you authored under `[Unreleased]`,
224
+ > then contributor thank-yous for non-team contributors, then the install footer.
190
225
  >
191
- > You do NOT need to write any of this. It's handled.
226
+ > Both steps are fail-closed: an absent, empty, or duplicated section aborts the release instead of
227
+ > publishing blank notes, and re-stamping a version that already has a section is refused.
192
228
  >
193
- > **For all release types**, an enhanced summary is **required** — I'll draft one in the next step.
229
+ > If the `[Unreleased]` section is empty, STOP and write the notes first — the release cannot proceed.
194
230
 
195
231
  **APPROVAL GATE (single, binary):** The user's initial publish request with a named bump type IS the only approval this workflow requires. Do NOT wait for a separate acknowledgement here. Present the preview, then IMMEDIATELY proceed to Step 6. The only exception: if the user explicitly said "let me review the changelog before you continue" (or equivalent), stop and wait. Otherwise continue without ending the turn.
196
232
  </agent-instruction>
@@ -1,16 +1,16 @@
1
1
  ---
2
2
  name: pre-publish-review
3
- description: "Nuclear-grade 16-agent pre-publish release gate. Runs /get-unpublished-changes to detect all changes since last npm release, spawns up to 10 ultrabrain agents for deep per-change analysis, invokes /review-work (5 agents) for holistic review, and 1 oracle for overall release synthesis. Runs ONLY when the user explicitly asks for a pre-publish review — a plain publish/release request MUST NOT trigger this; /publish ships directly. Triggers: 'pre-publish review', 'review before publish', 'release review', 'pre-release review', 'ready to publish?', 'can I publish?', 'pre-publish', 'safe to publish', 'publishing review', 'pre-publish check'."
3
+ description: "Nuclear-grade 12-agent pre-publish release gate. Runs /get-unpublished-changes to detect all changes since last npm release, spawns up to 10 ultrabrain agents for deep per-change analysis, invokes /review-work (orchestrator manual QA plus one gate reviewer) for holistic review, and 1 oracle for overall release synthesis. Runs ONLY when the user explicitly asks for a pre-publish review — a plain publish/release request MUST NOT trigger this; /publish ships directly. Triggers: 'pre-publish review', 'review before publish', 'release review', 'pre-release review', 'ready to publish?', 'can I publish?', 'pre-publish', 'safe to publish', 'publishing review', 'pre-publish check'."
4
4
  ---
5
5
 
6
- # Pre-Publish Review — 16-Agent Release Gate
6
+ # Pre-Publish Review — 12-Agent Release Gate
7
7
 
8
8
  Three-agent-layer review before publishing to npm. Every layer covers a different angle, and every result is mapped onto the release layers below.
9
9
 
10
10
  | Layer | Agents | Type | What They Check |
11
11
  |-------|--------|------|-----------------|
12
12
  | Per-Change Deep Dive | up to 10 | ultrabrain | Each logical change group individually — correctness, edge cases, pattern adherence |
13
- | Holistic Review | 5 | review-work | Goal compliance, QA execution, code quality, security, context mining across full changeset |
13
+ | Holistic Review | 1 (+ orchestrator QA) | review-work | Manual QA by the review orchestrator, then one gate reviewer covering goal compliance, code quality, security, and missed context across the full changeset |
14
14
  | Release Synthesis | 1 | oracle | Overall release readiness, version bump, breaking changes, deployment risk |
15
15
 
16
16
  ## Release Layer Taxonomy
@@ -159,9 +159,9 @@ OUTPUT FORMAT:
159
159
  """)
160
160
  ```
161
161
 
162
- ### Layer 2: Holistic Review via /review-work (5 agents)
162
+ ### Layer 2: Holistic Review via /review-work (one gate reviewer)
163
163
 
164
- Spawn a sub-agent that loads the `/review-work` skill. The review-work skill internally launches 5 parallel agents: Oracle (goal verification), unspecified-high (QA execution), Oracle (code quality), Oracle (security), unspecified-high (context mining). All 5 must pass for the review to pass.
164
+ Spawn a sub-agent that loads the `/review-work` skill. The review-work skill runs manual QA on the real surface itself, then launches ONE gate reviewer (oracle) that audits goal compliance, code quality, security, missed context, and the QA evidence. The review passes only on a clean QA matrix plus APPROVE.
165
165
 
166
166
  ```
167
167
  task(
@@ -186,7 +186,7 @@ BACKGROUND: Pre-publish review of oh-my-opencode, an OpenCode plugin with 1268 T
186
186
 
187
187
  The diff base is: git diff v{PUBLISHED}..HEAD
188
188
 
189
- Follow the /review-work skill flow exactly — launch all 5 review agents and collect results. Do NOT skip any of the 5 agents.
189
+ Follow the /review-work skill flow exactly — run the manual QA phase, launch the gate reviewer, and collect its verdict. Do NOT skip the QA phase or the reviewer.
190
190
  """)
191
191
  ```
192
192
 
@@ -228,7 +228,7 @@ task(
228
228
  {Read and include full content of KEY changed files — focus on public API surfaces, config schemas, agent definitions, hook registrations, tool registrations}
229
229
  </file_contents>
230
230
 
231
- You are the final gate before an npm publish. 10 ultrabrain agents are reviewing individual changes and 5 review-work agents are doing holistic review. Your job is the bird's-eye view that those focused reviews might miss.
231
+ You are the final gate before an npm publish. 10 ultrabrain agents are reviewing individual changes and the review-work gate reviewer is doing the holistic review. Your job is the bird's-eye view that those focused reviews might miss.
232
232
 
233
233
  SYNTHESIS CHECKLIST:
234
234
 
@@ -378,11 +378,8 @@ Compile the final report:
378
378
 
379
379
  | # | Review Area | Verdict | Confidence |
380
380
  |---|------------|---------|------------|
381
- | 1 | Goal & Constraint Verification | PASS/FAIL | HIGH/MED/LOW |
382
- | 2 | QA Execution | PASS/FAIL | HIGH/MED/LOW |
383
- | 3 | Code Quality | PASS/FAIL | HIGH/MED/LOW |
384
- | 4 | Security | PASS/FAIL | Severity |
385
- | 5 | Context Mining | PASS/FAIL | HIGH/MED/LOW |
381
+ | 1 | Manual QA (orchestrator, real surface) | PASS/FAIL | - |
382
+ | 2 | Gate Review (goal, code quality, security, context, QA audit) | APPROVE/REJECT | HIGH/MED/LOW |
386
383
 
387
384
  ### Blocking Issues from Holistic Review
388
385
  {Aggregated from review-work}