lazycodex-ai 5.0.0-beta.40 → 5.0.0-beta.43

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 (106) hide show
  1. package/README.ja.md +2 -2
  2. package/README.ko.md +4 -4
  3. package/README.md +4 -4
  4. package/README.ru.md +2 -2
  5. package/README.zh-cn.md +2 -2
  6. package/dist/cli/index.js +174 -78
  7. package/dist/cli-node/index.js +174 -78
  8. package/package.json +1 -1
  9. package/packages/lsp-daemon/dist/cli.js +11 -6
  10. package/packages/lsp-daemon/dist/client.js +11 -6
  11. package/packages/lsp-daemon/dist/index.js +11 -6
  12. package/packages/lsp-tools-mcp/dist/cli.js +11 -6
  13. package/packages/lsp-tools-mcp/dist/lsp/manager.js +11 -6
  14. package/packages/lsp-tools-mcp/dist/mcp.js +11 -6
  15. package/packages/lsp-tools-mcp/dist/tools.js +11 -6
  16. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  17. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  18. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  19. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  20. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  21. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  22. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  23. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  24. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  25. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +3 -3
  26. package/packages/omo-codex/plugin/components/lsp/dist/cli.js +11 -6
  27. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  28. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  29. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  30. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  31. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  32. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  33. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  34. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  35. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  36. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  37. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +2 -2
  38. package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
  39. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
  40. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  41. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +1 -1
  42. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  43. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  44. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  45. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  46. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  47. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  48. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  49. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  50. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  51. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  52. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  53. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  54. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  55. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  56. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
  57. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  58. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-ulw-execute-continuation.json +1 -1
  59. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  60. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  61. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  62. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  63. package/packages/omo-codex/plugin/package-lock.json +12 -12
  64. package/packages/omo-codex/plugin/package.json +1 -1
  65. package/packages/omo-codex/plugin/scripts/sync-skills.mjs +6 -18
  66. package/packages/omo-codex/plugin/skills/ast-grep/SKILL.md +1 -1
  67. package/packages/omo-codex/plugin/skills/coding-agent-sessions/SKILL.md +1 -1
  68. package/packages/omo-codex/plugin/skills/data-scientist/SKILL.md +1 -1
  69. package/packages/omo-codex/plugin/skills/debugging/SKILL.md +1 -1
  70. package/packages/omo-codex/plugin/skills/frontend/SKILL.md +1 -1
  71. package/packages/omo-codex/plugin/skills/git-master/SKILL.md +1 -1
  72. package/packages/omo-codex/plugin/skills/init-deep/SKILL.md +1 -1
  73. package/packages/omo-codex/plugin/skills/lsp-setup/SKILL.md +1 -1
  74. package/packages/omo-codex/plugin/skills/programming/SKILL.md +1 -1
  75. package/packages/omo-codex/plugin/skills/refactor/SKILL.md +1 -1
  76. package/packages/omo-codex/plugin/skills/remove-ai-slops/SKILL.md +1 -1
  77. package/packages/omo-codex/plugin/skills/review-work/SKILL.md +99 -417
  78. package/packages/omo-codex/plugin/skills/ultimate-browsing/ATTRIBUTION.md +1 -1
  79. package/packages/omo-codex/plugin/skills/ultimate-browsing/SKILL.md +24 -9
  80. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/chrome-stealth.md +13 -10
  81. package/packages/omo-codex/plugin/skills/ulw-execute/SKILL.md +1 -1
  82. package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +1 -1
  83. package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +5 -2
  84. package/packages/omo-codex/plugin/skills/visual-qa/SKILL.md +2 -2
  85. package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +1 -1
  86. package/packages/omo-codex/scripts/install-dist/install-local.mjs +3 -2
  87. package/packages/shared-skills/package.json +7 -1
  88. package/packages/shared-skills/skills/ast-grep/SKILL.md +1 -1
  89. package/packages/shared-skills/skills/coding-agent-sessions/SKILL.md +1 -1
  90. package/packages/shared-skills/skills/data-scientist/SKILL.md +1 -1
  91. package/packages/shared-skills/skills/debugging/SKILL.md +1 -1
  92. package/packages/shared-skills/skills/frontend/SKILL.md +1 -1
  93. package/packages/shared-skills/skills/git-master/SKILL.md +1 -1
  94. package/packages/shared-skills/skills/init-deep/SKILL.md +1 -1
  95. package/packages/shared-skills/skills/lsp-setup/SKILL.md +1 -1
  96. package/packages/shared-skills/skills/programming/SKILL.md +1 -1
  97. package/packages/shared-skills/skills/refactor/SKILL.md +1 -1
  98. package/packages/shared-skills/skills/remove-ai-slops/SKILL.md +1 -1
  99. package/packages/shared-skills/skills/review-work/SKILL.md +99 -417
  100. package/packages/shared-skills/skills/ultimate-browsing/ATTRIBUTION.md +1 -1
  101. package/packages/shared-skills/skills/ultimate-browsing/SKILL.md +24 -9
  102. package/packages/shared-skills/skills/ultimate-browsing/references/chrome-stealth.md +13 -10
  103. package/packages/shared-skills/skills/ulw-execute/SKILL.md +1 -1
  104. package/packages/shared-skills/skills/ulw-plan/SKILL.md +1 -1
  105. package/packages/shared-skills/skills/ulw-research/SKILL.md +5 -2
  106. package/packages/shared-skills/skills/visual-qa/SKILL.md +2 -2
@@ -103,7 +103,7 @@ SOFTWARE.
103
103
  ## 4. agent-browser (vercel-labs) — Tier-2 CDP automation CLI (runtime dependency)
104
104
 
105
105
  The Tier-2 automation CLI is **agent-browser**, installed at runtime via `npm`
106
- (`npm i -g agent-browser`). No agent-browser source is vendored in this repository.
106
+ (`bun add -g agent-browser`). No agent-browser source is vendored in this repository.
107
107
 
108
108
  - Source: https://github.com/vercel-labs/agent-browser
109
109
  - Pinned runtime version: **0.34.0** (documented in `references/chrome-stealth.md`;
@@ -1,13 +1,13 @@
1
1
  ---
2
2
  name: ultimate-browsing
3
- description: "Escalation skill for blocked or hard-to-reach web access — load it when a normal browse/fetch is blocked (WAF, 403, Cloudflare, JS-only render, login-gated, or a platform a generic fetcher cannot read). Tiered router: TIER 1 insane-search (headless extraction + WAF bypass via curl_cffi TLS impersonation, yt-dlp, Jina Reader, public APIs, Playwright real-Chrome fallback); TIER 1.5 agent-reach (platform-native readers for Chinese and social platforms: Xiaohongshu, Douyin, Weibo, Bilibili, V2EX, WeChat, plus Twitter/Reddit/LinkedIn/GitHub); TIER 2 Chrome stealth (CloakBrowser stealth Chromium + agent-browser CDP for clicks, forms, screenshots, video, cookie login). Triggers: blocked site, bypass bot detection, cloudflare/WAF bypass, scrape, stealth browser, import cookies, fill form, screenshot, play youtube, xiaohongshu, douyin, weibo, bilibili, v2ex, wechat article, podcast transcript. NOT for simple searches (use web-search) or plain fetches (use webfetch)."
3
+ description: "Reaches web pages a plain fetch cannot: renders JS, drives clicks and forms, captures screenshots, holds a login, and gets past WAF blocks through platform-native readers and stealth Chrome. Use for any page work beyond retrieving static text."
4
4
  ---
5
5
 
6
6
  # Ultimate Browsing
7
7
 
8
- Escalation web access for tasks a normal browse or fetch cannot complete. Reach for this skill the moment a page is blocked (WAF / 403 / Cloudflare), needs JS rendering, hides behind a login, or lives on a platform a generic fetcher cannot read. Escalate only when the cheaper tier cannot do the job:
8
+ Web access for everything a plain fetch cannot finish: a page that renders in JS, a click or a form, a screenshot, a login that must persist across pages, or a host that blocks generic fetchers (WAF / 403 / Cloudflare). Start at the cheapest tier that can do the job and climb only when it cannot:
9
9
 
10
- **Tier 1 — insane-search** (headless extraction + WAF bypass) -> **Tier 1.5 — agent-reach** (platform-native APIs, esp. Chinese platforms) -> **Tier 2 — Chrome stealth** (real interaction via CloakBrowser + agent-browser).
10
+ **Tier 1 — insane-search** (headless extraction + WAF bypass) -> **Tier 1.5 — agent-reach** (platform-native APIs, esp. Chinese platforms) -> **Tier 2 — a real browser**: 2a a code-driven kernel browser, 2b Chrome stealth (CloakBrowser + agent-browser) when the page fights back.
11
11
 
12
12
  ## PHASE 0 — ROUTE FIRST (MANDATORY)
13
13
 
@@ -23,11 +23,11 @@ User request
23
23
  +- podcast transcript / stock forum ----------------- TIER 1.5 agent-reach
24
24
  +- Twitter feed / LinkedIn profile / GitHub via CLI - TIER 1.5 agent-reach
25
25
  |
26
- +- Tier 1/1.5 returned empty or partial ------------- TIER 2 Chrome stealth
27
- +- click / fill form / scroll / interact ------------ TIER 2 Chrome stealth
28
- +- screenshot / render / play video ----------------- TIER 2 Chrome stealth
29
- +- login session across pages / inject cookies ------ TIER 2 Chrome stealth
30
- +- test web app / QA / dogfood ---------------------- TIER 2 Chrome stealth
26
+ +- Tier 1/1.5 returned empty or partial ------------- TIER 2 2a kernel browser -> 2b stealth
27
+ +- click / fill form / scroll / interact ------------ TIER 2 2a kernel browser -> 2b stealth
28
+ +- screenshot / render / play video ----------------- TIER 2 2a kernel browser -> 2b stealth
29
+ +- login session across pages / inject cookies ------ TIER 2 2b Chrome stealth (profile + cookies)
30
+ +- test web app / QA / dogfood ---------------------- TIER 2 2a kernel browser -> 2b stealth
31
31
  |
32
32
  +- simple search query ------------------------------ NOT this skill (use web-search)
33
33
  ```
@@ -80,10 +80,25 @@ curl -s "https://www.v2ex.com/api/topics/hot.json" # V2EX public API
80
80
 
81
81
  Routing table, per-platform auth (set `TWITTER_*` env vars, `gh auth login`, a transcription key — only if you have access), rate-limit notes, and known version quirks are in [references/agent-reach/README.md](references/agent-reach/README.md).
82
82
 
83
- ## Tier 2 — Chrome stealth (real interaction)
83
+ ## Tier 2 — a real browser (real interaction)
84
84
 
85
85
  **When**: real interaction is needed (clicks, forms, screenshots, video, persistent login), or Tier 1/1.5 failed.
86
86
 
87
+ ### Tier 2a — kernel browser (default)
88
+
89
+ Drive the page from the code cell you are already in, with no CLI process and no open CDP port. On a Bun >= 1.4 runtime that is `new Bun.WebView()` (`navigate`, `click`, `type`, `evaluate`, `screenshot`, raw `cdp`); elsewhere it is `playwright-core`/`puppeteer-core` against the local Chrome. Snapshots and screenshots come back in-process, so this is the cheapest way to answer "what does the page actually render".
90
+
91
+ ```js
92
+ await using view = new Bun.WebView({ width: 1280, height: 800 })
93
+ await view.navigate(url)
94
+ const title = await view.evaluate("document.title")
95
+ await view.screenshot({ path: "/tmp/page.png" })
96
+ ```
97
+
98
+ Climb to 2b when the site detects automation (Turnstile, FingerprintJS, "unusual traffic"), when the flow needs a persistent logged-in profile or injected cookies, or when the kernel browser cannot reach the page at all.
99
+
100
+ ### Tier 2b — Chrome stealth (blocked or logged-in pages)
101
+
87
102
  CloakBrowser is a stealth Chromium with source-level fingerprint patches that passes Cloudflare Turnstile, FingerprintJS, BrowserScan, and 30+ detectors; agent-browser is the CDP automation CLI that drives it. Both are runtime-installed tools (not vendored here). Full setup, version pins, launch flow, cookie login, and cross-platform notes are in [references/chrome-stealth.md](references/chrome-stealth.md).
88
103
 
89
104
  NEVER clear cookies, cache, or site data (`Network.clearBrowserCookies`, `Storage.clearCookies`, `chrome.browsingData.remove`, "clear browsing data") on the user's real/main browser profile — it wipes their logged-in state everywhere. If the task needs that profile's login state, clone the profile directory first (`rsync -a <profile>/ <tmp-clone>/`) and launch CloakBrowser / agent-browser with the clone as the user-data-dir; run any clearing on the clone only.
@@ -17,22 +17,24 @@ CloakBrowser (stealth Chromium) <- CDP port 9242 -> agent-browser CLI
17
17
 
18
18
  CloakBrowser runs in a dedicated Python venv. Cross-platform: macOS, Linux, and Windows all supported by both tools (use the venv path convention for your OS).
19
19
 
20
+ The venv lives at a fixed path so every session reuses one stealth-Chromium download instead of creating a new venv per working directory, and every command below calls its interpreter by absolute path — no `activate` step to forget.
21
+
20
22
  ```bash
21
23
  # CloakBrowser (MIT wrapper source; separate binary license, pin 0.5.7):
22
- uv venv .cloak-venv --python 3.13
23
- # macOS/Linux: source .cloak-venv/bin/activate Windows: .cloak-venv\Scripts\activate
24
- uv pip install "cloakbrowser==0.5.7"
25
- python -c "import cloakbrowser; cloakbrowser.ensure_binary()" # downloads stealth Chromium on first import
24
+ VENV="$HOME/.agents/cloak-venv" # Windows: %USERPROFILE%\.agents\cloak-venv
25
+ uv venv "$VENV" --python 3.13
26
+ uv pip install --python "$VENV/bin/python" "cloakbrowser==0.5.7"
27
+ "$VENV/bin/python" -c "import cloakbrowser; cloakbrowser.ensure_binary()" # downloads stealth Chromium on first import
26
28
 
27
29
  # agent-browser (Apache-2.0, pin 0.34.0):
28
- npm i -g agent-browser@0.34.0 && agent-browser install
30
+ bun add -g agent-browser@0.34.0 && agent-browser install
29
31
  agent-browser --version # 0.34.0
30
32
  ```
31
33
 
32
34
  Verify CloakBrowser:
33
35
 
34
36
  ```bash
35
- python -c "import cloakbrowser; print(cloakbrowser.__version__, cloakbrowser.CHROMIUM_VERSION, cloakbrowser.binary_info()['installed'])"
37
+ "$VENV/bin/python" -c "import cloakbrowser; print(cloakbrowser.__version__, cloakbrowser.CHROMIUM_VERSION, cloakbrowser.binary_info()['installed'])"
36
38
  # -> 0.5.7 <chromium-version> True
37
39
  ```
38
40
 
@@ -41,8 +43,9 @@ python -c "import cloakbrowser; print(cloakbrowser.__version__, cloakbrowser.CHR
41
43
  NEVER clear cookies, cache, or site data (`Network.clearBrowserCookies`, `Storage.clearCookies`, `chrome.browsingData.remove`, "clear browsing data") on the user's real/main browser profile — it wipes their logged-in state everywhere. If you need that profile's login state, clone it first (`rsync -a <profile>/ <tmp-clone>/`) and launch with the clone as the user-data-dir; run any clearing on the clone only.
42
44
 
43
45
  ```bash
44
- # 1. Launch CloakBrowser with CDP on :9242 (background). With the venv active:
45
- python -c "import asyncio,cloakbrowser; asyncio.run(cloakbrowser.launch_async(headless=False, stealth_args=True, args=['--remote-debugging-port=9242']))" &
46
+ # 1. Launch CloakBrowser with CDP on :9242 (background). cloakbrowser lives only in the venv,
47
+ # so call its interpreter by absolute path — this works in any shell, activated or not:
48
+ "$HOME/.agents/cloak-venv/bin/python" -c "import asyncio,cloakbrowser; asyncio.run(cloakbrowser.launch_async(headless=False, stealth_args=True, args=['--remote-debugging-port=9242']))" &
46
49
 
47
50
  # 2. CloakBrowser launches tabless -> agent-browser would say "No page found".
48
51
  # Open the first tab via CDP before any agent-browser command:
@@ -119,6 +122,6 @@ lsof -ti:9242 | xargs kill -9
119
122
  # agent-browser can't connect:
120
123
  curl -s http://127.0.0.1:9242/json/version | head -5 # empty -> CloakBrowser not running
121
124
  # Update either tool:
122
- uv pip install --upgrade "cloakbrowser==0.5.7" && python -c "import cloakbrowser; cloakbrowser.ensure_binary()"
123
- npm i -g agent-browser@0.34.0
125
+ uv pip install --python "$HOME/.agents/cloak-venv/bin/python" --upgrade "cloakbrowser==0.5.7" && "$HOME/.agents/cloak-venv/bin/python" -c "import cloakbrowser; cloakbrowser.ensure_binary()"
126
+ bun add -g agent-browser@0.34.0
124
127
  ```
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ulw-execute
3
- description: "Execute a Prometheus work plan with Boulder state, evidence ledger updates, worktree discipline, parallel subagents, and Stop-hook continuation. Use after planning when the user says ulw-execute, execute plan, continue plan, resume plan, or asks to run a .omo/plans plan."
3
+ description: "Executes a written Prometheus work plan with Boulder state, evidence ledger, worktree discipline, and parallel subagents. Use when the user says ulw-execute or asks to run a .omo/plans plan."
4
4
  ---
5
5
 
6
6
  ## Codex Harness Tool Compatibility
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ulw-loop
3
- description: Goal-like loop that uses ultrawork mode to decompose work into systematic, evidence-bound steps.
3
+ description: "A goal-like loop that decomposes work into systematic, evidence-bound ultrawork steps. Use when the user wants a goal loop or durable, checkpointed execution."
4
4
  metadata:
5
5
  short-description: Goal-like ultrawork loop for systematic decomposition
6
6
  ---
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ulw-research
3
- description: "Maximum-saturation research orchestration: ALWAYS proposes the final materials first (PDF+DOCX default), then parallel explore+librarian swarms across codebase, web, official docs, and OSS repos — max-roster teammode when the harness has it — with live journaling, a recursive EXPAND loop driven by leads workers return in message text, empirical verification by running code, and a cited synthesis with charts/Mermaid/assets behind a mandatory visual-QA gate. ACTIVATES ONLY on an explicit user demand for research — the word 'ulw-research' in any prefix form, any 'ulw' research wording including combined invocations like 'mass ulw research', 'ultradebate' or 'hyperdebate' research requests, 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."
3
+ description: "Runs maximum-saturation research with a cooperating team, claim-graph gating, and a cited, QA'd deliverable. Use when the user explicitly asks for research or a deep investigation, including any 'ulw' research wording."
4
4
  ---
5
5
 
6
6
  ## Codex Harness Tool Compatibility
@@ -175,13 +175,15 @@ Scaling floor — more angles always justify more workers:
175
175
  | Multi-faceted | 4 | 6 | 2 | 2 | 14 |
176
176
  | Full due diligence | 4 | 6 | 3 | 2 | 15 |
177
177
 
178
+ The browsing column is BINDING, not advisory: when the brief says `Browsing: yes`, the roster names a browsing-worker angle before the first wave launches, and that worker is spawned in the same turn as the rest of the wave. A run that reaches wave 2 with zero browsing workers on a `Browsing: yes` brief has silently downgraded every source to what plain fetch happened to return.
179
+
178
180
  **Disambiguate before you expand.** When the topic names something that could resolve several ways — a product, a person, a codename, a version — the first wave settles WHICH entity before any worker researches its history, benchmarks, or controversies: canonical name, first-party URL or account, whether it exists in the claimed category, and a confidence line. An unresolved entity never becomes a premise in a later wave's spawn message; that is exactly how a run starts inventing facts about something that does not exist.
179
181
 
180
182
  Role protocols — embed the relevant one in each spawn message; every worker gets a unique angle:
181
183
 
182
184
  - **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.
183
185
  - **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.
184
- - **Browsing, 0-3 workers.** Pages plain fetch cannot read (WAF, 403, Cloudflare, dynamic rendering, login): the worker loads the `ultimate-browsing` skill and escalates through its tiers — Tier-1 insane-search engine first (including its Phase-2.5 archive surrogates), then Tier-2 Chrome stealth — rather than abandoning the source. Capture screenshots when visual context matters. **Provenance is part of the claim**: when a source came back with `provenance` of `snapshot` (an archive copy), cite it with its `snapshot_timestamp` and never state it as the current live page; content from a `proxy` route is `untrusted` and needs a second independent route before any claim rests on it. When one blocked territory hides many leads, fan out more browsing subagents in parallel for breadth instead of serializing one worker through them.
186
+ - **Browsing, 1-3 workers on a `Browsing: yes` brief (0 otherwise).** This worker RENDERS pages, it does not re-fetch them: it drives a real browser through whatever the harness provides — the Browser plugin, an agent-browser or playwright skill, or a code-cell browser — and loads the `ultimate-browsing` skill to escalate through its tiers (insane-search engine with its Phase-2.5 archive surrogates, platform-native readers, then Chrome stealth) only when that browser is blocked. Its standing deliverable is a full-page screenshot of every top source plus the rendered text plain fetch could not reach; a worker that returns only fetched text has not done its job. JS-rendered, login-gated, WAF-blocked, and screenshot-bearing sources all belong here rather than in the web lane. **Provenance is part of the claim**: when a source came back with `provenance` of `snapshot` (an archive copy), cite it with its `snapshot_timestamp` and never state it as the current live page; content from a `proxy` route is `untrusted` and needs a second independent route before any claim rests on it. When one blocked territory hides many leads, fan out more browsing subagents in parallel for breadth instead of serializing one worker through them.
185
187
  - **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.
186
188
 
187
189
  Example spawn (codebase axis; librarian, browsing, and repo-dive follow the same contract with their own protocol):
@@ -380,6 +382,7 @@ High-yield combinations: official docs (`site:<docs domain>`), GitHub implementa
380
382
  | Obeying a surrounding "stop exploring" rule mid-research | Authority section — those rules do not bind this mode |
381
383
  | Asking a worker to write journal or session files | Workers are read-only; you journal every return |
382
384
  | Two workers given the same angle | One unique angle per worker, always |
385
+ | A `Browsing: yes` run whose roster carries no browsing worker | The browsing column is binding — name the angle in the brief and spawn it with the first wave, before any lead is chased |
383
386
  | Contested claim settled by judgment | Phase 3 — run code, capture output, verdict |
384
387
  | Deliverable claims without citations | Every claim cites a source or a verification artifact |
385
388
  | Guessing the deliverable format instead of asking | The format gate is unconditional: propose PDF+DOCX plus the domain-fitting alternatives and the template, then wait before wave 1 |
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: visual-qa
3
- description: "MUST USE after building/changing any UI or when asked whether a page, component, or TUI looks right. Rigorous visual QA across web/page, terminal, and paginated-document surfaces. Prefer browser:control-in-app-browser for unauthenticated browser/page QA in Codex, then Playwright/agent-browser/dev-browser. Captures screenshot/TUI evidence with bundled diff scripts, runs design-system/functional and visual-fidelity/CJK reviewer passes, then synthesizes a good/bad verdict. Triggers: visual QA, screenshot/pixel diff, UI looks wrong, reference fidelity, design system check, responsive check, CJK text clipping, TUI alignment, box-drawing drift, PDF page check, deck review, blank or near-empty page, wrong page break."
3
+ description: "Runs rigorous visual QA across web, terminal, and paginated surfaces with screenshot evidence and a verdict. Use for any UI build or change, or when asked whether a page, component, or TUI looks right."
4
4
  ---
5
5
 
6
6
  ## Codex Harness Tool Compatibility
@@ -71,7 +71,7 @@ Before any reviewer sees an image, verify each capture yourself: the file signat
71
71
  ### Web
72
72
 
73
73
  1. Capture a REFERENCE image: the user's mock/target, generated page snapshot, Figma export, source-site capture, or known-good baseline. Save as PNG. If the user provided overview text or annotations, save them next to the image and treat them as part of the reference packet.
74
- 2. Capture the ACTUAL rendered screenshot at the same viewport size. In Codex, when `browser:control-in-app-browser` is available and the page does not need an authenticated user browser session, use that Browser plugin first for navigation, page state inspection, and screenshots. If it is unavailable or lacks the needed capture action, use the project's configured browser tooling (the playwright, agent-browser, or dev-browser skill). Save as PNG. If none is configured or available, install [agent-browser](https://github.com/vercel-labs/agent-browser) (`npm install -g agent-browser && agent-browser install`) and capture with it — see `$SKILL_DIR/references/agent-browser-setup.md` for the full setup, including how to shoot a fixed-viewport screenshot.
74
+ 2. Capture the ACTUAL rendered screenshot at the same viewport size, driving the browser your harness actually has. Where a code cell can reach a browser (`new Bun.WebView()` on a Bun >= 1.4 kernel, otherwise `playwright-core` against the local Chrome), capture in-process: it needs no CLI and returns the PNG path directly. In Codex, `browser:control-in-app-browser` is that in-process surface — use it first unless the page needs an authenticated user browser session. Otherwise use the project's configured browser tooling (the playwright, agent-browser, or dev-browser skill). Save as PNG. If nothing is available, install [agent-browser](https://github.com/vercel-labs/agent-browser) (`bun add -g agent-browser && agent-browser install`) and capture with it — see `$SKILL_DIR/references/agent-browser-setup.md` for the full setup, including how to shoot a fixed-viewport screenshot.
75
75
  3. Run the diff and keep the JSON:
76
76
 
77
77
  ```
@@ -90,7 +90,7 @@ const ulwExecuteCodexCompletion = `When all top-level checkboxes in \`## TODOs\`
90
90
 
91
91
  1. Run the plan's final verification commands.
92
92
  2. Complete the **Global Review and Debugging Gate** before any completion claim, PR creation, PR handoff, branch handoff, or merge:
93
- - Invoke the \`review-work\` skill with the final diff, changed files, user goal, constraints, run command, and verification evidence. All five review lanes must return PASS. A timeout, missing deliverable, ack-only child, \`BLOCKED:\`, or inconclusive lane is a gate failure, not approval.
93
+ - Invoke the \`review-work\` skill with the final diff, changed files, user goal, constraints, run command, and verification evidence. Both review lanes - the manual QA matrix and the gate review - must PASS. A timeout, missing deliverable, ack-only child, \`BLOCKED:\`, or inconclusive lane is a gate failure, not approval.
94
94
  - Each passing review lane binds to the exact full commit SHA it reviewed. Immediately append a durable record to \`.omo/ulw-execute/ledger.jsonl\` with the lane name, full SHA, PASS verdict, and report artifact/source. Before same-SHA reuse after any continuation or compaction, re-read the ledger record and require the exact lane/SHA pair; memory, chat history, or an unstamped report is not coverage. New commits require fresh applicable lane coverage.
95
95
  - Run a debugging-oriented runtime audit even when the review passes: name at least three plausible failure hypotheses for the changed surface, run the distinguishing checks against the actual artifact, and append a separate durable record with the audit name, exact full SHA, verdict, and evidence artifact/source to \`.omo/ulw-execute/ledger.jsonl\`. Reuse it only after re-reading an exact audit/SHA match.
96
96
  - If any review lane or debugging hypothesis fails, invoke the \`debugging\` skill, confirm root cause with runtime evidence, add the minimal failing test or reproduction, fix it, rerun the affected verification, then rerun the Global Review and Debugging Gate.
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- // omo-codex-install:80e794a7ee4705f54dc0c24f45fba696230284b0708f25cc7cb6351c4fc9efcb:99b3484770fe5ac59e452bcf4a2151bc9ead8b2d693f714efd57d371a495cbc3
2
+ // omo-codex-install:80e794a7ee4705f54dc0c24f45fba696230284b0708f25cc7cb6351c4fc9efcb:6a8ebba6a634be0037c1ee2497793afa6027119cfde2e6cf65fb6ed6735f0cad
3
3
  var __defProp = Object.defineProperty;
4
4
  var __returnValue = (v) => v;
5
5
  function __exportSetter(name, newValue) {
@@ -7977,7 +7977,7 @@ var package_default;
7977
7977
  var init_package = __esm(() => {
7978
7978
  package_default = {
7979
7979
  name: "@oh-my-opencode/omo-codex",
7980
- version: "5.0.0-beta.40",
7980
+ version: "5.0.0-beta.43",
7981
7981
  type: "module",
7982
7982
  private: true,
7983
7983
  description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
@@ -8008,6 +8008,7 @@ var init_package = __esm(() => {
8008
8008
  "sync:skills": "node plugin/scripts/sync-skills.mjs"
8009
8009
  },
8010
8010
  dependencies: {
8011
+ "@oh-my-opencode/shared-skills": "workspace:*",
8011
8012
  "@oh-my-opencode/utils": "workspace:*"
8012
8013
  },
8013
8014
  devDependencies: {
@@ -8,12 +8,18 @@
8
8
  ".": {
9
9
  "types": "./index.d.ts",
10
10
  "import": "./index.mjs"
11
+ },
12
+ "./skill-source-filter": {
13
+ "types": "./skill-source-filter.d.ts",
14
+ "import": "./skill-source-filter.mjs"
11
15
  }
12
16
  },
13
17
  "types": "./index.d.ts",
14
18
  "files": [
15
19
  "index.d.ts",
16
20
  "index.mjs",
17
- "skills"
21
+ "skills",
22
+ "skill-source-filter.d.ts",
23
+ "skill-source-filter.mjs"
18
24
  ]
19
25
  }
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ast-grep
3
- description: "Use ast-grep (sg) for AST-aware code search and rewrite across 25 languages. Trigger for structural code matching or deterministic codemods: find every function/call/class/import shaped like X, rewrite console.log to logger.info, strip `as any`, migrate require() to import, find empty catch blocks or missing await, and scan/apply YAML rules. Prefer this over rg/grep when the target is syntax shape rather than text; use rg for string contents, comments, filenames, or regex-style byte searches."
3
+ description: "Searches and rewrites code by AST shape across 25 languages. Use when the target is a syntax pattern (every call/class/import shaped like X, a codemod, a YAML rule) rather than literal text; for plain strings, comments, or filenames, use rg."
4
4
  ---
5
5
 
6
6
  # ast-grep
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: coding-agent-sessions
3
- description: "MUST USE when asked to find, read, list, search, inspect, fetch, export, or reconstruct coding-agent sessions across Codex, Claude Code/Desktop, OpenCode, OMO/Senpi/pi, oh-my-pi (omp), gajae-code (gjc), OpenClaw, Factory Droid, Amp, Gemini/Kimi/Qwen CLIs, Codebuff, Roo/Kilo/Cline, Kodu, Cursor CLI, Aider, Aside browser-agent sessions, or unknown local agent logs. Covers transcripts, session IDs, rollout JSONL, state SQLite, Claude projects/pre-compact histories, OpenCode messages/parts, child/subagent linkage, cwd/model/time/token filters, archives, and cost clues. Expands fuzzy recall into parallel query lanes and first probes known stores so absent platforms are skipped cheaply. Triggers: coding agent sessions, Codex/Claude/OpenCode/OMO/Senpi/pi/oh-my-pi/omp/gajae-code/gjc/OpenClaw/Droid/Amp/Kodu/Cursor/Aider/Aside sessions, transcript search, session history, session ID, read transcript, token usage, subagent sessions, what did I do yesterday, did we already do this."
3
+ description: "Finds, reads, and reconstructs coding-agent sessions across Codex, Claude, OpenCode, OMO/Senpi, and other local agent logs. Use when asked to find or search past sessions, transcripts, or subagent runs, or to recover what an earlier session did."
4
4
  ---
5
5
 
6
6
  # Coding Agent Sessions
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: data-scientist
3
- description: "Expert data processing with a hybrid engine strategy: resident-kernel engines first - DuckDB plus a resident Python stack (Polars/numpy/matplotlib) in persistent js/py eval kernels where the harness has them, bun/uv one-shots elsewhere - and per-action placement judgment (in-memory vs streaming vs remote-in-place). Triggers: 'analyze the data', 'what is in this CSV/parquet/json', 'summarize this', 'group by', 'filter rows', 'sort by', 'join these files', 'merge datasets', 'time series trend', 'compare yesterday and today', 'distribution/histogram', 'correlation', 'clean duplicates', 'handle missing values', 'dataset larger than RAM', 'SQL query on files', 'DataFrame operations', 'chart/plot this data', DuckDB vs Polars selection, quick data exploration CLI. NOT for plain text/code inspection, configs, or tiny inline math."
3
+ description: "Processes and analyzes data with resident-kernel engines (DuckDB, Polars) and one-shot tools. Use for CSV/parquet/JSON analysis, group-by/join/aggregation, time series, distributions, cleaning, or plotting a dataset."
4
4
  ---
5
5
 
6
6
  # Data Scientist: Hybrid-Engine Data Processing
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: debugging
3
- description: "MUST USE for any real runtime debugging across ANY language or binary — crashes, silent failures, wrong responses, stuck processes, memory leaks, async misbehavior, unexplained timing, reverse engineering. Runs a hypothesis-driven loop: form ≥3 hypotheses, investigate in parallel, after 2 failed rounds spawn Oracles from orthogonal angles, confirm root cause, lock with a failing test, fix minimally, QA by actually USING the system, scrub artifacts. The actual HOW lives in `references/` — READ THEM. Triggers: 'debug this', 'why is X not working', 'hanging', 'attach a debugger', 'reverse engineer', 'pwndbg', 'gdb', 'lldb', 'node inspect', 'pdb', 'dlv', 'delve', 'rust-gdb', 'set a breakpoint', 'context window exploded', 'why is the response empty', 'why is this happening', 'trace this bug', 'reproduce and fix', 'silent failure', 'HTTP 200 but empty', 'why did it stop', 'inspect the binary', 'playwright', 'flaky test', 'fails intermittently', 'passes in isolation', 'only fails in CI'."
3
+ description: "Runs a hypothesis-driven debugging loop across any language or binary, escalating to orthogonal oracle angles and locking the fix with a failing test. Use for crashes, silent failures, hangs, wrong responses, memory leaks, async misbehavior, or reverse engineering."
4
4
  ---
5
5
 
6
6
  # Debugging
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: frontend
3
- description: "MUST USE for frontend/web UI/UX/visual work: building, styling, redesigning pages/components, React setup, performance audits, visual QA, taste, and polish. Routes four rulesets: design taste router and brand references; perfection for Playwright/Chromium Lighthouse/Core Web Vitals; ui-ux-db palettes/fonts/guidelines; designpowers personas/accessibility/critique/handoff; plus curl-only lazyweb real-app-screen research and the beui.dev interaction catalog. Triggers: frontend, UI, UX, design, redesign, styling, layout, animation, motion, interaction, micro-interaction, make it feel alive, premium, luxury, minimal, brutalist, Awwwards, DESIGN.md, mockup, React, Lighthouse, accessibility, WCAG, Core Web Vitals, looks generic, make it pretty, like X brand, lazyweb, design research."
3
+ description: "Builds, styles, and polishes web UI and UX. Use for any frontend, page, component, styling, layout, animation, or visual-quality task, or when asked to make an interface look or feel a certain way."
4
4
  ---
5
5
 
6
6
  # Frontend
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: git-master
3
- description: "MUST USE whenever a task needs a commit or git-history investigation. Covers atomic commits, staging, commit-message style, rebase, squash, fixup/autosquash, blame, bisect, reflog, git log -S/-G, and questions like who wrote this or when was this added. Do not use for ordinary code edits unless the user asks for git work."
3
+ description: "Handles git work: atomic commits, rebase, squash, blame, bisect, reflog, and history questions. Use whenever a task needs a commit or a git-history investigation; skip for ordinary code edits."
4
4
  ---
5
5
 
6
6
  # Git Master
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: init-deep
3
- description: "(builtin) Initialize hierarchical AGENTS.md knowledge base"
3
+ description: "Initializes a hierarchical AGENTS.md knowledge base for a project. Use when a repo needs its structure, commands, and conventions documented for agents."
4
4
  ---
5
5
  # /init-deep
6
6
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: lsp-setup
3
- description: "Configure a Language Server (LSP) for a specific language so editor/agent tooling — diagnostics, go-to-definition, find-references, rename — works. Use when you need to: configure LSP, lsp setup, set up or install a language server, fix 'no LSP server configured' / 'server not installed', choose between servers (basedpyright vs pyright vs ty vs ruff), or wire .codex/lsp-client.json / .opencode/lsp.json. 언어서버 설정. Routes by file extension to references/<language>/README.md for the exact builtin server, per-OS install commands (macOS/Linux/Windows), config snippets for both config files, initialization options, alternatives, and troubleshooting. Ships scripts: detect-lsp.ts (scan a project for languages + each server's install/config status) and verify-lsp.ts (run a real diagnostics roundtrip). Covers typescript, python, go, rust, c/c++, java, kotlin, c#/razor, swift, ruby, php, dart, elixir, zig, lua, bash, yaml, terraform, haskell, julia."
3
+ description: "Configures a language server so editor/agent tooling (diagnostics, go-to-definition, references, rename) works. Use when a project needs an LSP installed or wired, or a 'no LSP server configured' error appears."
4
4
  ---
5
5
 
6
6
  # LSP Setup
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: programming
3
- description: "MUST USE for ANY work on .py .pyi .rs .ts .tsx .mts .cts .go files. One philosophy: strict types, modern stacks (Pydantic v2 / serde+thiserror / Zod / gin+sqlc+pgx+slog), modern toolchains (uv+basedpyright+ruff / cargo+clippy+miri / Bun+Biome+tsc / gofumpt+golangci-lint v2+nilaway+go-race), parse-don't-validate, exhaustive match, typed errors, no any/unwrap/panic, 250 LOC ceiling, TDD, consumer-routed logging. Routes to references/{python,rust,typescript,rust-ub,go}/ + references/logging.md. Triggers: write/edit Python/Rust/TypeScript/Go code, new project, gin server, bubbletea TUI, CJK IME, connect-go RPC, sqlc pgx, branded ids, exhaustive match, unsafe Rust, miri, oversized file, refactor, TDD, e2e test, logging, log levels, structured logging, observability, arena, allocator, bumpalo, const fn, const generics, comptime, zero-alloc, bitfield, repr, scopeguard, errdefer, Zig-like, zerocopy, packed struct."
3
+ description: "Applies strict, modern language practice (typed errors, exhaustive match, TDD) for Python, Rust, TypeScript, and Go. Use for work on .py, .rs, .ts, or .go files."
4
4
  ---
5
5
 
6
6
  # Programming
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: refactor
3
- description: "Intelligent refactor command. Triggers: refactor, refactoring, cleanup, restructure, extract, simplify, modernize."
3
+ description: "Guides a refactor, cleanup, or restructure with the right decomposition. Use when the user asks to refactor, simplify, extract, or modernize code."
4
4
  ---
5
5
 
6
6
  export const REFACTOR_TEMPLATE = `# Intelligent Refactor Command
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: remove-ai-slops
3
- description: "Remove AI-generated code smells (slop) from branch changes or an explicit file list. Locks behavior with regression tests FIRST, then runs categorized cleanup via parallel `deep` agents in batches of 5, then verifies with quality gates. Covers 10 slop categories including performance equivalences, excessive complexity (object annotations, if/elif variant chains), and oversized modules (250+ pure LOC with mandatory modular refactoring). MUST USE when the user asks to \"remove slop\", \"clean AI code\", \"deslop\", \"clean up AI-generated code\", \"remove AI slop\", or wants to clean up AI-generated patterns from recent changes. Triggers - \"remove ai slops\", \"clean ai code\", \"deslop\", \"cleanup AI generated\", \"remove AI slop\", \"clean up AI-generated code\", \"strip slop\", \"ai-slop cleanup\"."
3
+ description: "Removes AI-generated code smells from branch changes or an explicit file list behind regression tests. Use when the user asks to clean up, deslop, or remove AI-slop patterns from recent changes."
4
4
  ---
5
5
 
6
6
  # Remove AI Slops Skill