About dev-browser
dev-browser is a CLI for developers who need browser automation through short Puppeteer scripts. A warm daemon and persistent named pages let browser sessions carry across runs.
Key features
- 01Control Chrome with Puppeteer scripts
- 02Keep named pages across runs
- 03Capture interactive ARIA snapshots
Use cases
- 01Open a page and inspect its structure
- 02Locate and click elements from a snapshot
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ sawyerhood/ dev-browser --skill dev-browserAfter installing, type/dev-browserin Claude Code to confirm it loaded.
Details
From the project READMEdev-browser
CLI for controlling a real Chrome with short Puppeteer scripts. One warm daemon; named pages persist between runs.
npm install -g dev-browser # bun add -g dev-browser works too; the first run downloads the binary if the install script was blocked
dev-browser install # only if the first run says "No Chrome found"
Run dev-browser --help (full guide; dev-browser help <topic> for one section) before non-trivial work. Quick start:
dev-browser <<'EOF'
const page = await browser.getPage("main"); // named page persists across runs
await page.goto("https://example.com"); // default waitUntil: domcontentloaded
await page.snapshot({ interactive: true }) // ARIA tree with refs; last expression is printed
EOF
dev-browser -e 'const p = await browser.getPage("main"); await p.click("ref/e6"); await p.waitForLoad(); p.url()'
Gotchas: end lines with semicolons (a line starting with ( continues the previous one); return an object as
({ a, b }); page.click never waits (use waitForSelector first); page names are per browser (--headless and
headed are separate Chromes and profiles); refs reset on navigation — re-snapshot; file paths resolve against your cwd
(uploadFile, screenshot/pdf path); do not run parallel dev-browser calls against the same named page.