oh-my-opencode 4.8.1 → 4.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents/prometheus/system-prompt.d.ts +1 -1
- package/dist/agents/sisyphus/claude-fable-5.d.ts +19 -0
- package/dist/agents/sisyphus/claude-opus-4-7.d.ts +3 -1
- package/dist/agents/sisyphus/claude-opus-4-8.d.ts +19 -0
- package/dist/agents/sisyphus/index.d.ts +4 -0
- package/dist/agents/types.d.ts +2 -2
- package/dist/cli/doctor/checks/codex.d.ts +1 -0
- package/dist/cli/doctor/checks/dependencies.d.ts +2 -2
- package/dist/cli/doctor/checks/tools-gh.d.ts +8 -1
- package/dist/cli/doctor/index.d.ts +1 -0
- package/dist/cli/doctor/types.d.ts +2 -0
- package/dist/cli/index.js +1908 -787
- package/dist/cli/install-codex/codex-config-permissions.d.ts +1 -1
- package/dist/cli/install-codex/codex-config-plugins.d.ts +1 -0
- package/dist/cli/install-codex/codex-config-toml.d.ts +1 -0
- package/dist/cli/install-codex/codex-installer-bin-dir.d.ts +8 -0
- package/dist/cli/install-codex/install-codex.d.ts +1 -8
- package/dist/cli/install-codex/lsp-daemon-reaper.d.ts +5 -0
- package/dist/cli/sparkshell-condense.d.ts +10 -0
- package/dist/cli/sparkshell-parse.d.ts +3 -0
- package/dist/cli/sparkshell-session-context.d.ts +20 -0
- package/dist/cli/sparkshell-spark.d.ts +23 -0
- package/dist/cli/sparkshell.d.ts +8 -1
- package/dist/cli-node/index.js +92564 -0
- package/dist/config/schema/agent-names.d.ts +2 -0
- package/dist/config/schema/hooks.d.ts +0 -2
- package/dist/config/schema/keyword-detector.d.ts +0 -6
- package/dist/config/schema/oh-my-opencode-config.d.ts +2 -4
- package/dist/create-hooks.d.ts +0 -2
- package/dist/features/background-agent/parent-wake-dedupe.d.ts +2 -0
- package/dist/features/background-agent/parent-wake-flush-runner.d.ts +2 -0
- package/dist/features/background-agent/parent-wake-prompt-dispatch.d.ts +1 -0
- package/dist/features/background-agent/parent-wake-session-history.d.ts +4 -0
- package/dist/features/background-agent/parent-wake-session-inspector.d.ts +1 -0
- package/dist/features/builtin-commands/templates/handoff.d.ts +1 -1
- package/dist/features/builtin-skills/index.d.ts +1 -1
- package/dist/features/builtin-skills/skills.d.ts +4 -0
- package/dist/features/opencode-runtime-skills/source-server.d.ts +16 -1
- package/dist/features/opencode-skill-loader/skill-definition-record.d.ts +2 -0
- package/dist/features/team-mode/tools/lifecycle-test-fixture.d.ts +2 -0
- package/dist/features/team-mode/types.d.ts +1 -0
- package/dist/features/tmux-subagent/failed-readiness-cache.d.ts +28 -0
- package/dist/features/tmux-subagent/manager.d.ts +1 -9
- package/dist/features/tmux-subagent/resolve-server-url.d.ts +3 -0
- package/dist/hooks/anthropic-context-window-limit-recovery/executor.d.ts +1 -1
- package/dist/hooks/index.d.ts +0 -1
- package/dist/hooks/keyword-detector/constants.d.ts +0 -4
- package/dist/hooks/keyword-detector/ultrawork/source-detector.d.ts +1 -1
- package/dist/index.js +9001 -1795
- package/dist/oh-my-opencode.schema.json +2 -4
- package/dist/plugin/chat-params.d.ts +1 -8
- package/dist/plugin/hooks/create-core-hooks.d.ts +0 -2
- package/dist/plugin/hooks/create-session-hooks.d.ts +0 -2
- package/dist/plugin/hooks/create-transform-hooks.d.ts +1 -2
- package/dist/plugin/messages-transform.d.ts +0 -1
- package/dist/shared/model-availability.d.ts +10 -2
- package/dist/shared/module-resolution-failure.d.ts +7 -0
- package/package.json +25 -18
- package/packages/ast-grep-mcp/dist/cli.js +2 -10
- package/packages/git-bash-mcp/dist/cli.js +11 -4
- package/packages/lsp-daemon/dist/cli.d.ts +2 -0
- package/packages/lsp-daemon/dist/cli.js +3711 -0
- package/packages/lsp-daemon/dist/daemon-client.d.ts +19 -0
- package/packages/lsp-daemon/dist/daemon-client.js +114 -0
- package/packages/lsp-daemon/dist/daemon-server.d.ts +12 -0
- package/packages/lsp-daemon/dist/daemon-server.js +106 -0
- package/packages/lsp-daemon/dist/ensure-daemon.d.ts +21 -0
- package/packages/lsp-daemon/dist/ensure-daemon.js +97 -0
- package/packages/lsp-daemon/dist/index.d.ts +5 -0
- package/packages/lsp-daemon/dist/index.js +3573 -0
- package/packages/lsp-daemon/dist/lock.d.ts +7 -0
- package/packages/lsp-daemon/dist/lock.js +61 -0
- package/packages/lsp-daemon/dist/package.json +6 -0
- package/packages/lsp-daemon/dist/paths.d.ts +11 -0
- package/packages/lsp-daemon/dist/paths.js +49 -0
- package/packages/lsp-daemon/dist/proxy.d.ts +10 -0
- package/packages/lsp-daemon/dist/proxy.js +61 -0
- package/packages/lsp-daemon/dist/request-routing.d.ts +9 -0
- package/packages/lsp-daemon/dist/request-routing.js +44 -0
- package/packages/lsp-daemon/dist/run-daemon.d.ts +1 -0
- package/packages/lsp-daemon/dist/run-daemon.js +11 -0
- package/packages/lsp-daemon/dist/socket-jsonrpc.d.ts +5 -0
- package/packages/lsp-daemon/dist/socket-jsonrpc.js +25 -0
- package/packages/lsp-daemon/package.json +38 -0
- package/packages/lsp-tools-mcp/dist/cli.js +0 -0
- package/packages/lsp-tools-mcp/dist/lsp/client-wrapper.js +40 -17
- package/packages/lsp-tools-mcp/dist/lsp/client.js +11 -9
- package/packages/lsp-tools-mcp/dist/lsp/config-loader.js +5 -5
- package/packages/lsp-tools-mcp/dist/lsp/directory-diagnostics.js +5 -3
- package/packages/lsp-tools-mcp/dist/lsp/effective-extension.d.ts +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/effective-extension.js +8 -0
- package/packages/lsp-tools-mcp/dist/lsp/infer-extension.js +3 -2
- package/packages/lsp-tools-mcp/dist/lsp/language-mappings.js +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/server-definitions.js +12 -0
- package/packages/lsp-tools-mcp/dist/lsp/server-install-state.d.ts +12 -0
- package/packages/lsp-tools-mcp/dist/lsp/server-install-state.js +51 -0
- package/packages/lsp-tools-mcp/dist/lsp/workspace-edit.js +2 -1
- package/packages/lsp-tools-mcp/dist/request-context.d.ts +7 -0
- package/packages/lsp-tools-mcp/dist/request-context.js +14 -0
- package/packages/lsp-tools-mcp/dist/tools.js +44 -1
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +46 -33
- package/packages/omo-codex/plugin/.mcp.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/dist/apply-patch.d.ts +7 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/apply-patch.js +173 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/cli.d.ts +2 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/cli.js +10 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/codex-hook.d.ts +22 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/codex-hook.js +165 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/core-values.d.ts +1 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/core-values.js +1 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/core.d.ts +5 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/core.js +4 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/hook-input.d.ts +6 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/hook-input.js +10 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/record.d.ts +2 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/record.js +11 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/request-extractor.d.ts +3 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/request-extractor.js +104 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/runner.d.ts +26 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/runner.js +144 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/types.d.ts +43 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/types.js +1 -0
- package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
- package/packages/omo-codex/plugin/components/git-bash/dist/cli.d.ts +2 -0
- package/packages/omo-codex/plugin/components/git-bash/dist/cli.js +29 -0
- package/packages/omo-codex/plugin/components/git-bash/dist/codex-hook.d.ts +28 -0
- package/packages/omo-codex/plugin/components/git-bash/dist/codex-hook.js +137 -0
- package/packages/omo-codex/plugin/components/git-bash/dist/index.d.ts +1 -0
- package/packages/omo-codex/plugin/components/git-bash/dist/index.js +1 -0
- package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/git-bash/package.json +5 -2
- package/packages/omo-codex/plugin/components/lsp/.mcp.json +1 -1
- package/packages/omo-codex/plugin/components/lsp/dist/cli.d.ts +2 -0
- package/packages/omo-codex/plugin/components/lsp/dist/cli.js +42 -0
- package/packages/omo-codex/plugin/components/lsp/dist/codex-hook-cli.d.ts +2 -0
- package/packages/omo-codex/plugin/components/lsp/dist/codex-hook-cli.js +40 -0
- package/packages/omo-codex/plugin/components/lsp/dist/codex-hook.d.ts +16 -0
- package/packages/omo-codex/plugin/components/lsp/dist/codex-hook.js +180 -0
- package/packages/omo-codex/plugin/components/lsp/dist/lsp-session-state.d.ts +12 -0
- package/packages/omo-codex/plugin/components/lsp/dist/lsp-session-state.js +95 -0
- package/packages/omo-codex/plugin/components/lsp/dist/mutated-file-paths.d.ts +6 -0
- package/packages/omo-codex/plugin/components/lsp/dist/mutated-file-paths.js +79 -0
- package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/package.json +7 -7
- package/packages/omo-codex/plugin/components/lsp/scripts/build-lsp-daemon.mjs +68 -0
- package/packages/omo-codex/plugin/components/lsp/scripts/build-lsp-tools.mjs +45 -22
- package/packages/omo-codex/plugin/components/lsp/src/cli.ts +1 -1
- package/packages/omo-codex/plugin/components/lsp/src/codex-hook-cli.ts +1 -1
- package/packages/omo-codex/plugin/components/lsp/src/codex-hook.ts +6 -2
- package/packages/omo-codex/plugin/components/lsp/src/lsp-session-state.ts +4 -0
- package/packages/omo-codex/plugin/components/lsp/test/codex-hook-unavailable.test.ts +68 -0
- package/packages/omo-codex/plugin/components/lsp/test/package-smoke.test.ts +8 -20
- package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus.md +69 -96
- package/packages/omo-codex/plugin/components/rules/dist/cli.d.ts +2 -0
- package/packages/omo-codex/plugin/components/rules/dist/cli.js +118 -0
- package/packages/omo-codex/plugin/components/rules/dist/codex-hook-options.d.ts +5 -0
- package/packages/omo-codex/plugin/components/rules/dist/codex-hook-options.js +1 -0
- package/packages/omo-codex/plugin/components/rules/dist/codex-hook.d.ts +47 -0
- package/packages/omo-codex/plugin/components/rules/dist/codex-hook.js +127 -0
- package/packages/omo-codex/plugin/components/rules/dist/config.d.ts +2 -0
- package/packages/omo-codex/plugin/components/rules/dist/config.js +100 -0
- package/packages/omo-codex/plugin/components/rules/dist/context-pressure.d.ts +2 -0
- package/packages/omo-codex/plugin/components/rules/dist/context-pressure.js +26 -0
- package/packages/omo-codex/plugin/components/rules/dist/debug-log.d.ts +8 -0
- package/packages/omo-codex/plugin/components/rules/dist/debug-log.js +36 -0
- package/packages/omo-codex/plugin/components/rules/dist/dynamic-target-fingerprints.d.ts +7 -0
- package/packages/omo-codex/plugin/components/rules/dist/dynamic-target-fingerprints.js +65 -0
- package/packages/omo-codex/plugin/components/rules/dist/event-budget.d.ts +3 -0
- package/packages/omo-codex/plugin/components/rules/dist/event-budget.js +14 -0
- package/packages/omo-codex/plugin/components/rules/dist/hook-output.d.ts +2 -0
- package/packages/omo-codex/plugin/components/rules/dist/hook-output.js +24 -0
- package/packages/omo-codex/plugin/components/rules/dist/path-utils.d.ts +4 -0
- package/packages/omo-codex/plugin/components/rules/dist/path-utils.js +24 -0
- package/packages/omo-codex/plugin/components/rules/dist/persistent-cache.d.ts +13 -0
- package/packages/omo-codex/plugin/components/rules/dist/persistent-cache.js +172 -0
- package/packages/omo-codex/plugin/components/rules/dist/post-compact-budget.d.ts +6 -0
- package/packages/omo-codex/plugin/components/rules/dist/post-compact-budget.js +74 -0
- package/packages/omo-codex/plugin/components/rules/dist/post-compact-claim.d.ts +4 -0
- package/packages/omo-codex/plugin/components/rules/dist/post-compact-claim.js +6 -0
- package/packages/omo-codex/plugin/components/rules/dist/post-compact-directive.d.ts +1 -0
- package/packages/omo-codex/plugin/components/rules/dist/post-compact-directive.js +32 -0
- package/packages/omo-codex/plugin/components/rules/dist/post-compact-state.d.ts +13 -0
- package/packages/omo-codex/plugin/components/rules/dist/post-compact-state.js +29 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/cache.d.ts +9 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/cache.js +51 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/constants.d.ts +70 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/constants.js +101 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/engine-dynamic-cache.d.ts +5 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/engine-dynamic-cache.js +60 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/engine-dynamic-loader.d.ts +6 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/engine-dynamic-loader.js +61 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/engine-loader.d.ts +7 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/engine-loader.js +60 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/engine-paths.d.ts +11 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/engine-paths.js +75 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/engine-static-loader.d.ts +6 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/engine-static-loader.js +29 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/engine-types.d.ts +44 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/engine-types.js +1 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/engine.d.ts +5 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/engine.js +85 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/errors.d.ts +6 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/errors.js +12 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/finder-cache.d.ts +14 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/finder-cache.js +51 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/finder-paths.d.ts +6 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/finder-paths.js +33 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/finder-sources.d.ts +5 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/finder-sources.js +40 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/finder.d.ts +28 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/finder.js +146 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/formatter.d.ts +7 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/formatter.js +112 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/matcher.d.ts +18 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/matcher.js +93 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/ordering.d.ts +3 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/ordering.js +27 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/parser-frontmatter.d.ts +7 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/parser-frontmatter.js +30 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/parser-yaml.d.ts +2 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/parser-yaml.js +237 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/parser.d.ts +3 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/parser.js +31 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/plugin-root.d.ts +1 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/plugin-root.js +48 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/project-root.d.ts +1 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/project-root.js +23 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/scanner.d.ts +14 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/scanner.js +111 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/sources.d.ts +3 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/sources.js +9 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/truncator.d.ts +18 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/truncator.js +59 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/types.d.ts +126 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/types.js +8 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules-engine-factory.d.ts +6 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules-engine-factory.js +20 -0
- package/packages/omo-codex/plugin/components/rules/dist/session-state-lock.d.ts +3 -0
- package/packages/omo-codex/plugin/components/rules/dist/session-state-lock.js +41 -0
- package/packages/omo-codex/plugin/components/rules/dist/sparkshell-awareness.d.ts +10 -0
- package/packages/omo-codex/plugin/components/rules/dist/sparkshell-awareness.js +90 -0
- package/packages/omo-codex/plugin/components/rules/dist/static-injection.d.ts +3 -0
- package/packages/omo-codex/plugin/components/rules/dist/static-injection.js +128 -0
- package/packages/omo-codex/plugin/components/rules/dist/tool-paths.d.ts +6 -0
- package/packages/omo-codex/plugin/components/rules/dist/tool-paths.js +168 -0
- package/packages/omo-codex/plugin/components/rules/dist/transcript-rule-filter.d.ts +4 -0
- package/packages/omo-codex/plugin/components/rules/dist/transcript-rule-filter.js +49 -0
- package/packages/omo-codex/plugin/components/rules/dist/transcript-search.d.ts +4 -0
- package/packages/omo-codex/plugin/components/rules/dist/transcript-search.js +91 -0
- package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/rules/package.json +1 -1
- package/packages/omo-codex/plugin/components/rules/src/codex-hook.ts +4 -2
- package/packages/omo-codex/plugin/components/rules/src/config.ts +13 -0
- package/packages/omo-codex/plugin/components/rules/src/event-budget.ts +17 -0
- package/packages/omo-codex/plugin/components/rules/src/persistent-cache.ts +4 -1
- package/packages/omo-codex/plugin/components/rules/src/post-compact-directive.ts +39 -0
- package/packages/omo-codex/plugin/components/rules/src/rules/constants.ts +16 -0
- package/packages/omo-codex/plugin/components/rules/src/rules/engine.ts +8 -0
- package/packages/omo-codex/plugin/components/rules/src/rules/types.ts +4 -0
- package/packages/omo-codex/plugin/components/rules/src/sparkshell-awareness.ts +53 -4
- package/packages/omo-codex/plugin/components/rules/src/static-injection.ts +127 -7
- package/packages/omo-codex/plugin/components/rules/src/transcript-rule-filter.ts +9 -1
- package/packages/omo-codex/plugin/components/rules/test/bundled-rules.test.ts +4 -2
- package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-budget.test.ts +7 -2
- package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-context.test.ts +9 -9
- package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-dedup.test.ts +10 -4
- package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-directive.test.ts +241 -0
- package/packages/omo-codex/plugin/components/rules/test/event-budget.test.ts +168 -0
- package/packages/omo-codex/plugin/components/rules/test/post-compact-budget.test.ts +4 -0
- package/packages/omo-codex/plugin/components/rules/test/sparkshell-awareness.test.ts +86 -3
- package/packages/omo-codex/plugin/components/start-work-continuation/directive.md +15 -15
- package/packages/omo-codex/plugin/components/start-work-continuation/dist/boulder-reader.d.ts +16 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/dist/boulder-reader.js +146 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/dist/cli.d.ts +2 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/dist/cli.js +49 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/dist/codex-hook.d.ts +2 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/dist/codex-hook.js +80 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/dist/directive.d.ts +1 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/dist/directive.js +2 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/dist/index.d.ts +5 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/dist/index.js +3 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/dist/types.d.ts +20 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/dist/types.js +1 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/start-work-continuation/package.json +1 -1
- package/packages/omo-codex/plugin/components/start-work-continuation/test/codex-hook.test.ts +24 -2
- package/packages/omo-codex/plugin/components/telemetry/dist/atomic-write.d.ts +1 -0
- package/packages/omo-codex/plugin/components/telemetry/dist/atomic-write.js +18 -0
- package/packages/omo-codex/plugin/components/telemetry/dist/cli.d.ts +2 -0
- package/packages/omo-codex/plugin/components/telemetry/dist/cli.js +62 -0
- package/packages/omo-codex/plugin/components/telemetry/dist/codex-hook.d.ts +15 -0
- package/packages/omo-codex/plugin/components/telemetry/dist/codex-hook.js +42 -0
- package/packages/omo-codex/plugin/components/telemetry/dist/data-path.d.ts +10 -0
- package/packages/omo-codex/plugin/components/telemetry/dist/data-path.js +35 -0
- package/packages/omo-codex/plugin/components/telemetry/dist/diagnostics.d.ts +12 -0
- package/packages/omo-codex/plugin/components/telemetry/dist/diagnostics.js +108 -0
- package/packages/omo-codex/plugin/components/telemetry/dist/env-flags.d.ts +4 -0
- package/packages/omo-codex/plugin/components/telemetry/dist/env-flags.js +31 -0
- package/packages/omo-codex/plugin/components/telemetry/dist/posthog-activity-state.d.ts +8 -0
- package/packages/omo-codex/plugin/components/telemetry/dist/posthog-activity-state.js +68 -0
- package/packages/omo-codex/plugin/components/telemetry/dist/posthog.d.ts +21 -0
- package/packages/omo-codex/plugin/components/telemetry/dist/posthog.js +133 -0
- package/packages/omo-codex/plugin/components/telemetry/dist/product-identity.d.ts +8 -0
- package/packages/omo-codex/plugin/components/telemetry/dist/product-identity.js +29 -0
- package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/explorer.toml +5 -13
- package/packages/omo-codex/plugin/components/ultrawork/agents/librarian.toml +61 -185
- package/packages/omo-codex/plugin/components/ultrawork/agents/plan.toml +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/directive.md +122 -117
- package/packages/omo-codex/plugin/components/ultrawork/dist/cli.d.ts +2 -0
- package/packages/omo-codex/plugin/components/ultrawork/dist/cli.js +48 -0
- package/packages/omo-codex/plugin/components/ultrawork/dist/codex-hook.d.ts +7 -0
- package/packages/omo-codex/plugin/components/ultrawork/dist/codex-hook.js +122 -0
- package/packages/omo-codex/plugin/components/ultrawork/dist/directive.d.ts +1 -0
- package/packages/omo-codex/plugin/components/ultrawork/dist/directive.js +2 -0
- package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/SKILL.md +20 -11
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +17 -11
- package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook.test.ts +2 -5
- package/packages/omo-codex/plugin/components/ultrawork/test/package-smoke.test.ts +0 -71
- package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint.d.ts +16 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint.js +200 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-arg-parser.d.ts +17 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-arg-parser.js +97 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-commands.d.ts +4 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-commands.js +183 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-output.d.ts +6 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-output.js +55 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-steering.d.ts +12 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-steering.js +145 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.d.ts +2 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +39 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-instruction.d.ts +13 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-instruction.js +100 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-snapshot.d.ts +26 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-snapshot.js +97 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-hook.d.ts +28 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-hook.js +145 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/command-types.d.ts +34 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/command-types.js +1 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/constants.d.ts +16 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/constants.js +41 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/domain-types.d.ts +95 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/domain-types.js +1 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/evidence.d.ts +31 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/evidence.js +119 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/goal-status.d.ts +12 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/goal-status.js +69 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/paths.d.ts +16 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/paths.js +59 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-crud.d.ts +48 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-crud.js +119 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-io.d.ts +8 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-io.js +89 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate.d.ts +6 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate.js +123 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/review-blockers.d.ts +16 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/review-blockers.js +70 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/runtime.d.ts +10 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/runtime.js +13 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/steering-types.d.ts +63 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/steering-types.js +1 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/steering.d.ts +6 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/steering.js +292 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/types.d.ts +5 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/types.js +5 -0
- package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +14 -14
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +24 -25
- package/packages/omo-codex/plugin/components/ulw-loop/src/cli-commands.ts +17 -3
- package/packages/omo-codex/plugin/components/ulw-loop/src/cli.ts +2 -1
- package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-instruction.ts +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/test/cli-entrypoint.test.ts +95 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/package-smoke.test.ts +0 -96
- package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate.test.ts +23 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/skill-contract.test.ts +46 -0
- package/packages/omo-codex/plugin/hooks/hooks.json +16 -16
- package/packages/omo-codex/plugin/package-lock.json +10 -9
- package/packages/omo-codex/plugin/package.json +27 -26
- package/packages/omo-codex/plugin/scripts/auto-update.mjs +64 -15
- package/packages/omo-codex/plugin/scripts/build-bundled-mcp-runtimes.mjs +16 -0
- package/packages/omo-codex/plugin/scripts/migrate-codex-config/multi-agent-v2-guard.mjs +82 -18
- package/packages/omo-codex/plugin/scripts/migrate-codex-config.mjs +2 -2
- package/packages/omo-codex/plugin/scripts/sync-skills.mjs +23 -11
- package/packages/omo-codex/plugin/scripts/sync-version.mjs +94 -0
- package/packages/omo-codex/plugin/skills/init-deep/SKILL.md +9 -9
- package/packages/omo-codex/plugin/skills/lcx-contribute-bug-fix/SKILL.md +16 -1
- package/packages/omo-codex/plugin/skills/lcx-doctor/SKILL.md +93 -0
- package/packages/omo-codex/plugin/skills/lcx-doctor/agents/openai.yaml +11 -0
- package/packages/omo-codex/plugin/skills/lcx-report-bug/SKILL.md +17 -13
- package/packages/omo-codex/plugin/skills/lsp-setup/SKILL.md +139 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/bash/README.md +60 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/c-cpp/README.md +61 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/csharp/README.md +71 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/dart/README.md +48 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/elixir/README.md +51 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/go/README.md +57 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/haskell/README.md +57 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/java/README.md +57 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/julia/README.md +60 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/kotlin/README.md +59 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/lua/README.md +66 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/php/README.md +62 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/python/README.md +71 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/ruby/README.md +53 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/rust/README.md +59 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/swift/README.md +51 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/terraform/README.md +62 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/typescript/README.md +77 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/yaml/README.md +70 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/zig/README.md +49 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/scripts/detect-lsp.ts +210 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/scripts/lsp-server-table.ts +177 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/scripts/tsconfig.json +17 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/scripts/verify-lsp.ts +147 -0
- package/packages/omo-codex/plugin/skills/refactor/SKILL.md +9 -9
- package/packages/omo-codex/plugin/skills/remove-ai-slops/SKILL.md +10 -10
- package/packages/omo-codex/plugin/skills/review-work/SKILL.md +20 -22
- package/packages/omo-codex/plugin/skills/start-work/SKILL.md +38 -61
- package/packages/omo-codex/plugin/skills/ultraresearch/SKILL.md +135 -677
- package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +14 -14
- package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +24 -25
- package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +20 -11
- package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +17 -11
- package/packages/omo-codex/plugin/skills/visual-qa/SKILL.md +9 -9
- package/packages/omo-codex/plugin/test/aggregate-build.test.mjs +2 -1
- package/packages/omo-codex/plugin/test/aggregate-mcp.test.mjs +1 -1
- package/packages/omo-codex/plugin/test/aggregate-plugin-fixture.mjs +5 -5
- package/packages/omo-codex/plugin/test/aggregate-skills.test.mjs +6 -6
- package/packages/omo-codex/plugin/test/auto-update-restart-notice.test.mjs +194 -0
- package/packages/omo-codex/plugin/test/auto-update.test.mjs +17 -0
- package/packages/omo-codex/plugin/test/lcx-bug-skills.test.mjs +15 -44
- package/packages/omo-codex/plugin/test/lsp-prebuild-layouts.test.mjs +140 -0
- package/packages/omo-codex/plugin/test/migrate-codex-config.test.mjs +189 -7
- package/packages/omo-codex/plugin/test/start-work-skill.test.mjs +9 -31
- package/packages/omo-codex/plugin/test/sync-skills-orchestration.test.mjs +68 -4
- package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +119 -0
- package/packages/omo-codex/plugin/test/sync-skills.test.mjs +11 -112
- package/packages/omo-codex/plugin/test/sync-version.test.mjs +68 -0
- package/packages/omo-codex/plugin/test/ultraresearch-skill-contract.test.mjs +126 -0
- package/packages/omo-codex/plugin/test/ulw-plan-skill.test.mjs +2 -2
- package/packages/omo-codex/scripts/install/bin-dir.mjs +20 -0
- package/packages/omo-codex/scripts/install/bin-links.mjs +43 -6
- package/packages/omo-codex/scripts/install/cache.mjs +4 -0
- package/packages/omo-codex/scripts/install/config.mjs +4 -4
- package/packages/omo-codex/scripts/install/delegated-command.mjs +5 -1
- package/packages/omo-codex/scripts/install/git-bash-mcp-env.mjs +28 -0
- package/packages/omo-codex/scripts/install/git-bash.mjs +12 -4
- package/packages/omo-codex/scripts/install/git-bash.test.mjs +39 -4
- package/packages/omo-codex/scripts/install/hook-targets.mjs +46 -0
- package/packages/omo-codex/scripts/install/multi-agent-v2-config.mjs +12 -2
- package/packages/omo-codex/scripts/install/process.mjs +1 -0
- package/packages/omo-codex/scripts/install-bin-links.test.mjs +131 -3
- package/packages/omo-codex/scripts/install-config-git-bash.test.mjs +91 -0
- package/packages/omo-codex/scripts/install-config.test.mjs +50 -44
- package/packages/omo-codex/scripts/install-delegated-command.test.mjs +78 -0
- package/packages/omo-codex/scripts/install-git-bash-mcp-env.test.mjs +93 -0
- package/packages/omo-codex/scripts/install-hook-targets.test.mjs +100 -0
- package/packages/omo-codex/scripts/install-lazycodex-version-stamp.test.mjs +3 -1
- package/packages/omo-codex/scripts/install-local.mjs +7 -18
- package/packages/omo-codex/scripts/install-local.test.mjs +34 -1
- package/packages/shared-skills/skills/lcx-contribute-bug-fix/SKILL.md +16 -1
- package/packages/shared-skills/skills/lcx-doctor/SKILL.md +93 -0
- package/packages/shared-skills/skills/lcx-doctor/agents/openai.yaml +11 -0
- package/packages/shared-skills/skills/lcx-report-bug/SKILL.md +17 -13
- package/packages/shared-skills/skills/lsp-setup/SKILL.md +139 -0
- package/packages/shared-skills/skills/lsp-setup/references/bash/README.md +60 -0
- package/packages/shared-skills/skills/lsp-setup/references/c-cpp/README.md +61 -0
- package/packages/shared-skills/skills/lsp-setup/references/csharp/README.md +71 -0
- package/packages/shared-skills/skills/lsp-setup/references/dart/README.md +48 -0
- package/packages/shared-skills/skills/lsp-setup/references/elixir/README.md +51 -0
- package/packages/shared-skills/skills/lsp-setup/references/go/README.md +57 -0
- package/packages/shared-skills/skills/lsp-setup/references/haskell/README.md +57 -0
- package/packages/shared-skills/skills/lsp-setup/references/java/README.md +57 -0
- package/packages/shared-skills/skills/lsp-setup/references/julia/README.md +60 -0
- package/packages/shared-skills/skills/lsp-setup/references/kotlin/README.md +59 -0
- package/packages/shared-skills/skills/lsp-setup/references/lua/README.md +66 -0
- package/packages/shared-skills/skills/lsp-setup/references/php/README.md +62 -0
- package/packages/shared-skills/skills/lsp-setup/references/python/README.md +71 -0
- package/packages/shared-skills/skills/lsp-setup/references/ruby/README.md +53 -0
- package/packages/shared-skills/skills/lsp-setup/references/rust/README.md +59 -0
- package/packages/shared-skills/skills/lsp-setup/references/swift/README.md +51 -0
- package/packages/shared-skills/skills/lsp-setup/references/terraform/README.md +62 -0
- package/packages/shared-skills/skills/lsp-setup/references/typescript/README.md +77 -0
- package/packages/shared-skills/skills/lsp-setup/references/yaml/README.md +70 -0
- package/packages/shared-skills/skills/lsp-setup/references/zig/README.md +49 -0
- package/packages/shared-skills/skills/lsp-setup/scripts/detect-lsp.ts +210 -0
- package/packages/shared-skills/skills/lsp-setup/scripts/lsp-server-table.ts +177 -0
- package/packages/shared-skills/skills/lsp-setup/scripts/tsconfig.json +17 -0
- package/packages/shared-skills/skills/lsp-setup/scripts/verify-lsp.ts +147 -0
- package/packages/shared-skills/skills/remove-ai-slops/SKILL.md +1 -1
- package/packages/shared-skills/skills/review-work/SKILL.md +10 -14
- package/packages/shared-skills/skills/start-work/SKILL.md +30 -59
- package/packages/shared-skills/skills/ultraresearch/SKILL.md +126 -667
- package/dist/hooks/anthropic-effort/hook.d.ts +0 -26
- package/dist/hooks/anthropic-effort/index.d.ts +0 -1
- package/dist/hooks/keyword-detector/analyze/default.d.ts +0 -12
- package/dist/hooks/keyword-detector/analyze/index.d.ts +0 -1
- package/dist/hooks/keyword-detector/search/default.d.ts +0 -12
- package/dist/hooks/keyword-detector/search/index.d.ts +0 -1
- package/dist/hooks/thinking-block-validator/hook.d.ts +0 -12
- package/dist/hooks/thinking-block-validator/index.d.ts +0 -1
- package/packages/omo-codex/plugin/components/ultrawork/test/directive-contract.test.ts +0 -18
- package/packages/omo-codex/plugin/test/global-review-debug-gate.test.mjs +0 -29
- 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
|
|
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
|
|
@@ -9,762 +9,220 @@ This skill may include examples copied from the OpenCode harness. In Codex, do n
|
|
|
9
9
|
|
|
10
10
|
| OpenCode example | Codex tool to use |
|
|
11
11
|
| --- | --- |
|
|
12
|
-
| `call_omo_agent(subagent_type="explore", ...)` | `spawn_agent({"
|
|
13
|
-
| `call_omo_agent(subagent_type="librarian", ...)` | `spawn_agent({"
|
|
14
|
-
| `task(subagent_type="
|
|
15
|
-
| `task(
|
|
16
|
-
| `task(category="
|
|
17
|
-
| `background_output(task_id="...")` | `wait_agent(...)` for mailbox signals
|
|
12
|
+
| `call_omo_agent(subagent_type="explore", ...)` | `multi_agent_v1.spawn_agent({"message":"TASK: act as an explorer. ...","agent_type":"explorer","fork_context":false})` |
|
|
13
|
+
| `call_omo_agent(subagent_type="librarian", ...)` | `multi_agent_v1.spawn_agent({"message":"TASK: act as a librarian. ...","agent_type":"librarian","fork_context":false})` |
|
|
14
|
+
| `task(subagent_type="plan", ...)` | `multi_agent_v1.spawn_agent({"message":"TASK: act as a planning agent. ...","agent_type":"plan","fork_context":false})` |
|
|
15
|
+
| `task(subagent_type="oracle", ...)` for final verification | `multi_agent_v1.spawn_agent({"message":"TASK: act as a rigorous reviewer. ...","agent_type":"codex-ultrawork-reviewer","fork_context":false})` |
|
|
16
|
+
| `task(category="...", ...)` for implementation or QA | `multi_agent_v1.spawn_agent({"message":"TASK: act as an implementation or QA worker. ...","fork_context":false})` |
|
|
17
|
+
| `background_output(task_id="...")` | `multi_agent_v1.wait_agent(...)` for mailbox signals |
|
|
18
|
+
| `team_*(...)` | Use Codex native subagents via `multi_agent_v1.spawn_agent`, `multi_agent_v1.send_input`, `multi_agent_v1.wait_agent`, and `multi_agent_v1.close_agent` |
|
|
18
19
|
|
|
19
|
-
|
|
20
|
+
Role-specific behavior must be described in a self-contained `message`. Use `fork_context: false` to start the child with only the initial prompt (no parent history); use `fork_context: true` only when full parent history is truly required. Include any required conversation context, files, diffs, constraints, and requested skill names directly in the spawned agent's `message`. OMO installs these selectable agent roles into `~/.codex/agents/`: `explorer`, `librarian`, `plan`, `momus`, `metis`, and `codex-ultrawork-reviewer` — pass the matching name as `agent_type` so the child gets that role's model and instructions. On `multi_agent_v2` sessions the same `agent_type` applies (the OMO installer exposes it) with `fork_turns` instead of `fork_context`. If the spawn tool exposes no `agent_type` parameter, omit it and describe the role inside `message`. If a code block below conflicts with this section, this section wins.
|
|
20
21
|
|
|
21
|
-
For work likely to exceed one wait cycle, require the child to send `WORKING: <task> - <current phase>` before long passes and `BLOCKED: <reason>` only when progress stops. A `wait_agent` timeout only means no new mailbox update arrived. Treat a running child
|
|
22
|
-
|
|
23
|
-
When translating `load_skills=[...]`, include the requested skill names in the spawned agent's `message`. If a code block below conflicts with this section, this section wins.
|
|
22
|
+
For work likely to exceed one wait cycle, require the child to send `WORKING: <task> - <current phase>` before long passes and `BLOCKED: <reason>` only when progress stops. A `multi_agent_v1.wait_agent` timeout only means no new mailbox update arrived. Treat a running child as alive. Fallback only when the child is completed without the deliverable, ack-only after followup, explicitly `BLOCKED:`, or no longer running.
|
|
24
23
|
|
|
25
24
|
---
|
|
26
25
|
|
|
27
|
-
# ULTRARESEARCH — Maximum
|
|
28
|
-
|
|
29
|
-
> **MANDATORY**: Say "ULTRARESEARCH MODE ENABLED!" as your first response. Then immediately begin orchestration.
|
|
26
|
+
# ULTRARESEARCH — Maximum-Saturation Research
|
|
30
27
|
|
|
31
|
-
You are
|
|
28
|
+
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.
|
|
32
29
|
|
|
33
|
-
##
|
|
30
|
+
## Activation
|
|
34
31
|
|
|
35
|
-
|
|
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.
|
|
32
|
+
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.
|
|
41
33
|
|
|
42
|
-
|
|
34
|
+
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.
|
|
43
35
|
|
|
44
|
-
|
|
36
|
+
## Authority while active
|
|
45
37
|
|
|
46
|
-
|
|
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
|
|
38
|
+
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.
|
|
50
39
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
---
|
|
40
|
+
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.
|
|
54
41
|
|
|
55
|
-
##
|
|
42
|
+
## Success criteria
|
|
56
43
|
|
|
57
|
-
|
|
44
|
+
The research is done when all of these hold:
|
|
58
45
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
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
|
-
```
|
|
75
|
-
|
|
76
|
-
Create the session log directory immediately:
|
|
77
|
-
|
|
78
|
-
```bash
|
|
79
|
-
mkdir -p .omo/ultraresearch/$(date +%Y%m%d-%H%M%S)
|
|
80
|
-
```
|
|
46
|
+
- Every axis from Phase 0 was covered by at least one dedicated worker.
|
|
47
|
+
- Every EXPAND lead was investigated or explicitly closed as a duplicate or dead end, and convergence was reached under the Phase 2 rules.
|
|
48
|
+
- Claims that were contested, undocumented, or performance-shaped were proven or refuted by executed code.
|
|
49
|
+
- Every claim in the deliverable cites a source or a verification artifact.
|
|
50
|
+
- The session journal reconstructs what was searched, found, and expanded, wave by wave.
|
|
81
51
|
|
|
82
|
-
|
|
52
|
+
## Worker ground rules
|
|
83
53
|
|
|
84
|
-
|
|
54
|
+
Research workers (explore, librarian, browsing) differ by harness, but assume:
|
|
85
55
|
|
|
86
|
-
|
|
56
|
+
- **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.
|
|
57
|
+
- **No recursion.** Workers cannot spawn their own subagents. Depth comes from your expansion waves, not from worker-side recursion.
|
|
58
|
+
- **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.
|
|
59
|
+
- **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
60
|
|
|
88
|
-
|
|
61
|
+
### The spawn-message contract
|
|
89
62
|
|
|
90
|
-
|
|
63
|
+
Every research spawn message contains, in order:
|
|
91
64
|
|
|
92
|
-
|
|
65
|
+
1. `TASK:` — one imperative line naming the role and the axis.
|
|
66
|
+
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."
|
|
67
|
+
3. Scope — the axis, the sources to hit, and what a complete answer contains.
|
|
68
|
+
4. The role protocol (Phase 1).
|
|
69
|
+
5. The reply tail. EXPAND markers travel back as message text, never as files. Every worker ends the reply with:
|
|
93
70
|
|
|
94
71
|
```
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
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
|
-
)
|
|
72
|
+
## EXPAND
|
|
73
|
+
- LEAD: <discovery not yet investigated> — WHY: <why it matters> — ANGLE: <suggested search>
|
|
74
|
+
- DEAD END: <lead explored to exhaustion>
|
|
131
75
|
```
|
|
132
76
|
|
|
133
|
-
|
|
77
|
+
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.
|
|
78
|
+
|
|
79
|
+
## Phase 0 — Decompose and open the journal
|
|
134
80
|
|
|
135
|
-
|
|
81
|
+
Before spawning anything, decompose the query:
|
|
136
82
|
|
|
137
83
|
```
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
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
|
-
)
|
|
84
|
+
<analysis>
|
|
85
|
+
Core question: <the actual information need>
|
|
86
|
+
Axes (3+ orthogonal): <axis — what to search, where, why> ...
|
|
87
|
+
Codebase relevant: <yes/no> · External: <yes/no> · Browsing: <yes/no> · Verification likely: <yes/no> · Report requested: <no | format>
|
|
88
|
+
</analysis>
|
|
227
89
|
```
|
|
228
90
|
|
|
229
|
-
|
|
91
|
+
Then create the session directory:
|
|
230
92
|
|
|
93
|
+
```bash
|
|
94
|
+
mkdir -p .omo/ultraresearch/$(date +%Y%m%d-%H%M%S)
|
|
231
95
|
```
|
|
232
|
-
task(
|
|
233
|
-
category="quick",
|
|
234
|
-
run_in_background=true,
|
|
235
|
-
load_skills=["browsing", "insane-search"],
|
|
236
|
-
prompt="ULTRARESEARCH BROWSER SWEEP
|
|
237
96
|
|
|
238
|
-
SESSION_DIR:
|
|
97
|
+
This is `$SESSION_DIR`. The orchestrator owns the journal: you write every file in it; workers never do. Maintain:
|
|
239
98
|
|
|
240
|
-
|
|
241
|
-
|
|
99
|
+
- `wave-<N>-<kind>-<axis>.md` — your digest of each worker return: key findings, sources with URLs, and the worker's EXPAND markers verbatim.
|
|
100
|
+
- `expansion-log.md` — per wave: workers spawned, markers gained, leads opened and closed.
|
|
101
|
+
- `verify-<slug>.md`, `SYNTHESIS.md`, `REPORT.*` from later phases.
|
|
242
102
|
|
|
243
|
-
|
|
244
|
-
1. Try insane-search first (headless extraction, WAF bypass)
|
|
245
|
-
2. If that fails, use CloakBrowser+agent-browser (stealth Chromium)
|
|
103
|
+
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
104
|
|
|
247
|
-
|
|
248
|
-
APPEND findings to $SESSION_DIR/browsed-[slug].md with URL, method, content.
|
|
105
|
+
## Phase 1 — Saturation wave
|
|
249
106
|
|
|
250
|
-
|
|
251
|
-
- [ ] EXPAND: [new lead from browsed content] — [why] — [angle]
|
|
252
|
-
"
|
|
253
|
-
)
|
|
254
|
-
```
|
|
107
|
+
Launch every first-wave worker in a single turn, all in background. Sequential launches and "start with one and see" defeat the mode.
|
|
255
108
|
|
|
256
|
-
|
|
109
|
+
Scaling floor — more angles always justify more workers:
|
|
257
110
|
|
|
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 |
|
|
111
|
+
| Query scope | explore | librarian | browsing | repo-dive | floor |
|
|
286
112
|
|---|---|---|---|---|---|
|
|
287
113
|
| Single topic, codebase only | 3 | 0 | 0 | 0 | 3 |
|
|
288
114
|
| Single topic, web only | 0 | 4 | 1 | 1 | 6 |
|
|
289
115
|
| Single topic, both | 2 | 3 | 1 | 1 | 7 |
|
|
290
|
-
| Multi-faceted
|
|
116
|
+
| Multi-faceted | 4 | 6 | 2 | 2 | 14 |
|
|
291
117
|
| Full due diligence | 4 | 6 | 3 | 2 | 15 |
|
|
292
118
|
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
---
|
|
296
|
-
|
|
297
|
-
## Phase 2: Recursive Discovery Loop (EXPAND Protocol)
|
|
298
|
-
|
|
299
|
-
This is NOT a single-pass search. Research is **recursive**. Every finding can spawn new questions.
|
|
119
|
+
Role protocols — embed the relevant one in each spawn message; every worker gets a unique angle:
|
|
300
120
|
|
|
301
|
-
|
|
121
|
+
- **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.
|
|
122
|
+
- **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.
|
|
123
|
+
- **Browsing, 0-3 workers.** Pages plain fetch cannot read (WAF, dynamic rendering, login): use the browsing skill; capture screenshots when visual context matters.
|
|
124
|
+
- **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.
|
|
302
125
|
|
|
303
|
-
|
|
126
|
+
Example spawn (codebase axis; librarian, browsing, and repo-dive follow the same contract with their own protocol):
|
|
304
127
|
|
|
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
128
|
```
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
-
|
|
315
|
-
-
|
|
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:
|
|
330
|
-
|
|
331
|
-
```
|
|
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
|
|
129
|
+
task(subagent_type="explore", run_in_background=true, prompt="TASK: act as a codebase researcher. AXIS: <specific angle>.
|
|
130
|
+
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.
|
|
131
|
+
SCOPE: find everything in this codebase related to <angle>: <what complete looks like>.
|
|
132
|
+
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.
|
|
133
|
+
End your reply with the ## EXPAND tail: '- LEAD: <discovery> — WHY: <why> — ANGLE: <search>' per lead, or 'none — <reason>'.")
|
|
375
134
|
```
|
|
376
135
|
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
---
|
|
136
|
+
## Phase 2 — Expand until convergence
|
|
380
137
|
|
|
381
|
-
|
|
138
|
+
This loop is what makes the mode research rather than search. Collect workers as they finish — never wait for the full wave:
|
|
382
139
|
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
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:
|
|
140
|
+
1. Journal the return: digest plus verbatim EXPAND markers into `wave-<N>-<kind>-<axis>.md`.
|
|
141
|
+
2. Deduplicate new markers against `expansion-log.md` — every lead ever seen, not just confirmed ones, or rejected leads resurface each wave.
|
|
142
|
+
3. Spawn an expansion worker immediately for each new unchecked lead:
|
|
402
143
|
|
|
403
144
|
```
|
|
404
|
-
task(
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
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
|
-
)
|
|
445
|
-
```
|
|
446
|
-
|
|
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
|
-
---
|
|
458
|
-
|
|
459
|
-
## Phase 4: Synthesize
|
|
460
|
-
|
|
461
|
-
Once the expansion loop has CONVERGED and all agents (including verification) have reported:
|
|
462
|
-
|
|
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
|
|
471
|
-
|
|
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]
|
|
145
|
+
task(subagent_type="librarian", run_in_background=true, prompt="TASK: expansion wave <N> — investigate: <lead>.
|
|
146
|
+
PARENT: <which return surfaced it>. This is an explicit exhaustive-research assignment; budgets do not apply.
|
|
147
|
+
<role protocol for the lead's territory — librarian protocol for external leads, explore protocol for codebase leads>
|
|
148
|
+
End your reply with the ## EXPAND tail.")
|
|
521
149
|
```
|
|
522
150
|
|
|
523
|
-
|
|
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 |
|
|
151
|
+
4. Record the wave in `expansion-log.md`: spawned, markers gained, leads opened/closed.
|
|
541
152
|
|
|
542
|
-
|
|
153
|
+
**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:
|
|
543
154
|
|
|
544
|
-
|
|
155
|
+
- Zero unchecked leads remain — each investigated or closed as duplicate/dead end.
|
|
156
|
+
- 3 consecutive waves produced no new actionable leads.
|
|
157
|
+
- Expansion depth reached 5 waves — pause, show the open leads, and ask the user whether to extend.
|
|
545
158
|
|
|
546
|
-
|
|
547
|
-
task(
|
|
548
|
-
category="quick",
|
|
549
|
-
run_in_background=true,
|
|
550
|
-
prompt="ULTRARESEARCH REPORT — DATA 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
|
-
)
|
|
568
|
-
```
|
|
159
|
+
## Phase 3 — Verify contested claims by running code
|
|
569
160
|
|
|
570
|
-
|
|
161
|
+
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:
|
|
571
162
|
|
|
572
163
|
```
|
|
573
|
-
task(
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
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
|
-
)
|
|
164
|
+
task(category="deep", run_in_background=true, prompt="TASK: verify by execution: <claim>.
|
|
165
|
+
SOURCE: <where it came from>; CONTRADICTION: <opposing source, if any>.
|
|
166
|
+
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.
|
|
167
|
+
Reply with: the exact code, the full output, environment (OS, runtime, dependency versions), and a verdict — CONFIRMED / REFUTED / PARTIAL — grounded in the output.")
|
|
587
168
|
```
|
|
588
169
|
|
|
589
|
-
|
|
170
|
+
Journal each verdict to `verify-<slug>.md`.
|
|
590
171
|
|
|
591
|
-
|
|
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
|
|
172
|
+
## Phase 4 — Synthesize
|
|
607
173
|
|
|
608
|
-
|
|
174
|
+
After convergence and all verifications, re-read the whole journal and write `SYNTHESIS.md`:
|
|
609
175
|
|
|
610
176
|
```
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
run_in_background=true,
|
|
614
|
-
load_skills=["frontend-design", "frontend-perfectionist", "open-design", "data-scientist", "imagegen"],
|
|
615
|
-
prompt="ULTRARESEARCH REPORT — FINAL 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  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
|
-
)
|
|
678
|
-
```
|
|
679
|
-
|
|
680
|
-
---
|
|
681
|
-
|
|
682
|
-
## Advanced Search Operator Reference
|
|
683
|
-
|
|
684
|
-
Agents MUST use these aggressively on every websearch call. This is core technique, not garnish.
|
|
685
|
-
|
|
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
|
|
177
|
+
# Ultraresearch Synthesis: <query>
|
|
178
|
+
Workers: <total> · Waves: <count> · Sources: <count> · Verifications: <count>
|
|
702
179
|
|
|
180
|
+
## Executive summary — 2-3 paragraphs answering the core question
|
|
181
|
+
## Findings by theme — per theme: consensus, evidence links, key quote (<20 words, attributed), verified yes/no
|
|
182
|
+
## Codebase findings — absolute paths with line references
|
|
183
|
+
## Sources (ranked) — URL, what it contains, reliability, access date
|
|
184
|
+
## Verified claims — claim | verdict | verify-<slug>.md
|
|
185
|
+
## Contradictions — source A vs source B, resolution with evidence
|
|
186
|
+
## Gaps — what saturation could not answer
|
|
187
|
+
## Expansion trace — per wave: workers → markers; convergence reason
|
|
703
188
|
```
|
|
704
|
-
# Official docs
|
|
705
|
-
"[library] site:[library].dev OR site:docs.[library].com"
|
|
706
189
|
|
|
707
|
-
|
|
708
|
-
"[pattern] site:github.com filetype:ts OR filetype:tsx"
|
|
190
|
+
Deliver the synthesis with inline `[Source N]` citations on every claim. When no report was requested, this is the deliverable.
|
|
709
191
|
|
|
710
|
-
|
|
711
|
-
"[topic] site:reddit.com OR site:news.ycombinator.com after:2025-01-01"
|
|
192
|
+
## Phase 5 — Report (only when requested)
|
|
712
193
|
|
|
713
|
-
|
|
714
|
-
"[topic] site:arxiv.org OR filetype:pdf survey OR benchmark [year]"
|
|
194
|
+
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.
|
|
715
195
|
|
|
716
|
-
|
|
717
|
-
"[topic] site:stackoverflow.com [specific error or pattern]"
|
|
196
|
+
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.
|
|
718
197
|
|
|
719
|
-
|
|
720
|
-
"[topic] site:tistory.com OR site:velog.io OR site:naver.com"
|
|
198
|
+
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]`.
|
|
721
199
|
|
|
722
|
-
|
|
723
|
-
"[library] changelog OR release notes OR migration guide [version]"
|
|
200
|
+
## Search craft
|
|
724
201
|
|
|
725
|
-
|
|
726
|
-
"[topic] vs OR alternative OR comparison OR benchmark"
|
|
727
|
-
```
|
|
728
|
-
|
|
729
|
-
### GitHub Search (gh CLI)
|
|
202
|
+
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.
|
|
730
203
|
|
|
731
|
-
|
|
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
|
-
```
|
|
204
|
+
Vary operators on every query — same query twice wastes a worker:
|
|
737
205
|
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
---
|
|
206
|
+
| Operator | Example | Use |
|
|
207
|
+
|---|---|---|
|
|
208
|
+
| `site:` | `site:github.com <topic>` | Restrict to a domain |
|
|
209
|
+
| `filetype:` | `filetype:pdf <topic> survey` | Papers, specs |
|
|
210
|
+
| `intitle:` / `inurl:` | `intitle:benchmark <topic>` | Targeted pages |
|
|
211
|
+
| `"exact"` / `-term` | `"<exact phrase>" -tutorial` | Precision, exclusion |
|
|
212
|
+
| `OR` | `<a> OR <b> <topic>` | Coverage |
|
|
213
|
+
| `before:` / `after:` | `<topic> after:2025-06-01` | Recency control |
|
|
747
214
|
|
|
748
|
-
|
|
215
|
+
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
216
|
|
|
750
|
-
##
|
|
217
|
+
## Failure modes
|
|
751
218
|
|
|
752
|
-
|
|
|
753
|
-
|
|
754
|
-
| Sequential
|
|
755
|
-
|
|
|
756
|
-
|
|
|
757
|
-
|
|
|
758
|
-
|
|
|
759
|
-
|
|
|
760
|
-
|
|
|
761
|
-
|
|
|
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 |
|
|
219
|
+
| Failure | Correction |
|
|
220
|
+
|---|---|
|
|
221
|
+
| Sequential spawning, or trimming the first wave | All first-wave workers in one turn, background, scaling floor respected |
|
|
222
|
+
| Worker reply without the EXPAND tail | One follow-up demanding it; the lane stays open until it lands |
|
|
223
|
+
| Stopping after wave 1 because "enough was found" | Convergence rules only: 2+ expansion waves, leads run dry |
|
|
224
|
+
| Obeying a surrounding "stop exploring" rule mid-research | Authority section — those rules do not bind this mode |
|
|
225
|
+
| Asking a worker to write journal or session files | Workers are read-only; you journal every return |
|
|
226
|
+
| Two workers given the same angle | One unique angle per worker, always |
|
|
227
|
+
| Contested claim settled by judgment | Phase 3 — run code, capture output, verdict |
|
|
228
|
+
| Deliverable claims without citations | Every claim cites a source or a verification artifact |
|