oh-my-opencode 4.8.1 → 4.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (507) hide show
  1. package/dist/agents/prometheus/system-prompt.d.ts +1 -1
  2. package/dist/agents/sisyphus/claude-fable-5.d.ts +19 -0
  3. package/dist/agents/sisyphus/claude-opus-4-7.d.ts +3 -1
  4. package/dist/agents/sisyphus/claude-opus-4-8.d.ts +19 -0
  5. package/dist/agents/sisyphus/index.d.ts +4 -0
  6. package/dist/agents/types.d.ts +2 -2
  7. package/dist/cli/doctor/checks/codex.d.ts +1 -0
  8. package/dist/cli/doctor/checks/tools-gh.d.ts +8 -1
  9. package/dist/cli/doctor/index.d.ts +1 -0
  10. package/dist/cli/doctor/types.d.ts +2 -0
  11. package/dist/cli/index.js +1885 -776
  12. package/dist/cli/install-codex/codex-config-permissions.d.ts +1 -1
  13. package/dist/cli/install-codex/codex-config-plugins.d.ts +1 -0
  14. package/dist/cli/install-codex/codex-config-toml.d.ts +1 -0
  15. package/dist/cli/install-codex/codex-installer-bin-dir.d.ts +8 -0
  16. package/dist/cli/install-codex/install-codex.d.ts +1 -8
  17. package/dist/cli/install-codex/lsp-daemon-reaper.d.ts +5 -0
  18. package/dist/cli/sparkshell-condense.d.ts +10 -0
  19. package/dist/cli/sparkshell-parse.d.ts +3 -0
  20. package/dist/cli/sparkshell-session-context.d.ts +20 -0
  21. package/dist/cli/sparkshell-spark.d.ts +23 -0
  22. package/dist/cli/sparkshell.d.ts +8 -1
  23. package/dist/cli-node/index.js +92552 -0
  24. package/dist/config/schema/agent-names.d.ts +2 -0
  25. package/dist/config/schema/hooks.d.ts +0 -2
  26. package/dist/config/schema/keyword-detector.d.ts +0 -6
  27. package/dist/config/schema/oh-my-opencode-config.d.ts +2 -4
  28. package/dist/create-hooks.d.ts +0 -2
  29. package/dist/features/background-agent/parent-wake-dedupe.d.ts +2 -0
  30. package/dist/features/background-agent/parent-wake-flush-runner.d.ts +2 -0
  31. package/dist/features/background-agent/parent-wake-prompt-dispatch.d.ts +1 -0
  32. package/dist/features/background-agent/parent-wake-session-history.d.ts +4 -0
  33. package/dist/features/background-agent/parent-wake-session-inspector.d.ts +1 -0
  34. package/dist/features/builtin-commands/templates/handoff.d.ts +1 -1
  35. package/dist/features/builtin-skills/index.d.ts +1 -1
  36. package/dist/features/builtin-skills/skills.d.ts +4 -0
  37. package/dist/features/opencode-runtime-skills/source-server.d.ts +16 -1
  38. package/dist/features/opencode-skill-loader/skill-definition-record.d.ts +2 -0
  39. package/dist/features/team-mode/tools/lifecycle-test-fixture.d.ts +2 -0
  40. package/dist/features/team-mode/types.d.ts +1 -0
  41. package/dist/features/tmux-subagent/failed-readiness-cache.d.ts +28 -0
  42. package/dist/features/tmux-subagent/manager.d.ts +1 -9
  43. package/dist/features/tmux-subagent/resolve-server-url.d.ts +3 -0
  44. package/dist/hooks/anthropic-context-window-limit-recovery/executor.d.ts +1 -1
  45. package/dist/hooks/index.d.ts +0 -1
  46. package/dist/hooks/keyword-detector/constants.d.ts +0 -4
  47. package/dist/hooks/keyword-detector/ultrawork/source-detector.d.ts +1 -1
  48. package/dist/index.js +9001 -1795
  49. package/dist/oh-my-opencode.schema.json +2 -4
  50. package/dist/plugin/chat-params.d.ts +1 -8
  51. package/dist/plugin/hooks/create-core-hooks.d.ts +0 -2
  52. package/dist/plugin/hooks/create-session-hooks.d.ts +0 -2
  53. package/dist/plugin/hooks/create-transform-hooks.d.ts +1 -2
  54. package/dist/plugin/messages-transform.d.ts +0 -1
  55. package/dist/shared/model-availability.d.ts +10 -2
  56. package/package.json +25 -18
  57. package/packages/ast-grep-mcp/dist/cli.js +2 -10
  58. package/packages/git-bash-mcp/dist/cli.js +11 -4
  59. package/packages/lsp-daemon/dist/cli.d.ts +2 -0
  60. package/packages/lsp-daemon/dist/cli.js +3711 -0
  61. package/packages/lsp-daemon/dist/daemon-client.d.ts +19 -0
  62. package/packages/lsp-daemon/dist/daemon-client.js +114 -0
  63. package/packages/lsp-daemon/dist/daemon-server.d.ts +12 -0
  64. package/packages/lsp-daemon/dist/daemon-server.js +106 -0
  65. package/packages/lsp-daemon/dist/ensure-daemon.d.ts +21 -0
  66. package/packages/lsp-daemon/dist/ensure-daemon.js +97 -0
  67. package/packages/lsp-daemon/dist/index.d.ts +5 -0
  68. package/packages/lsp-daemon/dist/index.js +3573 -0
  69. package/packages/lsp-daemon/dist/lock.d.ts +7 -0
  70. package/packages/lsp-daemon/dist/lock.js +61 -0
  71. package/packages/lsp-daemon/dist/package.json +6 -0
  72. package/packages/lsp-daemon/dist/paths.d.ts +11 -0
  73. package/packages/lsp-daemon/dist/paths.js +49 -0
  74. package/packages/lsp-daemon/dist/proxy.d.ts +10 -0
  75. package/packages/lsp-daemon/dist/proxy.js +61 -0
  76. package/packages/lsp-daemon/dist/request-routing.d.ts +9 -0
  77. package/packages/lsp-daemon/dist/request-routing.js +44 -0
  78. package/packages/lsp-daemon/dist/run-daemon.d.ts +1 -0
  79. package/packages/lsp-daemon/dist/run-daemon.js +11 -0
  80. package/packages/lsp-daemon/dist/socket-jsonrpc.d.ts +5 -0
  81. package/packages/lsp-daemon/dist/socket-jsonrpc.js +25 -0
  82. package/packages/lsp-daemon/package.json +38 -0
  83. package/packages/lsp-tools-mcp/dist/cli.js +0 -0
  84. package/packages/lsp-tools-mcp/dist/lsp/client-wrapper.js +40 -17
  85. package/packages/lsp-tools-mcp/dist/lsp/client.js +11 -9
  86. package/packages/lsp-tools-mcp/dist/lsp/config-loader.js +5 -5
  87. package/packages/lsp-tools-mcp/dist/lsp/directory-diagnostics.js +5 -3
  88. package/packages/lsp-tools-mcp/dist/lsp/effective-extension.d.ts +1 -0
  89. package/packages/lsp-tools-mcp/dist/lsp/effective-extension.js +8 -0
  90. package/packages/lsp-tools-mcp/dist/lsp/infer-extension.js +3 -2
  91. package/packages/lsp-tools-mcp/dist/lsp/language-mappings.js +1 -0
  92. package/packages/lsp-tools-mcp/dist/lsp/server-definitions.js +12 -0
  93. package/packages/lsp-tools-mcp/dist/lsp/server-install-state.d.ts +12 -0
  94. package/packages/lsp-tools-mcp/dist/lsp/server-install-state.js +51 -0
  95. package/packages/lsp-tools-mcp/dist/lsp/workspace-edit.js +2 -1
  96. package/packages/lsp-tools-mcp/dist/request-context.d.ts +7 -0
  97. package/packages/lsp-tools-mcp/dist/request-context.js +14 -0
  98. package/packages/lsp-tools-mcp/dist/tools.js +44 -1
  99. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +46 -33
  100. package/packages/omo-codex/plugin/.mcp.json +1 -1
  101. package/packages/omo-codex/plugin/components/comment-checker/dist/apply-patch.d.ts +7 -0
  102. package/packages/omo-codex/plugin/components/comment-checker/dist/apply-patch.js +173 -0
  103. package/packages/omo-codex/plugin/components/comment-checker/dist/cli.d.ts +2 -0
  104. package/packages/omo-codex/plugin/components/comment-checker/dist/cli.js +10 -0
  105. package/packages/omo-codex/plugin/components/comment-checker/dist/codex-hook.d.ts +22 -0
  106. package/packages/omo-codex/plugin/components/comment-checker/dist/codex-hook.js +165 -0
  107. package/packages/omo-codex/plugin/components/comment-checker/dist/core-values.d.ts +1 -0
  108. package/packages/omo-codex/plugin/components/comment-checker/dist/core-values.js +1 -0
  109. package/packages/omo-codex/plugin/components/comment-checker/dist/core.d.ts +5 -0
  110. package/packages/omo-codex/plugin/components/comment-checker/dist/core.js +4 -0
  111. package/packages/omo-codex/plugin/components/comment-checker/dist/hook-input.d.ts +6 -0
  112. package/packages/omo-codex/plugin/components/comment-checker/dist/hook-input.js +10 -0
  113. package/packages/omo-codex/plugin/components/comment-checker/dist/record.d.ts +2 -0
  114. package/packages/omo-codex/plugin/components/comment-checker/dist/record.js +11 -0
  115. package/packages/omo-codex/plugin/components/comment-checker/dist/request-extractor.d.ts +3 -0
  116. package/packages/omo-codex/plugin/components/comment-checker/dist/request-extractor.js +104 -0
  117. package/packages/omo-codex/plugin/components/comment-checker/dist/runner.d.ts +26 -0
  118. package/packages/omo-codex/plugin/components/comment-checker/dist/runner.js +144 -0
  119. package/packages/omo-codex/plugin/components/comment-checker/dist/types.d.ts +43 -0
  120. package/packages/omo-codex/plugin/components/comment-checker/dist/types.js +1 -0
  121. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  122. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  123. package/packages/omo-codex/plugin/components/git-bash/dist/cli.d.ts +2 -0
  124. package/packages/omo-codex/plugin/components/git-bash/dist/cli.js +29 -0
  125. package/packages/omo-codex/plugin/components/git-bash/dist/codex-hook.d.ts +28 -0
  126. package/packages/omo-codex/plugin/components/git-bash/dist/codex-hook.js +137 -0
  127. package/packages/omo-codex/plugin/components/git-bash/dist/index.d.ts +1 -0
  128. package/packages/omo-codex/plugin/components/git-bash/dist/index.js +1 -0
  129. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  130. package/packages/omo-codex/plugin/components/git-bash/package.json +5 -2
  131. package/packages/omo-codex/plugin/components/lsp/.mcp.json +1 -1
  132. package/packages/omo-codex/plugin/components/lsp/dist/cli.d.ts +2 -0
  133. package/packages/omo-codex/plugin/components/lsp/dist/cli.js +42 -0
  134. package/packages/omo-codex/plugin/components/lsp/dist/codex-hook-cli.d.ts +2 -0
  135. package/packages/omo-codex/plugin/components/lsp/dist/codex-hook-cli.js +40 -0
  136. package/packages/omo-codex/plugin/components/lsp/dist/codex-hook.d.ts +16 -0
  137. package/packages/omo-codex/plugin/components/lsp/dist/codex-hook.js +180 -0
  138. package/packages/omo-codex/plugin/components/lsp/dist/lsp-session-state.d.ts +12 -0
  139. package/packages/omo-codex/plugin/components/lsp/dist/lsp-session-state.js +95 -0
  140. package/packages/omo-codex/plugin/components/lsp/dist/mutated-file-paths.d.ts +6 -0
  141. package/packages/omo-codex/plugin/components/lsp/dist/mutated-file-paths.js +79 -0
  142. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  143. package/packages/omo-codex/plugin/components/lsp/package.json +7 -7
  144. package/packages/omo-codex/plugin/components/lsp/scripts/build-lsp-daemon.mjs +68 -0
  145. package/packages/omo-codex/plugin/components/lsp/scripts/build-lsp-tools.mjs +45 -22
  146. package/packages/omo-codex/plugin/components/lsp/src/cli.ts +1 -1
  147. package/packages/omo-codex/plugin/components/lsp/src/codex-hook-cli.ts +1 -1
  148. package/packages/omo-codex/plugin/components/lsp/src/codex-hook.ts +6 -2
  149. package/packages/omo-codex/plugin/components/lsp/src/lsp-session-state.ts +4 -0
  150. package/packages/omo-codex/plugin/components/lsp/test/codex-hook-unavailable.test.ts +68 -0
  151. package/packages/omo-codex/plugin/components/lsp/test/package-smoke.test.ts +8 -20
  152. package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus.md +69 -96
  153. package/packages/omo-codex/plugin/components/rules/dist/cli.d.ts +2 -0
  154. package/packages/omo-codex/plugin/components/rules/dist/cli.js +118 -0
  155. package/packages/omo-codex/plugin/components/rules/dist/codex-hook-options.d.ts +5 -0
  156. package/packages/omo-codex/plugin/components/rules/dist/codex-hook-options.js +1 -0
  157. package/packages/omo-codex/plugin/components/rules/dist/codex-hook.d.ts +47 -0
  158. package/packages/omo-codex/plugin/components/rules/dist/codex-hook.js +127 -0
  159. package/packages/omo-codex/plugin/components/rules/dist/config.d.ts +2 -0
  160. package/packages/omo-codex/plugin/components/rules/dist/config.js +100 -0
  161. package/packages/omo-codex/plugin/components/rules/dist/context-pressure.d.ts +2 -0
  162. package/packages/omo-codex/plugin/components/rules/dist/context-pressure.js +26 -0
  163. package/packages/omo-codex/plugin/components/rules/dist/debug-log.d.ts +8 -0
  164. package/packages/omo-codex/plugin/components/rules/dist/debug-log.js +36 -0
  165. package/packages/omo-codex/plugin/components/rules/dist/dynamic-target-fingerprints.d.ts +7 -0
  166. package/packages/omo-codex/plugin/components/rules/dist/dynamic-target-fingerprints.js +65 -0
  167. package/packages/omo-codex/plugin/components/rules/dist/event-budget.d.ts +3 -0
  168. package/packages/omo-codex/plugin/components/rules/dist/event-budget.js +14 -0
  169. package/packages/omo-codex/plugin/components/rules/dist/hook-output.d.ts +2 -0
  170. package/packages/omo-codex/plugin/components/rules/dist/hook-output.js +24 -0
  171. package/packages/omo-codex/plugin/components/rules/dist/path-utils.d.ts +4 -0
  172. package/packages/omo-codex/plugin/components/rules/dist/path-utils.js +24 -0
  173. package/packages/omo-codex/plugin/components/rules/dist/persistent-cache.d.ts +13 -0
  174. package/packages/omo-codex/plugin/components/rules/dist/persistent-cache.js +172 -0
  175. package/packages/omo-codex/plugin/components/rules/dist/post-compact-budget.d.ts +6 -0
  176. package/packages/omo-codex/plugin/components/rules/dist/post-compact-budget.js +74 -0
  177. package/packages/omo-codex/plugin/components/rules/dist/post-compact-claim.d.ts +4 -0
  178. package/packages/omo-codex/plugin/components/rules/dist/post-compact-claim.js +6 -0
  179. package/packages/omo-codex/plugin/components/rules/dist/post-compact-directive.d.ts +1 -0
  180. package/packages/omo-codex/plugin/components/rules/dist/post-compact-directive.js +32 -0
  181. package/packages/omo-codex/plugin/components/rules/dist/post-compact-state.d.ts +13 -0
  182. package/packages/omo-codex/plugin/components/rules/dist/post-compact-state.js +29 -0
  183. package/packages/omo-codex/plugin/components/rules/dist/rules/cache.d.ts +9 -0
  184. package/packages/omo-codex/plugin/components/rules/dist/rules/cache.js +51 -0
  185. package/packages/omo-codex/plugin/components/rules/dist/rules/constants.d.ts +70 -0
  186. package/packages/omo-codex/plugin/components/rules/dist/rules/constants.js +101 -0
  187. package/packages/omo-codex/plugin/components/rules/dist/rules/engine-dynamic-cache.d.ts +5 -0
  188. package/packages/omo-codex/plugin/components/rules/dist/rules/engine-dynamic-cache.js +60 -0
  189. package/packages/omo-codex/plugin/components/rules/dist/rules/engine-dynamic-loader.d.ts +6 -0
  190. package/packages/omo-codex/plugin/components/rules/dist/rules/engine-dynamic-loader.js +61 -0
  191. package/packages/omo-codex/plugin/components/rules/dist/rules/engine-loader.d.ts +7 -0
  192. package/packages/omo-codex/plugin/components/rules/dist/rules/engine-loader.js +60 -0
  193. package/packages/omo-codex/plugin/components/rules/dist/rules/engine-paths.d.ts +11 -0
  194. package/packages/omo-codex/plugin/components/rules/dist/rules/engine-paths.js +75 -0
  195. package/packages/omo-codex/plugin/components/rules/dist/rules/engine-static-loader.d.ts +6 -0
  196. package/packages/omo-codex/plugin/components/rules/dist/rules/engine-static-loader.js +29 -0
  197. package/packages/omo-codex/plugin/components/rules/dist/rules/engine-types.d.ts +44 -0
  198. package/packages/omo-codex/plugin/components/rules/dist/rules/engine-types.js +1 -0
  199. package/packages/omo-codex/plugin/components/rules/dist/rules/engine.d.ts +5 -0
  200. package/packages/omo-codex/plugin/components/rules/dist/rules/engine.js +85 -0
  201. package/packages/omo-codex/plugin/components/rules/dist/rules/errors.d.ts +6 -0
  202. package/packages/omo-codex/plugin/components/rules/dist/rules/errors.js +12 -0
  203. package/packages/omo-codex/plugin/components/rules/dist/rules/finder-cache.d.ts +14 -0
  204. package/packages/omo-codex/plugin/components/rules/dist/rules/finder-cache.js +51 -0
  205. package/packages/omo-codex/plugin/components/rules/dist/rules/finder-paths.d.ts +6 -0
  206. package/packages/omo-codex/plugin/components/rules/dist/rules/finder-paths.js +33 -0
  207. package/packages/omo-codex/plugin/components/rules/dist/rules/finder-sources.d.ts +5 -0
  208. package/packages/omo-codex/plugin/components/rules/dist/rules/finder-sources.js +40 -0
  209. package/packages/omo-codex/plugin/components/rules/dist/rules/finder.d.ts +28 -0
  210. package/packages/omo-codex/plugin/components/rules/dist/rules/finder.js +146 -0
  211. package/packages/omo-codex/plugin/components/rules/dist/rules/formatter.d.ts +7 -0
  212. package/packages/omo-codex/plugin/components/rules/dist/rules/formatter.js +112 -0
  213. package/packages/omo-codex/plugin/components/rules/dist/rules/matcher.d.ts +18 -0
  214. package/packages/omo-codex/plugin/components/rules/dist/rules/matcher.js +93 -0
  215. package/packages/omo-codex/plugin/components/rules/dist/rules/ordering.d.ts +3 -0
  216. package/packages/omo-codex/plugin/components/rules/dist/rules/ordering.js +27 -0
  217. package/packages/omo-codex/plugin/components/rules/dist/rules/parser-frontmatter.d.ts +7 -0
  218. package/packages/omo-codex/plugin/components/rules/dist/rules/parser-frontmatter.js +30 -0
  219. package/packages/omo-codex/plugin/components/rules/dist/rules/parser-yaml.d.ts +2 -0
  220. package/packages/omo-codex/plugin/components/rules/dist/rules/parser-yaml.js +237 -0
  221. package/packages/omo-codex/plugin/components/rules/dist/rules/parser.d.ts +3 -0
  222. package/packages/omo-codex/plugin/components/rules/dist/rules/parser.js +31 -0
  223. package/packages/omo-codex/plugin/components/rules/dist/rules/plugin-root.d.ts +1 -0
  224. package/packages/omo-codex/plugin/components/rules/dist/rules/plugin-root.js +48 -0
  225. package/packages/omo-codex/plugin/components/rules/dist/rules/project-root.d.ts +1 -0
  226. package/packages/omo-codex/plugin/components/rules/dist/rules/project-root.js +23 -0
  227. package/packages/omo-codex/plugin/components/rules/dist/rules/scanner.d.ts +14 -0
  228. package/packages/omo-codex/plugin/components/rules/dist/rules/scanner.js +111 -0
  229. package/packages/omo-codex/plugin/components/rules/dist/rules/sources.d.ts +3 -0
  230. package/packages/omo-codex/plugin/components/rules/dist/rules/sources.js +9 -0
  231. package/packages/omo-codex/plugin/components/rules/dist/rules/truncator.d.ts +18 -0
  232. package/packages/omo-codex/plugin/components/rules/dist/rules/truncator.js +59 -0
  233. package/packages/omo-codex/plugin/components/rules/dist/rules/types.d.ts +126 -0
  234. package/packages/omo-codex/plugin/components/rules/dist/rules/types.js +8 -0
  235. package/packages/omo-codex/plugin/components/rules/dist/rules-engine-factory.d.ts +6 -0
  236. package/packages/omo-codex/plugin/components/rules/dist/rules-engine-factory.js +20 -0
  237. package/packages/omo-codex/plugin/components/rules/dist/session-state-lock.d.ts +3 -0
  238. package/packages/omo-codex/plugin/components/rules/dist/session-state-lock.js +41 -0
  239. package/packages/omo-codex/plugin/components/rules/dist/sparkshell-awareness.d.ts +10 -0
  240. package/packages/omo-codex/plugin/components/rules/dist/sparkshell-awareness.js +90 -0
  241. package/packages/omo-codex/plugin/components/rules/dist/static-injection.d.ts +3 -0
  242. package/packages/omo-codex/plugin/components/rules/dist/static-injection.js +128 -0
  243. package/packages/omo-codex/plugin/components/rules/dist/tool-paths.d.ts +6 -0
  244. package/packages/omo-codex/plugin/components/rules/dist/tool-paths.js +168 -0
  245. package/packages/omo-codex/plugin/components/rules/dist/transcript-rule-filter.d.ts +4 -0
  246. package/packages/omo-codex/plugin/components/rules/dist/transcript-rule-filter.js +49 -0
  247. package/packages/omo-codex/plugin/components/rules/dist/transcript-search.d.ts +4 -0
  248. package/packages/omo-codex/plugin/components/rules/dist/transcript-search.js +91 -0
  249. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  250. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  251. package/packages/omo-codex/plugin/components/rules/src/codex-hook.ts +4 -2
  252. package/packages/omo-codex/plugin/components/rules/src/config.ts +13 -0
  253. package/packages/omo-codex/plugin/components/rules/src/event-budget.ts +17 -0
  254. package/packages/omo-codex/plugin/components/rules/src/persistent-cache.ts +4 -1
  255. package/packages/omo-codex/plugin/components/rules/src/post-compact-directive.ts +39 -0
  256. package/packages/omo-codex/plugin/components/rules/src/rules/constants.ts +16 -0
  257. package/packages/omo-codex/plugin/components/rules/src/rules/engine.ts +8 -0
  258. package/packages/omo-codex/plugin/components/rules/src/rules/types.ts +4 -0
  259. package/packages/omo-codex/plugin/components/rules/src/sparkshell-awareness.ts +53 -4
  260. package/packages/omo-codex/plugin/components/rules/src/static-injection.ts +127 -7
  261. package/packages/omo-codex/plugin/components/rules/src/transcript-rule-filter.ts +9 -1
  262. package/packages/omo-codex/plugin/components/rules/test/bundled-rules.test.ts +4 -2
  263. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-budget.test.ts +7 -2
  264. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-context.test.ts +9 -9
  265. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-dedup.test.ts +10 -4
  266. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-directive.test.ts +241 -0
  267. package/packages/omo-codex/plugin/components/rules/test/event-budget.test.ts +168 -0
  268. package/packages/omo-codex/plugin/components/rules/test/post-compact-budget.test.ts +4 -0
  269. package/packages/omo-codex/plugin/components/rules/test/sparkshell-awareness.test.ts +86 -3
  270. package/packages/omo-codex/plugin/components/start-work-continuation/directive.md +15 -15
  271. package/packages/omo-codex/plugin/components/start-work-continuation/dist/boulder-reader.d.ts +16 -0
  272. package/packages/omo-codex/plugin/components/start-work-continuation/dist/boulder-reader.js +146 -0
  273. package/packages/omo-codex/plugin/components/start-work-continuation/dist/cli.d.ts +2 -0
  274. package/packages/omo-codex/plugin/components/start-work-continuation/dist/cli.js +49 -0
  275. package/packages/omo-codex/plugin/components/start-work-continuation/dist/codex-hook.d.ts +2 -0
  276. package/packages/omo-codex/plugin/components/start-work-continuation/dist/codex-hook.js +80 -0
  277. package/packages/omo-codex/plugin/components/start-work-continuation/dist/directive.d.ts +1 -0
  278. package/packages/omo-codex/plugin/components/start-work-continuation/dist/directive.js +2 -0
  279. package/packages/omo-codex/plugin/components/start-work-continuation/dist/index.d.ts +5 -0
  280. package/packages/omo-codex/plugin/components/start-work-continuation/dist/index.js +3 -0
  281. package/packages/omo-codex/plugin/components/start-work-continuation/dist/types.d.ts +20 -0
  282. package/packages/omo-codex/plugin/components/start-work-continuation/dist/types.js +1 -0
  283. package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +2 -2
  284. package/packages/omo-codex/plugin/components/start-work-continuation/package.json +1 -1
  285. package/packages/omo-codex/plugin/components/start-work-continuation/test/codex-hook.test.ts +24 -2
  286. package/packages/omo-codex/plugin/components/telemetry/dist/atomic-write.d.ts +1 -0
  287. package/packages/omo-codex/plugin/components/telemetry/dist/atomic-write.js +18 -0
  288. package/packages/omo-codex/plugin/components/telemetry/dist/cli.d.ts +2 -0
  289. package/packages/omo-codex/plugin/components/telemetry/dist/cli.js +62 -0
  290. package/packages/omo-codex/plugin/components/telemetry/dist/codex-hook.d.ts +15 -0
  291. package/packages/omo-codex/plugin/components/telemetry/dist/codex-hook.js +42 -0
  292. package/packages/omo-codex/plugin/components/telemetry/dist/data-path.d.ts +10 -0
  293. package/packages/omo-codex/plugin/components/telemetry/dist/data-path.js +35 -0
  294. package/packages/omo-codex/plugin/components/telemetry/dist/diagnostics.d.ts +12 -0
  295. package/packages/omo-codex/plugin/components/telemetry/dist/diagnostics.js +108 -0
  296. package/packages/omo-codex/plugin/components/telemetry/dist/env-flags.d.ts +4 -0
  297. package/packages/omo-codex/plugin/components/telemetry/dist/env-flags.js +31 -0
  298. package/packages/omo-codex/plugin/components/telemetry/dist/posthog-activity-state.d.ts +8 -0
  299. package/packages/omo-codex/plugin/components/telemetry/dist/posthog-activity-state.js +68 -0
  300. package/packages/omo-codex/plugin/components/telemetry/dist/posthog.d.ts +21 -0
  301. package/packages/omo-codex/plugin/components/telemetry/dist/posthog.js +133 -0
  302. package/packages/omo-codex/plugin/components/telemetry/dist/product-identity.d.ts +8 -0
  303. package/packages/omo-codex/plugin/components/telemetry/dist/product-identity.js +29 -0
  304. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  305. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  306. package/packages/omo-codex/plugin/components/ultrawork/agents/explorer.toml +5 -13
  307. package/packages/omo-codex/plugin/components/ultrawork/agents/librarian.toml +61 -185
  308. package/packages/omo-codex/plugin/components/ultrawork/agents/plan.toml +1 -1
  309. package/packages/omo-codex/plugin/components/ultrawork/directive.md +122 -117
  310. package/packages/omo-codex/plugin/components/ultrawork/dist/cli.d.ts +2 -0
  311. package/packages/omo-codex/plugin/components/ultrawork/dist/cli.js +48 -0
  312. package/packages/omo-codex/plugin/components/ultrawork/dist/codex-hook.d.ts +7 -0
  313. package/packages/omo-codex/plugin/components/ultrawork/dist/codex-hook.js +122 -0
  314. package/packages/omo-codex/plugin/components/ultrawork/dist/directive.d.ts +1 -0
  315. package/packages/omo-codex/plugin/components/ultrawork/dist/directive.js +2 -0
  316. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  317. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  318. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/SKILL.md +20 -11
  319. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +17 -11
  320. package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook.test.ts +2 -5
  321. package/packages/omo-codex/plugin/components/ultrawork/test/package-smoke.test.ts +0 -71
  322. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint.d.ts +16 -0
  323. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint.js +200 -0
  324. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-arg-parser.d.ts +17 -0
  325. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-arg-parser.js +97 -0
  326. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-commands.d.ts +4 -0
  327. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-commands.js +183 -0
  328. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-output.d.ts +6 -0
  329. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-output.js +55 -0
  330. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-steering.d.ts +12 -0
  331. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-steering.js +145 -0
  332. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.d.ts +2 -0
  333. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +39 -0
  334. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-instruction.d.ts +13 -0
  335. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-instruction.js +100 -0
  336. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-snapshot.d.ts +26 -0
  337. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-snapshot.js +97 -0
  338. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-hook.d.ts +28 -0
  339. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-hook.js +145 -0
  340. package/packages/omo-codex/plugin/components/ulw-loop/dist/command-types.d.ts +34 -0
  341. package/packages/omo-codex/plugin/components/ulw-loop/dist/command-types.js +1 -0
  342. package/packages/omo-codex/plugin/components/ulw-loop/dist/constants.d.ts +16 -0
  343. package/packages/omo-codex/plugin/components/ulw-loop/dist/constants.js +41 -0
  344. package/packages/omo-codex/plugin/components/ulw-loop/dist/domain-types.d.ts +95 -0
  345. package/packages/omo-codex/plugin/components/ulw-loop/dist/domain-types.js +1 -0
  346. package/packages/omo-codex/plugin/components/ulw-loop/dist/evidence.d.ts +31 -0
  347. package/packages/omo-codex/plugin/components/ulw-loop/dist/evidence.js +119 -0
  348. package/packages/omo-codex/plugin/components/ulw-loop/dist/goal-status.d.ts +12 -0
  349. package/packages/omo-codex/plugin/components/ulw-loop/dist/goal-status.js +69 -0
  350. package/packages/omo-codex/plugin/components/ulw-loop/dist/paths.d.ts +16 -0
  351. package/packages/omo-codex/plugin/components/ulw-loop/dist/paths.js +59 -0
  352. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-crud.d.ts +48 -0
  353. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-crud.js +119 -0
  354. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-io.d.ts +8 -0
  355. package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-io.js +89 -0
  356. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate.d.ts +6 -0
  357. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate.js +123 -0
  358. package/packages/omo-codex/plugin/components/ulw-loop/dist/review-blockers.d.ts +16 -0
  359. package/packages/omo-codex/plugin/components/ulw-loop/dist/review-blockers.js +70 -0
  360. package/packages/omo-codex/plugin/components/ulw-loop/dist/runtime.d.ts +10 -0
  361. package/packages/omo-codex/plugin/components/ulw-loop/dist/runtime.js +13 -0
  362. package/packages/omo-codex/plugin/components/ulw-loop/dist/steering-types.d.ts +63 -0
  363. package/packages/omo-codex/plugin/components/ulw-loop/dist/steering-types.js +1 -0
  364. package/packages/omo-codex/plugin/components/ulw-loop/dist/steering.d.ts +6 -0
  365. package/packages/omo-codex/plugin/components/ulw-loop/dist/steering.js +292 -0
  366. package/packages/omo-codex/plugin/components/ulw-loop/dist/types.d.ts +5 -0
  367. package/packages/omo-codex/plugin/components/ulw-loop/dist/types.js +5 -0
  368. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +2 -2
  369. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  370. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +14 -14
  371. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +24 -25
  372. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-commands.ts +17 -3
  373. package/packages/omo-codex/plugin/components/ulw-loop/src/cli.ts +2 -1
  374. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-instruction.ts +1 -1
  375. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-entrypoint.test.ts +95 -0
  376. package/packages/omo-codex/plugin/components/ulw-loop/test/package-smoke.test.ts +0 -96
  377. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate.test.ts +23 -0
  378. package/packages/omo-codex/plugin/components/ulw-loop/test/skill-contract.test.ts +46 -0
  379. package/packages/omo-codex/plugin/hooks/hooks.json +16 -16
  380. package/packages/omo-codex/plugin/package-lock.json +10 -9
  381. package/packages/omo-codex/plugin/package.json +27 -26
  382. package/packages/omo-codex/plugin/scripts/auto-update.mjs +64 -15
  383. package/packages/omo-codex/plugin/scripts/build-bundled-mcp-runtimes.mjs +16 -0
  384. package/packages/omo-codex/plugin/scripts/migrate-codex-config/multi-agent-v2-guard.mjs +82 -18
  385. package/packages/omo-codex/plugin/scripts/migrate-codex-config.mjs +2 -2
  386. package/packages/omo-codex/plugin/scripts/sync-skills.mjs +23 -11
  387. package/packages/omo-codex/plugin/scripts/sync-version.mjs +94 -0
  388. package/packages/omo-codex/plugin/skills/init-deep/SKILL.md +9 -9
  389. package/packages/omo-codex/plugin/skills/lcx-contribute-bug-fix/SKILL.md +16 -1
  390. package/packages/omo-codex/plugin/skills/lcx-doctor/SKILL.md +93 -0
  391. package/packages/omo-codex/plugin/skills/lcx-doctor/agents/openai.yaml +11 -0
  392. package/packages/omo-codex/plugin/skills/lcx-report-bug/SKILL.md +17 -13
  393. package/packages/omo-codex/plugin/skills/lsp-setup/SKILL.md +139 -0
  394. package/packages/omo-codex/plugin/skills/lsp-setup/references/bash/README.md +60 -0
  395. package/packages/omo-codex/plugin/skills/lsp-setup/references/c-cpp/README.md +61 -0
  396. package/packages/omo-codex/plugin/skills/lsp-setup/references/csharp/README.md +71 -0
  397. package/packages/omo-codex/plugin/skills/lsp-setup/references/dart/README.md +48 -0
  398. package/packages/omo-codex/plugin/skills/lsp-setup/references/elixir/README.md +51 -0
  399. package/packages/omo-codex/plugin/skills/lsp-setup/references/go/README.md +57 -0
  400. package/packages/omo-codex/plugin/skills/lsp-setup/references/haskell/README.md +57 -0
  401. package/packages/omo-codex/plugin/skills/lsp-setup/references/java/README.md +57 -0
  402. package/packages/omo-codex/plugin/skills/lsp-setup/references/julia/README.md +60 -0
  403. package/packages/omo-codex/plugin/skills/lsp-setup/references/kotlin/README.md +59 -0
  404. package/packages/omo-codex/plugin/skills/lsp-setup/references/lua/README.md +66 -0
  405. package/packages/omo-codex/plugin/skills/lsp-setup/references/php/README.md +62 -0
  406. package/packages/omo-codex/plugin/skills/lsp-setup/references/python/README.md +71 -0
  407. package/packages/omo-codex/plugin/skills/lsp-setup/references/ruby/README.md +53 -0
  408. package/packages/omo-codex/plugin/skills/lsp-setup/references/rust/README.md +59 -0
  409. package/packages/omo-codex/plugin/skills/lsp-setup/references/swift/README.md +51 -0
  410. package/packages/omo-codex/plugin/skills/lsp-setup/references/terraform/README.md +62 -0
  411. package/packages/omo-codex/plugin/skills/lsp-setup/references/typescript/README.md +77 -0
  412. package/packages/omo-codex/plugin/skills/lsp-setup/references/yaml/README.md +70 -0
  413. package/packages/omo-codex/plugin/skills/lsp-setup/references/zig/README.md +49 -0
  414. package/packages/omo-codex/plugin/skills/lsp-setup/scripts/detect-lsp.ts +210 -0
  415. package/packages/omo-codex/plugin/skills/lsp-setup/scripts/lsp-server-table.ts +177 -0
  416. package/packages/omo-codex/plugin/skills/lsp-setup/scripts/tsconfig.json +17 -0
  417. package/packages/omo-codex/plugin/skills/lsp-setup/scripts/verify-lsp.ts +147 -0
  418. package/packages/omo-codex/plugin/skills/refactor/SKILL.md +9 -9
  419. package/packages/omo-codex/plugin/skills/remove-ai-slops/SKILL.md +10 -10
  420. package/packages/omo-codex/plugin/skills/review-work/SKILL.md +20 -22
  421. package/packages/omo-codex/plugin/skills/start-work/SKILL.md +38 -61
  422. package/packages/omo-codex/plugin/skills/ultraresearch/SKILL.md +135 -677
  423. package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +14 -14
  424. package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +24 -25
  425. package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +20 -11
  426. package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +17 -11
  427. package/packages/omo-codex/plugin/skills/visual-qa/SKILL.md +9 -9
  428. package/packages/omo-codex/plugin/test/aggregate-build.test.mjs +2 -1
  429. package/packages/omo-codex/plugin/test/aggregate-mcp.test.mjs +1 -1
  430. package/packages/omo-codex/plugin/test/aggregate-plugin-fixture.mjs +5 -5
  431. package/packages/omo-codex/plugin/test/aggregate-skills.test.mjs +6 -6
  432. package/packages/omo-codex/plugin/test/auto-update-restart-notice.test.mjs +194 -0
  433. package/packages/omo-codex/plugin/test/auto-update.test.mjs +17 -0
  434. package/packages/omo-codex/plugin/test/lcx-bug-skills.test.mjs +15 -44
  435. package/packages/omo-codex/plugin/test/lsp-prebuild-layouts.test.mjs +140 -0
  436. package/packages/omo-codex/plugin/test/migrate-codex-config.test.mjs +189 -7
  437. package/packages/omo-codex/plugin/test/start-work-skill.test.mjs +9 -31
  438. package/packages/omo-codex/plugin/test/sync-skills-orchestration.test.mjs +68 -4
  439. package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +119 -0
  440. package/packages/omo-codex/plugin/test/sync-skills.test.mjs +11 -112
  441. package/packages/omo-codex/plugin/test/sync-version.test.mjs +68 -0
  442. package/packages/omo-codex/plugin/test/ultraresearch-skill-contract.test.mjs +126 -0
  443. package/packages/omo-codex/plugin/test/ulw-plan-skill.test.mjs +2 -2
  444. package/packages/omo-codex/scripts/install/bin-dir.mjs +20 -0
  445. package/packages/omo-codex/scripts/install/bin-links.mjs +43 -6
  446. package/packages/omo-codex/scripts/install/cache.mjs +4 -0
  447. package/packages/omo-codex/scripts/install/config.mjs +4 -4
  448. package/packages/omo-codex/scripts/install/delegated-command.mjs +5 -1
  449. package/packages/omo-codex/scripts/install/git-bash-mcp-env.mjs +28 -0
  450. package/packages/omo-codex/scripts/install/git-bash.mjs +12 -4
  451. package/packages/omo-codex/scripts/install/git-bash.test.mjs +39 -4
  452. package/packages/omo-codex/scripts/install/hook-targets.mjs +46 -0
  453. package/packages/omo-codex/scripts/install/multi-agent-v2-config.mjs +12 -2
  454. package/packages/omo-codex/scripts/install/process.mjs +1 -0
  455. package/packages/omo-codex/scripts/install-bin-links.test.mjs +131 -3
  456. package/packages/omo-codex/scripts/install-config-git-bash.test.mjs +91 -0
  457. package/packages/omo-codex/scripts/install-config.test.mjs +50 -44
  458. package/packages/omo-codex/scripts/install-delegated-command.test.mjs +78 -0
  459. package/packages/omo-codex/scripts/install-git-bash-mcp-env.test.mjs +93 -0
  460. package/packages/omo-codex/scripts/install-hook-targets.test.mjs +100 -0
  461. package/packages/omo-codex/scripts/install-lazycodex-version-stamp.test.mjs +3 -1
  462. package/packages/omo-codex/scripts/install-local.mjs +7 -18
  463. package/packages/omo-codex/scripts/install-local.test.mjs +34 -1
  464. package/packages/shared-skills/skills/lcx-contribute-bug-fix/SKILL.md +16 -1
  465. package/packages/shared-skills/skills/lcx-doctor/SKILL.md +93 -0
  466. package/packages/shared-skills/skills/lcx-doctor/agents/openai.yaml +11 -0
  467. package/packages/shared-skills/skills/lcx-report-bug/SKILL.md +17 -13
  468. package/packages/shared-skills/skills/lsp-setup/SKILL.md +139 -0
  469. package/packages/shared-skills/skills/lsp-setup/references/bash/README.md +60 -0
  470. package/packages/shared-skills/skills/lsp-setup/references/c-cpp/README.md +61 -0
  471. package/packages/shared-skills/skills/lsp-setup/references/csharp/README.md +71 -0
  472. package/packages/shared-skills/skills/lsp-setup/references/dart/README.md +48 -0
  473. package/packages/shared-skills/skills/lsp-setup/references/elixir/README.md +51 -0
  474. package/packages/shared-skills/skills/lsp-setup/references/go/README.md +57 -0
  475. package/packages/shared-skills/skills/lsp-setup/references/haskell/README.md +57 -0
  476. package/packages/shared-skills/skills/lsp-setup/references/java/README.md +57 -0
  477. package/packages/shared-skills/skills/lsp-setup/references/julia/README.md +60 -0
  478. package/packages/shared-skills/skills/lsp-setup/references/kotlin/README.md +59 -0
  479. package/packages/shared-skills/skills/lsp-setup/references/lua/README.md +66 -0
  480. package/packages/shared-skills/skills/lsp-setup/references/php/README.md +62 -0
  481. package/packages/shared-skills/skills/lsp-setup/references/python/README.md +71 -0
  482. package/packages/shared-skills/skills/lsp-setup/references/ruby/README.md +53 -0
  483. package/packages/shared-skills/skills/lsp-setup/references/rust/README.md +59 -0
  484. package/packages/shared-skills/skills/lsp-setup/references/swift/README.md +51 -0
  485. package/packages/shared-skills/skills/lsp-setup/references/terraform/README.md +62 -0
  486. package/packages/shared-skills/skills/lsp-setup/references/typescript/README.md +77 -0
  487. package/packages/shared-skills/skills/lsp-setup/references/yaml/README.md +70 -0
  488. package/packages/shared-skills/skills/lsp-setup/references/zig/README.md +49 -0
  489. package/packages/shared-skills/skills/lsp-setup/scripts/detect-lsp.ts +210 -0
  490. package/packages/shared-skills/skills/lsp-setup/scripts/lsp-server-table.ts +177 -0
  491. package/packages/shared-skills/skills/lsp-setup/scripts/tsconfig.json +17 -0
  492. package/packages/shared-skills/skills/lsp-setup/scripts/verify-lsp.ts +147 -0
  493. package/packages/shared-skills/skills/remove-ai-slops/SKILL.md +1 -1
  494. package/packages/shared-skills/skills/review-work/SKILL.md +10 -14
  495. package/packages/shared-skills/skills/start-work/SKILL.md +30 -59
  496. package/packages/shared-skills/skills/ultraresearch/SKILL.md +126 -667
  497. package/dist/hooks/anthropic-effort/hook.d.ts +0 -26
  498. package/dist/hooks/anthropic-effort/index.d.ts +0 -1
  499. package/dist/hooks/keyword-detector/analyze/default.d.ts +0 -12
  500. package/dist/hooks/keyword-detector/analyze/index.d.ts +0 -1
  501. package/dist/hooks/keyword-detector/search/default.d.ts +0 -12
  502. package/dist/hooks/keyword-detector/search/index.d.ts +0 -1
  503. package/dist/hooks/thinking-block-validator/hook.d.ts +0 -12
  504. package/dist/hooks/thinking-block-validator/index.d.ts +0 -1
  505. package/packages/omo-codex/plugin/components/ultrawork/test/directive-contract.test.ts +0 -18
  506. package/packages/omo-codex/plugin/test/global-review-debug-gate.test.mjs +0 -29
  507. package/packages/omo-codex/plugin/test/subagent-guidance.test.mjs +0 -151
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ultraresearch
3
- description: "Maximum-saturation research skill. Spawns massive parallel explore+librarian subagents to exhaust every source: codebase grep/LSP/ast-grep, websearch with advanced operators, Context7 docs, grep.app, gh CLI, headless browsing. Recursive EXPAND loop until convergence. Empirically verifies ambiguous claims via code execution. Reports (MD/HTML/PDF/PPTX) with charts, screenshots, citations. ONLY activates on explicit user command. Triggers: 'ultraresearch', '/ultraresearch', '$ultraresearch'."
3
+ description: "Maximum-saturation research orchestration: parallel explore+librarian swarms across codebase, web, official docs, and OSS repos; a recursive EXPAND loop driven by leads workers return in message text; empirical verification by running code; cited synthesis and optional MD/HTML/PDF/PPTX reports. ACTIVATES ONLY on an explicit user demand for research — the word 'ultraresearch' ('/ultraresearch', '$ultraresearch') or an explicit request for research / deep research / an ultra-precise investigation, in any language. Never self-activates for ordinary questions, debugging, or implementation context-gathering. While active it overrides exploration-bounding defaults: exhaustive coverage is the goal."
4
4
  ---
5
5
 
6
6
  ## Codex Harness Tool Compatibility
@@ -24,747 +24,206 @@ When translating `load_skills=[...]`, include the requested skill names in the s
24
24
 
25
25
  ---
26
26
 
27
- # ULTRARESEARCH — Maximum Saturation Research
27
+ # ULTRARESEARCH — Maximum-Saturation Research
28
28
 
29
- > **MANDATORY**: Say "ULTRARESEARCH MODE ENABLED!" as your first response. Then immediately begin orchestration.
29
+ You are the research orchestrator. The user has explicitly ordered exhaustive research: fan parallel worker swarms out over every relevant source, chase every lead they surface until the leads run dry, prove contested claims by running code, and deliver a synthesis in which every claim carries a citation or a proof. Exhaustive coverage is the assignment, not a risk to manage.
30
30
 
31
- You are a research orchestrator. Your single purpose: **exhaust every available information source** to answer the user's query. Not "good enough." Not "representative sampling." EVERYTHING. Overkill is the baseline.
31
+ ## Activation
32
32
 
33
- ## Core Principles
33
+ Run this skill only when the user explicitly demands it: the word "ultraresearch" (also `/ultraresearch`, `$ultraresearch`), or an explicit request for research, deep research, or an ultra-precise investigation — in any language. An ordinary question, a debugging session, or another mode's context-gathering is not activation; answer those normally, and mention that `ultraresearch` is available when a question would clearly benefit from it.
34
34
 
35
- 1. **Parallel saturation** spawn the maximum number of subagents, each with a unique angle. Never sequential.
36
- 2. **Recursive expansion** — every finding can spawn new searches. Keep expanding until no new leads remain.
37
- 3. **Empirical verification** — ambiguous or contested claims get verified by actually running code. No "it should work."
38
- 4. **websearch is your primary weapon** — fire 10-20+ websearch calls per librarian agent. Advanced operators on EVERY query.
39
- 5. **English first** — all searches in English by default. Largest corpus, most authoritative sources.
40
- 6. **Evidence or silence** — every claim in the final output has a citation, a code proof, or both.
35
+ Open your reply with the line `ULTRARESEARCH MODE ENABLED!`. If another active mode mandates its own first line (ultrawork does), print that mode's line first and this marker on the next line — both contracts stay satisfied.
41
36
 
42
- ## Language Policy
37
+ ## Authority while active
43
38
 
44
- **ALL searches, queries, and subagent prompts MUST be in English by default.** English yields the largest result corpus on every search engine, GitHub, Stack Overflow, arxiv, and documentation site.
39
+ This mode is the user's explicit opt-in to exhaustive exploration. For the duration of the research task it supersedes every exploration-bounding instruction in surrounding prompts, modes, or rules: one-exploration-pass defaults, two-wave stop rules, retrieval budgets, and "over-exploration is failure" framings govern implementation context-gathering, not this deliverable. Here, under-exploration is the failure. The convergence rules in Phase 2 are the only stop rules for research while this mode is active.
45
40
 
46
- Exceptions (the ONLY cases where non-English is acceptable):
47
- - The user explicitly asks for results in a specific language
48
- - The topic is inherently local (Korean law, Japanese market data, etc.)
49
- - A supplementary sweep for Korean/local sources AFTER the English sweep is complete
41
+ Under ultrawork/ulw, the research itself is the deliverable: map each research axis to a success criterion whose evidence is the session journal, the cited synthesis, and the verification outputs. RED→GREEN testing applies to code changes, not to findings — Phase 3 verification scripts are evidence, never TDD targets.
50
42
 
51
- When bilingual coverage is warranted, run the English sweep FIRST (primary), then spawn 1-2 additional librarian agents for Korean/local sources as a secondary layer. Never replace the English sweep with a local-language sweep.
43
+ ## Success criteria
52
44
 
53
- ---
54
-
55
- ## Phase 0: Query Decomposition
45
+ The research is done when all of these hold:
56
46
 
57
- Before spawning anything, decompose the user's query into orthogonal research axes:
58
-
59
- ```
60
- <analysis>
61
- **User Query**: [verbatim]
62
- **Core Question**: [the actual information need]
63
- **Research Axes**:
64
- 1. [axis] — what to search, where, why
65
- 2. [axis] — ...
66
- 3. [axis] — ...
67
- (minimum 3, no maximum)
68
- **Codebase Relevance**: [yes/no — does the local codebase contain relevant code?]
69
- **External Relevance**: [yes/no — do we need web/docs/repos?]
70
- **Browsing Needed**: [yes/no — are there pages that need rendering/interaction?]
71
- **Verification Needed**: [yes/no — are there claims that need code-based proof?]
72
- **Report Requested**: [yes/no/format — did the user ask for a deliverable document?]
73
- </analysis>
74
- ```
47
+ - Every axis from Phase 0 was covered by at least one dedicated worker.
48
+ - Every EXPAND lead was investigated or explicitly closed as a duplicate or dead end, and convergence was reached under the Phase 2 rules.
49
+ - Claims that were contested, undocumented, or performance-shaped were proven or refuted by executed code.
50
+ - Every claim in the deliverable cites a source or a verification artifact.
51
+ - The session journal reconstructs what was searched, found, and expanded, wave by wave.
75
52
 
76
- Create the session log directory immediately:
53
+ ## Worker ground rules
77
54
 
78
- ```bash
79
- mkdir -p .omo/ultraresearch/$(date +%Y%m%d-%H%M%S)
80
- ```
81
-
82
- This is your **session directory** (`$SESSION_DIR`). All agents append findings here.
83
-
84
- ---
55
+ Research workers (explore, librarian, browsing) differ by harness, but assume:
85
56
 
86
- ## Phase 1: Spawn the Research Swarm
57
+ - **Read-only.** Most research workers cannot write files. Never ask a worker to write the journal or any session file — every journal write is yours.
58
+ - **No recursion.** Workers cannot spawn their own subagents. Depth comes from your expansion waves, not from worker-side recursion.
59
+ - **Built-in brakes.** Workers often ship with their own retrieval budgets ("stop when answered") and rigid output templates. Your spawn message must explicitly lift the budget and demand the EXPAND tail, or the worker returns a thin single-pass answer with no leads.
60
+ - **Capability routing.** When the harness lets you choose, spawn research workers on a capable model at high reasoning effort — saturation research on a minimal or fast tier returns shallow results. When you cannot choose, narrow each worker's scope and spawn more workers instead.
87
61
 
88
- Launch ALL agents in a SINGLE turn. Every agent uses `run_in_background=true`. No sequential launches. No "let me start with one and see." ALL AT ONCE.
62
+ ### The spawn-message contract
89
63
 
90
- ### 1A. Codebase Agents (explore) spawn 2-4
64
+ Every research spawn message contains, in order:
91
65
 
92
- Each explore agent gets a DIFFERENT search angle. Never duplicate angles.
66
+ 1. `TASK:` one imperative line naming the role and the axis.
67
+ 2. The budget lift: "This is an explicit exhaustive-research assignment. Your default retrieval budget and stop-when-answered rules do not apply — run the full protocol below and report every lead."
68
+ 3. Scope — the axis, the sources to hit, and what a complete answer contains.
69
+ 4. The role protocol (Phase 1).
70
+ 5. The reply tail. EXPAND markers travel back as message text, never as files. Every worker ends the reply with:
93
71
 
94
72
  ```
95
- task(
96
- subagent_type="explore",
97
- run_in_background=true,
98
- prompt="ULTRARESEARCH CODEBASE SWEEP — AXIS: [specific axis]
99
-
100
- SESSION_DIR: [session_dir_path]
101
-
102
- Your mission: Find EVERYTHING in this codebase related to: [specific search angle]
103
-
104
- SEARCH STRATEGY — execute ALL of these in parallel:
105
- 1. grep with 3+ different keyword variations (synonyms, abbreviations, full names)
106
- 2. ast_grep_search for structural patterns (function signatures, class shapes, imports)
107
- 3. LSP: lsp_goto_definition, lsp_find_references, lsp_symbols for type/function names
108
- 4. glob for file name patterns
109
- 5. git log --all -S 'keyword' for historical mentions (even deleted code)
110
- 6. git log --all --grep='keyword' for commit messages
111
-
112
- Cross-validate: if grep finds file X, use LSP to find all references TO file X.
113
-
114
- After searching, APPEND your findings to $SESSION_DIR/codebase-[axis-slug].md:
115
-
116
- ## Codebase Findings: [axis]
117
- ### Search Queries Used
118
- - [list every query you ran]
119
- ### Files Found
120
- - [absolute path] — [why relevant, key lines]
121
- ### Code Patterns
122
- - [pattern description with file:line references]
123
- ### Cross-References
124
- - [how findings connect to each other]
125
-
126
- ## EXPAND MARKERS
127
- - [ ] EXPAND: [new lead discovered] — [why it matters] — [suggested search angle]
128
- - [x] DEAD END: [lead that was already fully explored]
129
- "
130
- )
73
+ ## EXPAND
74
+ - LEAD: <discovery not yet investigated> — WHY: <why it matters> — ANGLE: <suggested search>
75
+ - DEAD END: <lead explored to exhaustion>
131
76
  ```
132
77
 
133
- ### 1B. Web Research Agents (librarian)spawn 3-6
78
+ A worker with nothing to expand writes `## EXPAND` followed by `none <one-line reason>`. A reply missing the tail is incomplete: send that worker one follow-up demanding it before closing the lane.
134
79
 
135
- Each librarian targets a DIFFERENT search strategy. **websearch is the core tool — fire 10-20+ calls per agent.**
80
+ ## Phase 0 Decompose and open the journal
81
+
82
+ Before spawning anything, decompose the query:
136
83
 
137
84
  ```
138
- task(
139
- subagent_type="librarian",
140
- run_in_background=true,
141
- prompt="ULTRARESEARCH WEB SWEEP AXIS: [specific axis]
142
-
143
- SESSION_DIR: [session_dir_path]
144
-
145
- Your mission: Find EVERYTHING on the internet related to: [specific search angle]
146
- ALL SEARCHES MUST BE IN ENGLISH unless the topic is inherently non-English.
147
-
148
- ## WEBSEARCH SATURATION PROTOCOL
149
-
150
- You MUST fire ALL of the following. Not some. ALL. In parallel where possible.
151
- The MINIMUM is 10 distinct websearch calls. 15-20 is normal. Do not stop early.
152
-
153
- ### A. websearch — Advanced Operators (the primary weapon)
154
-
155
- Each websearch call MUST use different operators and angles:
156
-
157
- 1. websearch('[topic] [keywords]')
158
- 2. websearch('[topic] site:github.com')
159
- 3. websearch('[topic] site:docs.[domain].com OR site:[domain].dev')
160
- 4. websearch('[topic] filetype:md OR filetype:pdf')
161
- 5. websearch('[topic] intitle:[key term]')
162
- 6. websearch('[topic] [current year]')
163
- 7. websearch('[topic] site:stackoverflow.com OR site:reddit.com OR site:news.ycombinator.com')
164
- 8. websearch('[topic] site:arxiv.org OR site:dl.acm.org OR site:scholar.google.com')
165
- 9. websearch('[topic] analysis OR comparison OR benchmark OR review [current year]')
166
- 10. websearch('[topic] -tutorial -beginner advanced implementation')
167
- 11. websearch('[topic] inurl:api OR inurl:docs OR inurl:reference')
168
- 12. websearch('\"[exact phrase]\" [additional context]')
169
- 13. websearch('[topic] vs OR alternative OR compared to')
170
- 14. websearch('[topic] source code implementation github')
171
- 15. websearch('[topic] changelog OR release notes OR migration guide [version]')
172
- 16. websearch('[topic] site:medium.com OR site:dev.to OR site:blog')
173
- 17. websearch('[topic] best practices production [current year]')
174
- 18. websearch('[topic] known issues OR caveats OR gotchas OR limitations')
175
- 19. websearch('[topic] example OR demo OR sample project')
176
- 20. websearch('[topic] conference talk OR presentation OR workshop [current year]')
177
-
178
- For EVERY important search result, fetch the FULL page with webfetch/FetchURL. Do not summarize from search snippets alone.
179
-
180
- ### B. Context7 Documentation Lookup
181
-
182
- context7_resolve-library-id('[library]')
183
- then context7_query-docs with AT LEAST 3 different queries per library.
184
-
185
- ### C. grep.app GitHub Code Search
186
-
187
- grep_app_searchGitHub(query: '[pattern]', language: ['TypeScript'])
188
- grep_app_searchGitHub(query: '[alternative pattern]', language: ['Python'])
189
- grep_app_searchGitHub(query: '[pattern]', repo: 'owner/repo')
190
-
191
- ### D. GitHub CLI Deep Dive
192
-
193
- gh search repos '[topic]' --sort stars --limit 10
194
- gh search code '[pattern]' --language typescript --limit 20
195
- gh search issues '[topic]' --state open --sort reactions --limit 10
196
- gh api search/repositories -f q='[topic] stars:>100' --jq '.items[] | {name, url, description, stars: .stargazers_count}'
197
-
198
- ### E. Official Documentation Fetch
199
-
200
- webfetch('[official docs URL]')
201
- webfetch('[official docs URL]/sitemap.xml') // discover all doc pages
202
- webfetch('[API reference URL]')
203
- webfetch('[changelog/releases URL]')
204
-
205
- Fetch sitemaps to discover the FULL doc surface. Don't just read the front page.
206
-
207
- After searching, APPEND findings to $SESSION_DIR/web-[axis-slug].md:
208
-
209
- ## Web Findings: [axis]
210
- ### Searches Executed
211
- - [list every websearch query with operator used — ALL of them]
212
- ### Key Sources (ranked by quality)
213
- 1. [URL] — [what it contains, key data points]
214
- ### Documentation References
215
- - [official doc links with specific sections]
216
- ### Code Examples Found
217
- - [GitHub links with context]
218
- ### Discussions/Opinions
219
- - [forum links with key points]
220
- ### Data/Benchmarks
221
- - [any quantitative findings]
222
-
223
- ## EXPAND MARKERS
224
- - [ ] EXPAND: [new lead from search results] — [why] — [suggested angle]
225
- "
226
- )
85
+ <analysis>
86
+ Core question: <the actual information need>
87
+ Axes (3+ orthogonal): <axis — what to search, where, why> ...
88
+ Codebase relevant: <yes/no> · External: <yes/no> · Browsing: <yes/no> · Verification likely: <yes/no> · Report requested: <no | format>
89
+ </analysis>
227
90
  ```
228
91
 
229
- ### 1C. Browsing Agents (for protected/dynamic pages) — spawn 1-3 as needed
92
+ Then create the session directory:
230
93
 
94
+ ```bash
95
+ mkdir -p .omo/ultraresearch/$(date +%Y%m%d-%H%M%S)
231
96
  ```
232
- task(
233
- category="quick",
234
- run_in_background=true,
235
- load_skills=["browsing", "insane-search"],
236
- prompt="ULTRARESEARCH BROWSER SWEEP
237
97
 
238
- SESSION_DIR: [session_dir_path]
98
+ This is `$SESSION_DIR`. The orchestrator owns the journal: you write every file in it; workers never do. Maintain:
239
99
 
240
- Your mission: Access and extract content from URLs that regular fetch cannot reach:
241
- [list of URLs]
100
+ - `wave-<N>-<kind>-<axis>.md` — your digest of each worker return: key findings, sources with URLs, and the worker's EXPAND markers verbatim.
101
+ - `expansion-log.md` — per wave: workers spawned, markers gained, leads opened and closed.
102
+ - `verify-<slug>.md`, `SYNTHESIS.md`, `REPORT.*` from later phases.
242
103
 
243
- Use the browsing skill's two-tier approach:
244
- 1. Try insane-search first (headless extraction, WAF bypass)
245
- 2. If that fails, use CloakBrowser+agent-browser (stealth Chromium)
104
+ Append each digest the moment its worker returns, not in a batch at the end — the journal is your recovery point after context loss and the user's audit trail.
246
105
 
247
- For each URL: extract ALL content, take screenshots if visual context matters.
248
- APPEND findings to $SESSION_DIR/browsed-[slug].md with URL, method, content.
106
+ ## Phase 1 Saturation wave
249
107
 
250
- ## EXPAND MARKERS
251
- - [ ] EXPAND: [new lead from browsed content] — [why] — [angle]
252
- "
253
- )
254
- ```
108
+ Launch every first-wave worker in a single turn, all in background. Sequential launches and "start with one and see" defeat the mode.
255
109
 
256
- ### 1D. Cross-Repository Deep Dive Agents spawn 1-2 for implementation research
110
+ Scaling floor more angles always justify more workers:
257
111
 
258
- ```
259
- task(
260
- subagent_type="librarian",
261
- run_in_background=true,
262
- prompt="ULTRARESEARCH REPO DEEP DIVE
263
-
264
- SESSION_DIR: [session_dir_path]
265
- Target repositories: [repos identified from initial searches]
266
-
267
- For EACH repository:
268
- 1. gh repo clone owner/repo ${TMPDIR:-/tmp}/ur-[repo] -- --depth 1
269
- 2. Get HEAD SHA for permalinks
270
- 3. Read README, CONTRIBUTING, ARCHITECTURE docs
271
- 4. grep/ast_grep for core patterns, read key source files, follow call chains
272
- 5. git log --oneline -20, git blame on critical sections
273
- 6. Construct GitHub permalinks for every finding
274
-
275
- APPEND to $SESSION_DIR/repos-[slug].md
276
-
277
- ## EXPAND MARKERS
278
- - [ ] EXPAND: [dependency/module worth investigating separately] — [why] — [angle]
279
- "
280
- )
281
- ```
282
-
283
- ### Scaling Rules
284
-
285
- | Query Scope | explore | librarian | browsing | repo-dive | total min |
112
+ | Query scope | explore | librarian | browsing | repo-dive | floor |
286
113
  |---|---|---|---|---|---|
287
114
  | Single topic, codebase only | 3 | 0 | 0 | 0 | 3 |
288
115
  | Single topic, web only | 0 | 4 | 1 | 1 | 6 |
289
116
  | Single topic, both | 2 | 3 | 1 | 1 | 7 |
290
- | Multi-faceted research | 4 | 6 | 2 | 2 | 14 |
117
+ | Multi-faceted | 4 | 6 | 2 | 2 | 14 |
291
118
  | Full due diligence | 4 | 6 | 3 | 2 | 15 |
292
119
 
293
- The table is a FLOOR, not a ceiling. More angles = more agents.
294
-
295
- ---
296
-
297
- ## Phase 2: Recursive Discovery Loop (EXPAND Protocol)
120
+ Role protocols embed the relevant one in each spawn message; every worker gets a unique angle:
298
121
 
299
- This is NOT a single-pass search. Research is **recursive**. Every finding can spawn new questions.
122
+ - **Codebase (explore), 2-4 workers.** Grep with 3+ keyword variations; structural/AST search; LSP definitions and references; file-name globs; `git log --all -S '<keyword>'` and `--grep` for history including deleted code. Cross-validate hits across tools. Report absolute file paths, patterns with `file:line`, and how findings connect.
123
+ - **Web (librarian), 3-6 workers.** At least 10 distinct websearch queries per worker, each with a different operator or angle (see Search craft); fetch the full page for every result that matters — snippets lie. Context7 with 3+ queries per known library. grep.app and `gh search code|repos|issues` for real-world usage. Official docs via sitemap discovery (`<base>/sitemap.xml`), then targeted pages.
124
+ - **Browsing, 0-3 workers.** Pages plain fetch cannot read (WAF, dynamic rendering, login): use the browsing skill; capture screenshots when visual context matters.
125
+ - **Repo deep-dive (librarian), 0-2 workers.** Shallow-clone the most relevant repos to `${TMPDIR:-/tmp}`, pin the HEAD SHA, read core modules, follow call chains, return SHA-pinned permalinks.
300
126
 
301
- ### The EXPAND Marker System
302
-
303
- Every agent MUST end its report with an `EXPAND` section:
304
-
305
- ```markdown
306
- ## EXPAND MARKERS
307
- - [ ] EXPAND: [new lead discovered] — [why it matters] — [suggested search angle]
308
- - [ ] EXPAND: [another lead] — [why] — [angle]
309
- - [x] DEAD END: [lead that was already fully explored]
310
- ```
311
-
312
- What triggers an EXPAND marker:
313
- - A search result mentions a related library/tool/concept not yet investigated
314
- - A GitHub issue links to another repo with relevant implementation
315
- - A blog post references a paper, benchmark, or alternative approach
316
- - A code pattern imports a module whose behavior is unclear
317
- - Documentation mentions a deprecated predecessor worth understanding
318
- - A comparison article names competitors not yet searched
319
- - An API response reveals undocumented endpoints or features
320
- - A forum answer contradicts official docs (needs verification)
321
-
322
- ### The Expansion Loop
323
-
324
- After collecting initial agent results:
325
-
326
- 1. **Read ALL files in `$SESSION_DIR/`**
327
- 2. **Scan for unchecked `[ ] EXPAND:` markers** across all reports
328
- 3. **Deduplicate** — if two agents flagged the same lead, merge into one
329
- 4. **For each unique unchecked EXPAND marker**, spawn a NEW agent:
127
+ Example spawn (codebase axis; librarian, browsing, and repo-dive follow the same contract with their own protocol):
330
128
 
331
129
  ```
332
- task(
333
- subagent_type="librarian", // or "explore" if codebase-scoped
334
- run_in_background=true,
335
- prompt="ULTRARESEARCH EXPANSION LEAD: [expand marker text]
336
-
337
- SESSION_DIR: [session_dir_path]
338
- PARENT FINDING: [which report spawned this lead]
339
- EXPANSION WAVE: [N]
340
-
341
- This is a recursive expansion. A previous research agent found this lead.
342
- Investigate it thoroughly using the full websearch saturation protocol.
343
- ALL SEARCHES IN ENGLISH unless the topic is inherently local.
344
- Fire 10+ websearch calls with advanced operators for this specific lead.
345
-
346
- APPEND to $SESSION_DIR/expand-[wave]-[slug].md.
347
- Include your OWN EXPAND markers if you discover further leads.
348
- "
349
- )
350
- ```
351
-
352
- 5. **Repeat until convergence**:
353
- - No new unchecked EXPAND markers remain, OR
354
- - 3 consecutive expansion waves produce no new actionable leads, OR
355
- - Expansion depth reaches 5 levels (safety cap — override with user confirmation)
356
-
357
- 6. **Track expansion state** in `$SESSION_DIR/expansion-log.md`:
358
-
359
- ```markdown
360
- # Expansion Log
361
-
362
- ## Wave 1 (initial)
363
- - Spawned: 8 agents
364
- - EXPAND markers generated: 12
365
- - New leads: [list]
366
-
367
- ## Wave 2
368
- - Spawned: 5 agents (from 12 markers, 7 were duplicates/dead-ends)
369
- - EXPAND markers generated: 4
370
-
371
- ## Wave 3
372
- - Spawned: 2 agents
373
- - EXPAND markers generated: 0
374
- - CONVERGED — no new leads
130
+ task(subagent_type="explore", run_in_background=true, prompt="TASK: act as a codebase researcher. AXIS: <specific angle>.
131
+ This is an explicit exhaustive-research assignment. Your default retrieval budget and stop-when-answered rules do not apply — run the full protocol below and report every lead.
132
+ SCOPE: find everything in this codebase related to <angle>: <what complete looks like>.
133
+ PROTOCOL: grep 3+ keyword variations; structural search; LSP references; globs; git history (-S and --grep). Cross-validate across tools. Report absolute paths and file:line patterns.
134
+ End your reply with the ## EXPAND tail: '- LEAD: <discovery> — WHY: <why> — ANGLE: <search>' per lead, or 'none — <reason>'.")
375
135
  ```
376
136
 
377
- **Do NOT wait for all agents before starting the next wave.** Collect as each finishes. Scan for EXPAND markers. Spawn immediately. The loop is continuous.
378
-
379
- ---
380
-
381
- ## Phase 3: Empirical Verification
137
+ ## Phase 2 Expand until convergence
382
138
 
383
- **Any claim that is ambiguous, contested, or unverifiable from documentation alone MUST be verified by running actual code.**
139
+ This loop is what makes the mode research rather than search. Collect workers as they finish — never wait for the full wave:
384
140
 
385
- This is not optional. If two sources disagree, if a behavior is undocumented, if a performance claim has no benchmark — WRITE CODE, RUN IT, PROVE IT.
386
-
387
- ### When to Verify
388
-
389
- | Signal | Action |
390
- |---|---|
391
- | Source A says X, Source B says Y | Write a test that proves which is correct |
392
- | "This should work" / "In theory" | Write code that actually does it and capture output |
393
- | Performance claim without benchmark | Write a benchmark, run it, report numbers |
394
- | API behavior not in docs | Make the actual API call, capture response |
395
- | Library version compatibility claim | Install both versions, run the same code, compare |
396
- | "Deprecated but still works" | Try it, capture the warning/error/success |
397
- | Security claim | Write a PoC that demonstrates the vulnerability or proves safety |
398
-
399
- ### How to Verify
400
-
401
- Spawn a verification agent for each claim that needs proof:
141
+ 1. Journal the return: digest plus verbatim EXPAND markers into `wave-<N>-<kind>-<axis>.md`.
142
+ 2. Deduplicate new markers against `expansion-log.md` — every lead ever seen, not just confirmed ones, or rejected leads resurface each wave.
143
+ 3. Spawn an expansion worker immediately for each new unchecked lead:
402
144
 
403
145
  ```
404
- task(
405
- category="deep",
406
- run_in_background=true,
407
- prompt="ULTRARESEARCH VERIFICATION CLAIM: [the claim to verify]
408
-
409
- SESSION_DIR: [session_dir_path]
410
- SOURCE: [where this claim came from]
411
- CONTRADICTION: [what the opposing source says, if any]
412
-
413
- Your job: PROVE OR DISPROVE this claim with executable evidence.
414
-
415
- 1. Write a minimal, self-contained script that tests the claim
416
- 2. Execute it (use bash, or for complex cases: uv run --with [deps] python -c '...')
417
- 3. Capture the FULL output (stdout + stderr)
418
- 4. If it requires a specific environment/dependency, install it first
419
- 5. If it requires network access, make the actual call
420
- 6. If it requires a specific version, pin it
421
-
422
- EVIDENCE FORMAT — append to $SESSION_DIR/verify-[slug].md:
423
-
424
- ## Verification: [claim summary]
425
- ### Claim
426
- [exact claim being tested]
427
- ### Source
428
- [URL or file path]
429
- ### Test Code
430
- \`\`\`[language]
431
- [the exact code that was executed]
432
- \`\`\`
433
- ### Execution Output
434
- \`\`\`
435
- [full stdout + stderr]
436
- \`\`\`
437
- ### Verdict
438
- **CONFIRMED** / **REFUTED** / **PARTIALLY TRUE** — [explanation with evidence]
439
- ### Environment
440
- - OS: [os]
441
- - Runtime: [version]
442
- - Dependencies: [list with versions]
443
- "
444
- )
146
+ task(subagent_type="librarian", run_in_background=true, prompt="TASK: expansion wave <N> — investigate: <lead>.
147
+ PARENT: <which return surfaced it>. This is an explicit exhaustive-research assignment; budgets do not apply.
148
+ <role protocol for the lead's territory — librarian protocol for external leads, explore protocol for codebase leads>
149
+ End your reply with the ## EXPAND tail.")
445
150
  ```
446
151
 
447
- ### SparkShell for Codex Harness
448
-
449
- When running under the Codex harness where SparkShell is available, prefer SparkShell for code execution — it provides intelligent command classification, secret redaction, and tmux-integrated output capture. The verification agent should use SparkShell for:
450
- - Running test scripts with full output capture
451
- - Interactive REPL sessions for exploratory verification
452
- - Long-running benchmarks that benefit from tmux durability
453
- - Multi-step verification sequences that need session persistence
454
-
455
- When SparkShell is not available (OpenCode harness), use bash + `uv run` for Python, `bun run` for TypeScript, or direct compilation for Rust/Go/C.
456
-
457
- ---
152
+ 4. Record the wave in `expansion-log.md`: spawned, markers gained, leads opened/closed.
458
153
 
459
- ## Phase 4: Synthesize
154
+ **Convergence the only stop rules while this mode is active.** Run at least 2 expansion waves on any multi-faceted query before claiming convergence; then stop only when one holds:
460
155
 
461
- Once the expansion loop has CONVERGED and all agents (including verification) have reported:
156
+ - Zero unchecked leads remain each investigated or closed as duplicate/dead end.
157
+ - 3 consecutive waves produced no new actionable leads.
158
+ - Expansion depth reached 5 waves — pause, show the open leads, and ask the user whether to extend.
462
159
 
463
- 1. Read ALL files in `$SESSION_DIR/`
464
- 2. Cross-reference findings across ALL agents (initial + expansion waves + verification)
465
- 3. Identify:
466
- - **Consensus**: findings confirmed by 2+ agents/sources
467
- - **Verified facts**: claims proven by code execution
468
- - **Unique discoveries**: found by only one agent but high-value
469
- - **Contradictions**: conflicting info (flag with both sources + verification result)
470
- - **Gaps**: questions still unanswered despite saturation
160
+ ## Phase 3 Verify contested claims by running code
471
161
 
472
- 4. Write synthesis to `$SESSION_DIR/SYNTHESIS.md`:
473
-
474
- ```markdown
475
- # Ultraresearch Synthesis: [query]
476
- **Date**: [date]
477
- **Agents Spawned**: [total across all waves]
478
- **Expansion Waves**: [count]
479
- **Sources Consulted**: [count]
480
- **Verifications Executed**: [count]
481
-
482
- ## Executive Summary
483
- [2-3 paragraph answer to the user's core question, clear and direct]
484
-
485
- ## Detailed Findings
486
-
487
- ### [Topic Area 1]
488
- **Consensus**: [what multiple sources agree on]
489
- **Evidence**: [source links]
490
- **Key Quote**: "[under 20 words]" — [Source]
491
- **Verified**: [yes/no — link to verification report if yes]
492
-
493
- ### [Topic Area 2]
494
- ...
495
-
496
- ## Codebase Findings
497
- [relevant code locations with absolute paths and line numbers]
498
-
499
- ## External Sources (ranked by quality)
500
- 1. [URL] — [relevance, reliability assessment, access date]
501
- 2. ...
502
-
503
- ## Verified Claims
504
- | Claim | Verdict | Evidence |
505
- |---|---|---|
506
- | [claim] | CONFIRMED/REFUTED | [link to verify-*.md] |
507
-
508
- ## Contradictions Found
509
- - [source A says X] vs [source B says Y] — [verdict with evidence]
510
-
511
- ## Remaining Gaps
512
- - [what we couldn't find despite exhaustive search]
513
-
514
- ## Expansion Trace
515
- - Wave 1: [N agents] -> [M expand markers]
516
- - Wave 2: [N agents] -> [M expand markers]
517
- - Convergence: [reason]
518
-
519
- ## Raw Agent Reports
520
- - [list of all session files]
521
- ```
522
-
523
- 5. **If the user requested a report**: proceed to Phase 5.
524
- 6. **If no report requested**: deliver the synthesis directly with inline citations `[Source N]` for every claim.
525
-
526
- ---
527
-
528
- ## Phase 5: Report Generation (when requested)
529
-
530
- If the user asked for a report, presentation, or formatted deliverable — spawn a report generation wave AFTER synthesis.
531
-
532
- ### Determine Output Format
533
-
534
- | User Signal | Format | Tools |
535
- |---|---|---|
536
- | "report", "document", "보고서" | Markdown (default) | Direct write |
537
- | "pdf" | PDF via HTML-to-PDF | `frontend-design` + python `weasyprint` |
538
- | "pptx", "slides", "presentation", "발표" | PPTX | python `python-pptx` |
539
- | "html", "webpage" | Standalone HTML | `frontend-design` skill |
540
- | No format specified | Markdown | Direct write |
541
-
542
- ### Report Content Agents
543
-
544
- #### A. Data Visualization Agent
162
+ Settle with executed code, not judgment, whenever sources disagree, a behavior is undocumented, a claim is performance- or compatibility-shaped, or the honest answer is "it should work". Spawn one verification worker per claim:
545
163
 
546
164
  ```
547
- task(
548
- category="quick",
549
- run_in_background=true,
550
- prompt="ULTRARESEARCH REPORTDATA VISUALIZATION
551
-
552
- SESSION_DIR: [session_dir_path]
553
-
554
- Read ALL findings in $SESSION_DIR/. Identify data that benefits from visualization:
555
- - Comparison tables -> bar/radar charts
556
- - Timeline data -> timeline charts
557
- - Architecture -> mermaid diagrams
558
- - Statistics/benchmarks -> graphs with clear labels
559
- - Relationships -> network/dependency graphs
560
-
561
- Generate using:
562
- uv run --with numpy --with matplotlib --with plotly python -c \"[code]\"
563
-
564
- Save ALL images to $SESSION_DIR/assets/
565
- Write index to $SESSION_DIR/assets/manifest.md
566
- "
567
- )
165
+ task(category="deep", run_in_background=true, prompt="TASK: verify by execution: <claim>.
166
+ SOURCE: <where it came from>; CONTRADICTION: <opposing source, if any>.
167
+ Write a minimal self-contained script that tests the claim; run it (uv run --with <deps> python / bun / direct compile); capture full stdout+stderr; pin versions.
168
+ Reply with: the exact code, the full output, environment (OS, runtime, dependency versions), and a verdict CONFIRMED / REFUTED / PARTIAL — grounded in the output.")
568
169
  ```
569
170
 
570
- #### B. Screenshot Collection Agent
171
+ Journal each verdict to `verify-<slug>.md`.
571
172
 
572
- ```
573
- task(
574
- category="quick",
575
- run_in_background=true,
576
- load_skills=["browsing"],
577
- prompt="ULTRARESEARCH REPORT — SCREENSHOTS
578
-
579
- SESSION_DIR: [session_dir_path]
580
-
581
- Read web findings. Identify the top 5-10 most important web sources.
582
- For each: full page screenshot using the browsing skill.
583
- Save to $SESSION_DIR/assets/screenshots/
584
- Write manifest to $SESSION_DIR/assets/screenshots/manifest.md
585
- "
586
- )
587
- ```
173
+ ## Phase 4 — Synthesize
588
174
 
589
- #### C. Image Generation Agent (if diagrams/infographics needed)
175
+ After convergence and all verifications, re-read the whole journal and write `SYNTHESIS.md`:
590
176
 
591
177
  ```
592
- task(
593
- category="quick",
594
- run_in_background=true,
595
- load_skills=["imagegen"],
596
- prompt="ULTRARESEARCH REPORT — INFOGRAPHICS
597
-
598
- SESSION_DIR: [session_dir_path]
599
-
600
- Read synthesis. Generate architecture diagrams, concept maps, comparison infographics, or process flows as needed using the imagegen skill.
601
- Save to $SESSION_DIR/assets/generated/
602
- "
603
- )
604
- ```
605
-
606
- #### D. Report Assembly Agent
178
+ # Ultraresearch Synthesis: <query>
179
+ Workers: <total> · Waves: <count> · Sources: <count> · Verifications: <count>
607
180
 
608
- For HTML, PDF, or PPTX output: the report assembly agent MUST first discover and load **every available frontend and design skill** in the system before writing a single line. This includes but is not limited to: `frontend-design`, `frontend-perfectionist`, `open-design`, `data-scientist`, `imagegen`, and any other design/UI/visualization skill present. Read each skill's SKILL.md, absorb its design references, brand systems, and quality gates, then apply them to the report.
609
-
610
- ```
611
- task(
612
- category="deep",
613
- run_in_background=true,
614
- load_skills=["frontend-design", "frontend-perfectionist", "open-design", "data-scientist", "imagegen"],
615
- prompt="ULTRARESEARCH REPORTFINAL ASSEMBLY
616
-
617
- SESSION_DIR: [session_dir_path]
618
- REQUESTED FORMAT: [markdown/html/pdf/pptx]
619
-
620
- ## MANDATORY FIRST STEP
621
-
622
- Before writing anything, discover and read ALL available frontend, design, and visualization skills:
623
- - Read $frontend-design SKILL.md — absorb design references, anti-slop rules, brand-grade standards
624
- - Read $frontend-perfectionist SKILL.md — absorb Lighthouse 100 perf gates, render measurement, Core Web Vitals
625
- - Read $open-design SKILL.md — discover the 137+ composable design skills and 150+ brand-grade design systems
626
- - Read $data-scientist SKILL.md — absorb DuckDB/Polars/numpy/matplotlib best practices
627
- - Read $imagegen SKILL.md — absorb async image generation workflow
628
- - List ALL other available skills (ls ~/.agents/skills/ and project .agents/skills/) and read any that relate to design, visualization, or document generation
629
-
630
- Apply EVERYTHING you learned from those skills to the report. The report is not a text dump — it is a designed artifact.
631
-
632
- Read:
633
- 1. $SESSION_DIR/SYNTHESIS.md
634
- 2. $SESSION_DIR/assets/manifest.md
635
- 3. $SESSION_DIR/assets/screenshots/manifest.md
636
- 4. ALL $SESSION_DIR/*.md files for detail
637
-
638
- ## Report Structure
639
- 1. **Executive Summary** — 3-5 sentences answering the core question
640
- 2. **Key Findings** — organized by theme, not by agent
641
- 3. **Detailed Analysis** — each finding with:
642
- - Evidence (direct quotes under 20 words, with source URL)
643
- - Supporting charts (embed from assets/)
644
- - Code examples with file paths or GitHub links
645
- - Verification results where applicable
646
- 4. **Comparative Analysis** — if multiple options/approaches exist
647
- 5. **Visual Evidence** — embedded screenshots, charts, diagrams
648
- 6. **Sources & References** — numbered, with URLs, access dates, reliability notes
649
- 7. **Appendix: Methodology** — agents spawned, searches executed, expansion waves, verifications
650
-
651
- ## Quality Rules
652
- - Every claim MUST cite: [Source N] linking to reference list
653
- - Every quote under 20 words with quotation marks and attribution
654
- - Tables for comparisons, not prose
655
- - Charts/graphs for quantitative data, not number tables
656
- - Screenshots for UI/visual claims
657
- - Professional but accessible — a smart non-expert understands everything
658
- - Technical depth preserved — an expert finds no oversimplifications
659
- - Design quality: apply the brand-grade standards from the design skills you loaded. No generic HTML. No unstyled tables. No default matplotlib themes.
660
-
661
- ## Format-Specific
662
-
663
- **Markdown**: $SESSION_DIR/REPORT.md with ![alt](assets/path.png) embeds.
664
-
665
- **HTML**: Single self-contained HTML with embedded CSS. Apply the design skills fully — modern typography, responsive layout, dark/light mode, smooth transitions, proper spacing, brand-grade color palette. Base64-embedded images. Lighthouse-quality markup (semantic HTML, proper headings, alt text, ARIA labels). $SESSION_DIR/REPORT.html.
666
-
667
- **PDF**: Generate the HTML report first (full design quality as above), then:
668
- uv run --with weasyprint python -c \"from weasyprint import HTML; HTML('$SESSION_DIR/REPORT.html').write_pdf('$SESSION_DIR/REPORT.pdf')\"
669
- Ensure print-friendly CSS: proper page breaks, margins, header/footer. $SESSION_DIR/REPORT.pdf.
670
-
671
- **PPTX**: Use python-pptx with Pillow for image handling:
672
- uv run --with python-pptx --with Pillow python -c \"[build slides]\"
673
- Slide design: consistent theme, proper typography hierarchy, one key finding per slide, full-bleed images where appropriate, minimal text per slide, speaker notes with detail.
674
- Slide flow: Title -> Executive Summary -> Key Finding per slide -> Visual Evidence -> Comparative Analysis -> Sources.
675
- $SESSION_DIR/REPORT.pptx.
676
- "
677
- )
181
+ ## Executive summary — 2-3 paragraphs answering the core question
182
+ ## Findings by theme — per theme: consensus, evidence links, key quote (<20 words, attributed), verified yes/no
183
+ ## Codebase findings — absolute paths with line references
184
+ ## Sources (ranked) — URL, what it contains, reliability, access date
185
+ ## Verified claims — claim | verdict | verify-<slug>.md
186
+ ## Contradictions — source A vs source B, resolution with evidence
187
+ ## Gaps — what saturation could not answer
188
+ ## Expansion trace per wave: workers → markers; convergence reason
678
189
  ```
679
190
 
680
- ---
191
+ Deliver the synthesis with inline `[Source N]` citations on every claim. When no report was requested, this is the deliverable.
681
192
 
682
- ## Advanced Search Operator Reference
193
+ ## Phase 5 Report (only when requested)
683
194
 
684
- Agents MUST use these aggressively on every websearch call. This is core technique, not garnish.
195
+ Format by the user's words: "report" / "document" Markdown (default) · "pdf" → HTML first, then weasyprint (`uv run --with weasyprint python`) · "slides" / "presentation" / "deck" → python-pptx · "html" / "webpage" → standalone HTML.
685
196
 
686
- ### Web Search Operators
687
- | Operator | Example | Purpose |
688
- |---|---|---|
689
- | `site:` | `site:github.com react hooks` | Restrict to domain |
690
- | `filetype:` | `filetype:pdf machine learning survey` | Specific file types |
691
- | `intitle:` | `intitle:benchmark comparison 2026` | Title must contain term |
692
- | `inurl:` | `inurl:api reference authentication` | URL must contain term |
693
- | `"exact"` | `"dependency injection" typescript` | Exact phrase match |
694
- | `-term` | `react state management -redux` | Exclude term |
695
- | `OR` | `nextjs OR nuxt server components` | Either term |
696
- | `before:` | `LLM agents before:2026-01-01` | Date upper bound |
697
- | `after:` | `LLM agents after:2025-06-01` | Date lower bound |
698
- | `related:` | `related:vercel.com` | Similar sites |
699
- | `*` wildcard | `"how to * with typescript"` | Fill-in-the-blank |
700
-
701
- ### Combination Patterns
197
+ Asset workers (background, parallel): charts for quantitative findings (`uv run --with matplotlib --with plotly python`) saved by you to `$SESSION_DIR/assets/`; full-page screenshots of the top 5-10 sources (browsing skill); generated diagrams (imagegen skill) when architecture or flows need them.
702
198
 
703
- ```
704
- # Official docs
705
- "[library] site:[library].dev OR site:docs.[library].com"
199
+ Assembly worker — `task(category="deep", load_skills=["frontend-design", "open-design", "data-scientist", "imagegen"], run_in_background=true, ...)`: before writing, read every available design and visualization skill and apply it — the report is a designed artifact, not a text dump. Structure: executive summary → key findings by theme → detailed analysis (quotes under 20 words with attribution, charts, SHA-pinned permalinks, verification results) → comparative analysis when options compete → numbered sources with access dates → methodology appendix (workers, waves, searches, verifications). Every claim cites `[Source N]`.
706
200
 
707
- # GitHub implementations
708
- "[pattern] site:github.com filetype:ts OR filetype:tsx"
201
+ ## Search craft
709
202
 
710
- # Recent discussion
711
- "[topic] site:reddit.com OR site:news.ycombinator.com after:2025-01-01"
712
-
713
- # Academic + industry
714
- "[topic] site:arxiv.org OR filetype:pdf survey OR benchmark [year]"
715
-
716
- # Stack Overflow high engagement
717
- "[topic] site:stackoverflow.com [specific error or pattern]"
718
-
719
- # Korean sources (secondary sweep only)
720
- "[topic] site:tistory.com OR site:velog.io OR site:naver.com"
721
-
722
- # Changelog hunting
723
- "[library] changelog OR release notes OR migration guide [version]"
724
-
725
- # Alternatives/comparison
726
- "[topic] vs OR alternative OR comparison OR benchmark"
727
- ```
203
+ English first: run every search in English by default — it is the largest, most authoritative corpus on every engine, GitHub, and documentation site. Add a secondary local-language sweep (1-2 librarians) only after the English sweep, when the topic is inherently local, or when the user asks for sources in a specific language.
728
204
 
729
- ### GitHub Search (gh CLI)
205
+ Vary operators on every query — same query twice wastes a worker:
730
206
 
731
- ```bash
732
- gh search code '[pattern]' --language typescript --limit 30
733
- gh search repos '[topic]' --sort stars --limit 20
734
- gh search issues '[error message]' --state all --sort reactions --limit 20
735
- gh search prs '[feature]' --state merged --sort updated --limit 15
736
- ```
737
-
738
- ### grep.app
739
-
740
- ```
741
- grep_app_searchGitHub(query: "[pattern]", language: ["TypeScript", "JavaScript"])
742
- grep_app_searchGitHub(query: "[pattern]", repo: "owner/repo")
743
- grep_app_searchGitHub(query: "[config key]", language: ["JSON", "YAML", "TOML"])
744
- ```
745
-
746
- ---
207
+ | Operator | Example | Use |
208
+ |---|---|---|
209
+ | `site:` | `site:github.com <topic>` | Restrict to a domain |
210
+ | `filetype:` | `filetype:pdf <topic> survey` | Papers, specs |
211
+ | `intitle:` / `inurl:` | `intitle:benchmark <topic>` | Targeted pages |
212
+ | `"exact"` / `-term` | `"<exact phrase>" -tutorial` | Precision, exclusion |
213
+ | `OR` | `<a> OR <b> <topic>` | Coverage |
214
+ | `before:` / `after:` | `<topic> after:2025-06-01` | Recency control |
747
215
 
748
- ---
216
+ High-yield combinations: official docs (`site:<docs domain>`), GitHub implementations (`site:github.com`), recent discussion (`site:reddit.com OR site:news.ycombinator.com after:<date>`), academic (`site:arxiv.org OR filetype:pdf survey`), changelog hunting (`changelog OR "release notes" <version>`), alternatives (`vs OR alternative OR comparison`).
749
217
 
750
- ## Anti-Patterns
218
+ ## Failure modes
751
219
 
752
- | Pattern | Why it fails | Fix |
753
- |---|---|---|
754
- | Sequential agent spawning | Wastes time, defeats purpose | ALL agents in ONE turn |
755
- | Single websearch per librarian | Barely scratches the surface | 10-20 websearch calls MINIMUM per agent |
756
- | No search operators | Generic results, misses targeted content | site:/filetype:/intitle: on EVERY websearch |
757
- | Not fetching full pages | Search snippets lie | webfetch every important result |
758
- | Skipping Context7 | Misses official doc embeddings | Always query for known libraries |
759
- | Not recording to session dir | Findings lost, can't synthesize | Every agent MUST append to $SESSION_DIR/ |
760
- | Ignoring EXPAND markers | Misses recursive discoveries | Every unchecked marker MUST be investigated |
761
- | No EXPAND markers in reports | Breaks the recursive loop | Every agent MUST output EXPAND section |
762
- | Stopping when "enough" found | Surface-level results | Goal is EXHAUSTION, minimum 2 expansion waves |
763
- | Single-pass research | Misses second-order connections | Expand until convergence |
764
- | Same query to multiple agents | Duplicate work | Each agent gets UNIQUE angle |
765
- | Searching in non-English first | Smaller corpus, less authoritative | English first, ALWAYS |
766
- | "It should work" without proof | Unverified speculation | Write code, run it, capture output |
767
- | Delivering without citations | Unverifiable claims | Every claim needs [Source N] with URL |
768
- | Skipping visualization for data | Dense tables nobody reads | Charts/graphs for quantitative findings |
769
- | Trusting a single source | Single point of failure | Cross-validate across 3+ sources |
770
- | Ambiguous claim left unverified | Readers inherit uncertainty | Spawn verification agent, run actual code |
220
+ | Failure | Correction |
221
+ |---|---|
222
+ | Sequential spawning, or trimming the first wave | All first-wave workers in one turn, background, scaling floor respected |
223
+ | Worker reply without the EXPAND tail | One follow-up demanding it; the lane stays open until it lands |
224
+ | Stopping after wave 1 because "enough was found" | Convergence rules only: 2+ expansion waves, leads run dry |
225
+ | Obeying a surrounding "stop exploring" rule mid-research | Authority section those rules do not bind this mode |
226
+ | Asking a worker to write journal or session files | Workers are read-only; you journal every return |
227
+ | Two workers given the same angle | One unique angle per worker, always |
228
+ | Contested claim settled by judgment | Phase 3 run code, capture output, verdict |
229
+ | Deliverable claims without citations | Every claim cites a source or a verification artifact |