
Mini Browser
Give your coding agent a local Chrome-backed CLI to browse pages, scrape content, fill forms, screenshot, record screencasts, and run design or accessibility audits without hand-driving a browser.
Overview
mini-browser is an agent skill most often used in Build (also Validate, Ship) that exposes the `mb` browser CLI for screenshots, scraping, forms, screencasts, and design or accessibility audits over Chrome CDP.
Install
npx skills add https://github.com/runablehq/mini-browser --skill mini-browserWhat is this skill?
- Unix-style `mb` commands over Chrome CDP on port 9222 via puppeteer-core
- Setup gate: `which mb` plus `curl` to 9222/json/version before install or `mb-start-chrome`
- Browse, screenshot, scrape text, fill forms, click elements, in-page JS, and screencast recording
- Design audit and accessibility check workflows from the same CLI surface
- Chrome helpers: `mb-start-chrome`, `mb-restart-chrome` with fresh profile and 1024×768 window
- Chrome remote debugging on port 9222
- Default launch window 1024×768 with fresh profile
Adoption & trust: 2.4k installs on skills.sh; 172 GitHub stars; 1/3 security scanners passed (skills.sh audits).
What problem does it solve?
Your agent cannot reliably see or interact with live web pages, so you keep pasting HTML or guessing UI state instead of driving a real browser.
Who is it for?
Solo builders who want repeatable agent browser automation on a machine where Chrome and npm global installs are acceptable.
Skip if: Headless-only CI pipelines without a graphical Chrome, teams that forbid local browser debugging ports, or tasks that need no shell or network access.
When should I use this skill?
Triggers on browse, open a page, take a screenshot, scrape, fill form, click button, web automation, record screen, design audit, or accessibility check.
What do I get? / Deliverables
After setup, the agent runs focused `mb` commands against local Chrome and returns screenshots, scraped text, recordings, or audit findings you can paste into specs, tests, or launch copy.
- Page screenshots and scraped text
- Screencast recordings and in-page script results
- Design audit or accessibility check output from mb workflows
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Browser automation is core agent tooling during implementation, but the same mb commands support validation scrapes and ship-time visual or a11y checks. agent-tooling is the canonical shelf because the skill wires an `mb` CLI and CDP to puppeteer-core for agent-driven web actions.
Where it fits
Screenshot a competitor checkout flow while scoping your own MVP pages.
Click through a staging deploy and scrape visible copy to compare against your spec.
Fill and submit a test form against a third-party signup widget.
Record a screencast of a critical user path before tagging a release.
Run a design or accessibility audit on marketing pages before launch.
How it compares
Use this agent skill with a dedicated `mb` CLI instead of ad-hoc one-off puppeteer scripts typed into chat each session.
Common Questions / FAQ
Who is mini-browser for?
It is for indie developers and small teams using AI coding agents who need dependable browse, scrape, screenshot, and form automation against real Chrome on their workstation.
When should I use mini-browser?
Use it during Validate to capture competitor or landing pages, during Build to verify UI flows and integrations, and during Ship for design audits and accessibility checks before release.
Is mini-browser safe to install?
It requires global npm install, local Chrome with remote debugging, and shell plus network access—review the Security Audits panel on this Prism page before granting those permissions to an agent.
SKILL.md
READMESKILL.md - Mini Browser
# mini-browser (mb) — Browser CLI for Agents `mb` is a browser CLI where each command is a small Unix tool. It talks to Chrome over CDP (port 9222) via puppeteer-core. ## Setup (only if not already available) Setup is only needed when `mb` is not installed or Chrome is not reachable. Run these checks first — if both pass, skip straight to the Command Reference. ### Check if ready ```bash # 1. Is mb installed? which mb && echo "mb: ok" || echo "mb: MISSING" # 2. Is Chrome listening on CDP? curl -sf http://127.0.0.1:9222/json/version > /dev/null && echo "chrome: ok" || echo "chrome: NOT RUNNING" ``` If **both** print "ok", everything is ready — go use `mb` commands directly. ### Install (only if `mb` is missing) ```bash npm install -g @runablehq/mini-browser ``` ### Start Chrome (only if not running) ```bash mb-start-chrome ``` This launches Chrome with `--remote-debugging-port=9222`, a fresh profile, and a 1024×768 window. It no-ops if Chrome is already running. To kill and relaunch: ```bash mb-restart-chrome ``` ### Verify ```bash mb go "https://example.com" && mb text ``` ### Environment Variables | Variable | Default | Description | |---|---|---| | `CHROME_PORT` | `9222` | CDP port | | `CHROME_BIN` | auto-detected | Path to Chrome/Chromium binary | | `CHROME_PID_FILE` | `<scripts>/.chrome-pid` | PID file location | | `CHROME_USER_DATA_DIR` | `<scripts>/.chrome-profile` | Chrome profile directory | ## Command Reference ### Navigation | Command | Description | |---|---| | `mb go <url>` | Navigate to URL (waits for networkidle) | | `mb url` | Print current URL | | `mb back` | Go back | | `mb forward` | Go forward | ### Observation | Command | Description | |---|---| | `mb text [selector]` | Visible text content (default: body) | | `mb shot [file]` | Screenshot to PNG (default: ./shot.png) | | `mb snap` | List interactive elements with coordinates | ### Interaction | Command | Description | |---|---| | `mb click <x> <y>` | Click at coordinates | | `mb type [x y] <text>` | Type text (with coords: selects first) | | `mb fill <k=v...>` | Fill form fields by label/name/placeholder | | `mb key <key...>` | Press keys (Enter, Tab, Meta+a) | | `mb move <x> <y>` | Hover at coordinates | | `mb drag <x1> <y1> <x2> <y2>` | Drag between points | | `mb scroll [dir] [px]` | Scroll (default: down 500) | ### Recording | Command | Description | |---|---| | `mb record start <file>` | Start recording (.webm, .mp4, .gif) | | `mb record stop` | Stop recording and save | | `mb record status` | Check if recording is active | ### Tabs | Command | Description | |---|---| | `mb tab list` | List open tabs | | `mb tab new [url]` | Open new tab, print index | | `mb tab close [n]` | Close tab (default: last) | ### Other | Command | Description | |---|---| | `mb js <code>` | Run JavaScript in page context | | `mb wait <target>` | Wait for ms / selector / networkidle / url:pattern | | `mb audit` | Design audit (palette, typography, contrast, a11y, SEO) | | `mb logs` | Stream console logs (Ctrl+C to stop) | ### Flags | Flag | Default | Description | |---|---|---| | `--timeout <ms>` | 30000 | Command timeout | | `--tab <n>` | 0 | Target tab index | | `--json` | false | Structured JSON output | | `--right` | false | Right-click | | `--double` | false | Double-click | | `--fps <n>` | 30 | Recording frame rate | | `--scale <n>` | 1 | Recording scale factor | ## Usage Patterns ### Observe → Act loop The standard agent loop: snapshot the page, pick an element, act on it. ```bash mb snap