Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Build or adapt a local browser/CDP harness to drive and inspect a web, IDE, or Electron UI. Use for local UI verification, screenshots, accessibility snapshots, perf profiles, visual diffs, or reproducing UI bugs.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | -8% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 6% | 0% |
| case-14 | ✗→✓ | ▲ Improved | -10% | 0% |
| case-22 | ✗→✓ | ▲ Improved | 3% | 0% |
| case-05 | ✓→✗ | ▼ Worse | -59% | 0% |
Use local browser automation to verify UI behavior with evidence. First reuse the repo's own Playwright, browser, or Electron harness if it exists; otherwise assemble a temporary local harness around the app's dev server or Chromium debug port.
verify-this.data-* selectors over coordinates.Use the repo's installed browser tooling when possible. If the repo already has Playwright, a minimal one-off probe looks like:
javascriptimport { chromium } from "playwright"; const browser = await chromium.launch(); const page = await browser.newPage({ viewport: { width: 1280, height: 800 } }); await page.goto("http://127.0.0.1:<port>"); await page.getByRole("button", { name: /submit/i }).click(); await page.screenshot({ path: "/tmp/ui-harness-after.png", fullPage: true }); await browser.close();
Do not add Playwright as a project dependency just for this probe unless the user asks. Prefer existing dev dependencies or external browser tools already available in the environment.
For Electron or a Chromium app launched with --remote-debugging-port=<port>, connect over CDP:
javascriptimport { chromium } from "playwright"; const browser = await chromium.connectOverCDP("http://127.0.0.1:<debug-port>"); const pages = browser.contexts().flatMap((context) => context.pages()); let page; for (const candidate of pages) { if (await candidate.locator("<app-root-selector>").count()) { page = candidate; break; } } if (!page) { console.log(await Promise.all(pages.map(async (p) => ({ title: await p.title(), url: p.url(), })))); throw new Error("No matching app page found"); } await page.screenshot({ path: "/tmp/ui-harness-cdp.png", fullPage: true }); await browser.close();
Replace <app-root-selector> with a stable marker from the current repo, such as a root app node, landmark, or product-specific data-* attribute.
Use raw CDP only when higher-level browser APIs are insufficient:
When multiple app windows/tabs share a debug port:
Other measured skills in the registry, with their headline benchmark lift.