Web browser automation with AI-optimized snapshots for claude-flow agents
npx skills add https://github.com/spencermarx/open-code-review --skill browser
Web browser automation using agent-browser with AI-optimized snapshots. Reduces context by 93% using element refs (@e1, @e2) instead of full DOM.
# 1. Navigate to page
agent-browser open <url>
# 2. Get accessibility tree with element refs
agent-browser snapshot -i # -i = interactive elements only
# 3. Interact using refs from snapshot
agent-browser click @e2
agent-browser fill @e3 "text"
# 4. Re-snapshot after page changes
agent-browser snapshot -i
| Command | Description |
|---------|-------------|
| open <url> | Navigate to URL |
| back | Go back |
| forward | Go forward |
| reload | Reload page |
| close | Close browser |
| Command | Description |
|---------|-------------|
| snapshot | Full accessibility tree |
| snapshot -i | Interactive elements only (buttons, links, inputs) |
| snapshot -c | Compact (remove empty elements) |
| snapshot -d 3 | Limit depth to 3 levels |
| screenshot [path] | Capture screenshot (base64 if no path) |
| Command | Description |
|---------|-------------|
| click <sel> | Click element |
| fill <sel> <text> | Clear and fill input |
| type <sel> <text> | Type with key events |
| press <key> | Press key (Enter, Tab, etc.) |
| hover <sel> | Hover element |
| select <sel> <val> | Select dropdown option |
| check/uncheck <sel> | Toggle checkbox |
| scroll <dir> [px] | Scroll page |
| Command | Description |
|---------|-------------|
| get text <sel> | Get text content |
| get html <sel> | Get innerHTML |
| get value <sel> | Get input value |
| get attr <sel> <attr> | Get attribute |
| get title | Get page title |
| get url | Get current URL |
| Command | Description |
|---------|-------------|
| wait <selector> | Wait for element |
| wait <ms> | Wait milliseconds |
| wait --text "text" | Wait for text |
| wait --url "pattern" | Wait for URL |
| wait --load networkidle | Wait for load state |
| Command | Description |
|---------|-------------|
| --session <name> | Use isolated session |
| session list | List active sessions |
# Get refs from snapshot
agent-browser snapshot -i
# Output: button "Submit" [ref=e2]
# Use ref to interact
agent-browser click @e2
agent-browser click "#submit"
agent-browser fill ".email-input" "[email protected]"
agent-browser find role button click --name "Submit"
agent-browser find label "Email" fill "[email protected]"
agent-browser find testid "login-btn" click
agent-browser open https://example.com/login
agent-browser snapshot -i
agent-browser fill @e2 "[email protected]"
agent-browser fill @e3 "password123"
agent-browser click @e4
agent-browser wait --url "**/dashboard"
agent-browser open https://example.com/contact
agent-browser snapshot -i
agent-browser fill @e1 "John Doe"
agent-browser fill @e2 "[email protected]"
agent-browser fill @e3 "Hello, this is my message"
agent-browser click @e4
agent-browser wait --text "Thank you"
agent-browser open https://example.com/products
agent-browser snapshot -i
# Iterate through product refs
agent-browser get text @e1 # Product name
agent-browser get text @e2 # Price
agent-browser get attr @e3 href # Link
# Session 1: Navigator
agent-browser --session nav open https://example.com
agent-browser --session nav state save auth.json
# Session 2: Scraper (uses same auth)
agent-browser --session scrape state load auth.json
agent-browser --session scrape open https://example.com/data
agent-browser --session scrape snapshot -i
All browser operations are available as MCP tools with browser/ prefix:
browser/openbrowser/snapshotbrowser/clickbrowser/fillbrowser/screenshot# Store successful patterns
npx @claude-flow/cli memory store --namespace browser-patterns --key "login-flow" --value "snapshot->fill->click->wait"
# Retrieve before similar task
npx @claude-flow/cli memory search --query "login automation"
# Pre-browse hook (get context)
npx @claude-flow/cli hooks pre-edit --file "browser-task.ts"
# Post-browse hook (record success)
npx @claude-flow/cli hooks post-task --task-id "browse-1" --success true
-i flag - Gets only interactive elements, smaller outputToolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.
Use this skill to query your Google NotebookLM notebooks directly from Claude Code for source-grounded, citation-backed answers from Gemini. Browser automation, library management, persistent auth. Drastically reduced hallucinations through document-only responses.
Complete browser automation with Playwright. Auto-detects dev servers, writes clean test scripts to /tmp. Test pages, fill forms, take screenshots, check responsive design, validate UX, test login flows, check links, automate any browser task. Use when user wants to test websites, automate browser interactions, validate web functionality, or perform any browser-based testing.
Automate Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify, etc.) using agent-browser via Chrome DevTools Protocol. Use when the user needs to interact with an Electron app, automate a desktop app, connect to a running app, control a native app, or test an Electron application. Triggers include "automate Slack app", "control VS Code", "interact with Discord app", "test this Electron app", "connect to desktop app", or any task requiring automation of a native Electron application.
Use when the task requires automating a real browser from the terminal (navigation, form filling, snapshots, screenshots, data extraction, UI-flow debugging) via `playwright-cli` or the bundled wrapper script.
Use when the user explicitly asks for a desktop or system screenshot (full screen, specific app or window, or a pixel region), or when tool-specific capture capabilities are unavailable and an OS-level capture is needed.
A fast Rust-based headless browser automation CLI with Node.js fallback that enables AI agents to navigate, click, type, and snapshot pages via structured commands.
| 所有联网操作必须通过此 skill 处理,包括:搜索、网页抓取、登录后操作、动态页面交互等。 触发场景:用户要求搜索信息、查看网页内容、访问需要登录的网站、操作网页界面、抓取社交媒体内容(小红书、微博、推特等)、读取动态渲染页面、以及任何需要真实浏览器环境的网络任务。
Take spencermarx/browser from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference npx.
Without those the skill loads but fails at the first command.