← Back to list
🛠️

dev-browser Checked

Browser automation with persistent named pages via the dev-browser CLI. Use when users ask to nav…
🛠️ Developer Tools skills By SawyerHood Version v1.0.0 Added 2026-09-07 Updated 2026-09-07 Source ↗
7.4Overall rating
2Views
5Downloads
6.6kStars

Installation

🤖 Install via AI

Copy the prompt below and send it to your AI assistant (e.g. Claude Code) — it will follow the instructions and install automatically.

Install the "dev-browser" skill by following the instructions at https://skill123.me/install/dev-browser.
⌨️ Command line install

Run in your terminal — downloads and installs to ~/.claude/skills/.

curl -fsSL https://skill123.me/install/dev-browser.sh | bash
📦 Download ZIP

Download the zip and extract it into your skills directory (e.g. ~/.claude/skills/), then restart your session.

⬇ Download v1.0.0 · 1 KB
📊 Static rating
7.4/10
Trigger
8.0
Structure
8.0
Workflow
4.8
Content
8.0
Engineering
10.0
Security
8.0

Six-dimension rubric with reviewer rationale.

View scorecard ↓
🛡 Dynamic test
—

Not live-tested yet — this skill is rated on static analysis only.

About this skill

Browser automation with persistent named pages via the dev-browser CLI. Use when users ask to navigate websites, fill forms, take screenshots, extract web data, test web apps, log into sites, or automate browser workflows. Trigger phrases include "go to [url]", "click on", "fill out the form", "take a screenshot", "scrape", "automate", "test the website", "log into", "open the browser", or any browser interaction request.

dev-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.

Documentation

Browser automation with persistent named pages via the dev-browser CLI. Use when users ask to navigate websites, fill forms, take screenshots, extract web data, test web apps, log into sites, or automate browser workflows. Trigger phrases include "go to [url]", "click on", "fill out the form", "take a screenshot", "scrape", "automate", "test the website", "log into", "open the browser", or any browser interaction request.

dev-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.

Score breakdown

Trigger
8.0
Description covers What/When with many trigger phrases (navigate, click, scrape, log into), but no When-Not.
Structure
8.0
29-line SKILL.md, appropriately minimal for a wrapper; defers detail to CLI help rather than references.
Workflow
4.8
Tool-wrapper pattern with quick start and gotchas only; no error handling, task workflows, or verification steps.
Content
8.0
Terse and precise; commands are directly runnable; gotcha list is dense and useful.
Engineering
10.0
Frontmatter valid; no local scripts or path references; install instructions self-contained.
Security
8.0
No shipped scripts or injection, but core dependency is a third-party npm package that downloads a binary at first run — supply-chain trust rests entirely on the tool.
Ultra-thin tool wrapper for the dev-browser CLI with a good trigger-rich description and useful gotchas, but provides no workflow depth, error handling, or verification, and depends entirely on an unverifiable third-party npm package that downloads binaries at runtime.