From browser-buddy
Browser automation using the agent-browser CLI. Use when the user needs to interact with websites, navigate pages, fill forms, click buttons, take screenshots, scrape data, test web apps, do visual regression, or automate any browser-based task. Triggers include "open a website", "fill out a form", "scrape this page", "take a screenshot", "test this URL", "log in to a site", or "automate browser actions".
How this skill is triggered — by the user, by Claude, or both
Slash command
/browser-buddy:browser-buddyThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Drives a real Chrome instance via the vendored `agent-browser` CLI (a native Rust binary that talks to Chrome over the Chrome DevTools Protocol). Use it whenever the user wants something done in a browser, including navigation, clicking, typing, scraping, screenshotting, video recording, or testing a web app.
Drives a real Chrome instance via the vendored agent-browser CLI (a native Rust binary that talks to Chrome over the Chrome DevTools Protocol). Use it whenever the user wants something done in a browser, including navigation, clicking, typing, scraping, screenshotting, video recording, or testing a web app.
Bun is the only external system dependency. The agent-browser binary is a workspace dependency of this plugin.
# Once, from the agent-skills repo root:
bun install
# Once, to download Chrome for Testing (skipped automatically if you already
# have a compatible Chrome, Brave, Playwright, or Puppeteer install):
bin/browser-buddy install
All commands in this skill are invoked through bin/browser-buddy rather than a globally-installed binary. The wrapper resolves the vendored agent-browser binary by walking up to the nearest node_modules/.bin/agent-browser.
You do not feed CSS selectors to browser-buddy. You first ask it for a snapshot of the page's accessibility tree, which returns elements pre-labeled with refs like @e1, @e7, @e23. Then you act on those refs.
bin/browser-buddy open https://example.com
bin/browser-buddy snapshot -i # -i = interactive elements only
# inspect the output, find @e3 = the search input
bin/browser-buddy fill @e3 "browser automation"
bin/browser-buddy snapshot -i # re-snapshot: the page changed
bin/browser-buddy click @e8 # @e8 = the submit button in the new tree
Refs are valid only against the snapshot they came from. Anything that mutates the DOM (navigation, clicks that open menus, async content loads) invalidates them. Re-snapshot after every meaningful interaction. Stale refs return Ref not found.
When you need raw control, fall back to find (semantic locators by role/text/label/testid) or eval (arbitrary JavaScript). Prefer refs first; they keep token usage low.
Every command runs against a browser session. Without --session <name> you get a default shared session. Pass --session work or --session scrape-target to isolate cookies, storage, and tabs. Save and restore login state with bin/browser-buddy state save state.json and bin/browser-buddy state load state.json. Treat state files as secrets; never commit them. Full detail in references/sessions.md.
Append --json to any read-style command (snapshot, get, is, cookies, network requests) to get machine-parseable output. Pair with jq when scripting.
bin/browser-buddy snapshot -i --json | jq '.elements[] | select(.role=="button")'
references/commands.md — the full command surface (navigation, interaction, get, find, wait, network, tabs, frames, dialogs, mouse, settings, eval, state, debug)references/snapshot-refs.md — deeper dive on the snapshot/ref model and how to keep refs freshreferences/sessions.md — sessions, state save/load, persistent profiles, credential handlingreferences/recording.md — screenshots, full-page captures, PDF export, video recordingtemplates/navigate-and-screenshot.sh — minimal capture flowtemplates/form-fill.sh — snapshot, fill, submit, verifytemplates/authenticated-flow.sh — log in once, save state, reuse on later runsclick, form submission, route changes, or anything that loads content.--headed if the user wants to watch.--session will share cookies and tabs. Name the session when isolation matters..gitignore. Delete after use if the work is short-lived.wait --load networkidle or wait --fn rather than fighting the default.bin/browser-buddy screenshot ./out.jpg and you get a real JPEG. To keep PNG output (for lossless regression diffing, transparency, or icon work), either use a .png file extension or pass the wrapper-only --png flag.snapshot -i filters to interactive elements. If you can't find what you need, re-run without -i, or scope with -s <selector>.If the task is a one-line curl or a static fetch, just use curl/wget. Reach for browser-buddy when the page needs JavaScript execution, form interaction, login state, or visual capture.
Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub arbiterhq/agent-skills --plugin browser-buddy