lazycodex-ai 5.0.0-beta.40 → 5.0.0-beta.42
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/cli/index.js +21 -15
- package/dist/cli-node/index.js +21 -15
- package/package.json +1 -1
- package/packages/lsp-daemon/dist/cli.js +11 -6
- package/packages/lsp-daemon/dist/client.js +11 -6
- package/packages/lsp-daemon/dist/index.js +11 -6
- package/packages/lsp-tools-mcp/dist/cli.js +11 -6
- package/packages/lsp-tools-mcp/dist/lsp/manager.js +11 -6
- package/packages/lsp-tools-mcp/dist/mcp.js +11 -6
- package/packages/lsp-tools-mcp/dist/tools.js +11 -6
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
- 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/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
- package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +3 -3
- package/packages/omo-codex/plugin/components/lsp/dist/cli.js +11 -6
- package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
- 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/teammode/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
- 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/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
- 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 +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
- package/packages/omo-codex/plugin/hooks/subagent-stop-checking-ulw-execute-continuation.json +1 -1
- package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/package-lock.json +12 -12
- package/packages/omo-codex/plugin/package.json +1 -1
- package/packages/omo-codex/plugin/scripts/sync-skills.mjs +6 -18
- package/packages/omo-codex/plugin/skills/ast-grep/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/data-scientist/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/debugging/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/frontend/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/git-master/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/init-deep/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/lsp-setup/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/programming/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/refactor/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/remove-ai-slops/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/review-work/SKILL.md +99 -417
- package/packages/omo-codex/plugin/skills/ultimate-browsing/ATTRIBUTION.md +1 -1
- package/packages/omo-codex/plugin/skills/ultimate-browsing/SKILL.md +24 -9
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/chrome-stealth.md +13 -10
- package/packages/omo-codex/plugin/skills/ulw-execute/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +5 -2
- package/packages/omo-codex/plugin/skills/visual-qa/SKILL.md +2 -2
- package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +1 -1
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +3 -2
- package/packages/shared-skills/package.json +7 -1
- package/packages/shared-skills/skills/ast-grep/SKILL.md +1 -1
- package/packages/shared-skills/skills/coding-agent-sessions/SKILL.md +1 -1
- package/packages/shared-skills/skills/data-scientist/SKILL.md +1 -1
- package/packages/shared-skills/skills/debugging/SKILL.md +1 -1
- package/packages/shared-skills/skills/frontend/SKILL.md +1 -1
- package/packages/shared-skills/skills/git-master/SKILL.md +1 -1
- package/packages/shared-skills/skills/init-deep/SKILL.md +1 -1
- package/packages/shared-skills/skills/lsp-setup/SKILL.md +1 -1
- package/packages/shared-skills/skills/programming/SKILL.md +1 -1
- package/packages/shared-skills/skills/refactor/SKILL.md +1 -1
- package/packages/shared-skills/skills/remove-ai-slops/SKILL.md +1 -1
- package/packages/shared-skills/skills/review-work/SKILL.md +99 -417
- package/packages/shared-skills/skills/ultimate-browsing/ATTRIBUTION.md +1 -1
- package/packages/shared-skills/skills/ultimate-browsing/SKILL.md +24 -9
- package/packages/shared-skills/skills/ultimate-browsing/references/chrome-stealth.md +13 -10
- package/packages/shared-skills/skills/ulw-execute/SKILL.md +1 -1
- package/packages/shared-skills/skills/ulw-plan/SKILL.md +1 -1
- package/packages/shared-skills/skills/ulw-research/SKILL.md +5 -2
- 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
|
-
(`
|
|
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: "
|
|
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
|
-
|
|
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
|
|
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
|
|
27
|
-
+- click / fill form / scroll / interact ------------ TIER 2
|
|
28
|
-
+- screenshot / render / play video ----------------- TIER 2
|
|
29
|
-
+- login session across pages / inject cookies ------ TIER 2 Chrome stealth
|
|
30
|
-
+- test web app / QA / dogfood ---------------------- TIER 2
|
|
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 —
|
|
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
|
-
|
|
23
|
-
|
|
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
|
-
|
|
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).
|
|
45
|
-
|
|
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
|
-
|
|
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: "
|
|
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
|
## ABSOLUTE RULE: YOU ARE AN ORCHESTRATOR — NEVER THE IMPLEMENTER
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ulw-plan
|
|
3
|
-
description: "
|
|
3
|
+
description: "Explore-first planning consultant that writes one decision-complete work plan before coding. Use only on an explicit user request for the ulw-plan workflow or a plan before implementation; it never self-activates on a bare ulw run."
|
|
4
4
|
metadata:
|
|
5
5
|
short-description: Explore-first planning consultant that waits for your okay before planning
|
|
6
6
|
---
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ulw-research
|
|
3
|
-
description: "
|
|
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,
|
|
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):
|
|
@@ -381,6 +383,7 @@ High-yield combinations: official docs (`site:<docs domain>`), GitHub implementa
|
|
|
381
383
|
| Obeying a surrounding "stop exploring" rule mid-research | Authority section — those rules do not bind this mode |
|
|
382
384
|
| Asking a worker to write journal or session files | Workers are read-only; you journal every return |
|
|
383
385
|
| Two workers given the same angle | One unique angle per worker, always |
|
|
386
|
+
| 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 |
|
|
384
387
|
| Contested claim settled by judgment | Phase 3 — run code, capture output, verdict |
|
|
385
388
|
| Deliverable claims without citations | Every claim cites a source or a verification artifact |
|
|
386
389
|
| 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: "
|
|
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
|
# Visual QA - Dual-Oracle Web and TUI Verification
|
|
@@ -49,7 +49,7 @@ Before any reviewer sees an image, verify each capture yourself: the file signat
|
|
|
49
49
|
### Web
|
|
50
50
|
|
|
51
51
|
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.
|
|
52
|
-
2. Capture the ACTUAL rendered screenshot at the same viewport size
|
|
52
|
+
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.
|
|
53
53
|
3. Run the diff and keep the JSON:
|
|
54
54
|
|
|
55
55
|
```
|