anbeime/chrome-automation
Connect to and control Google Chrome browser using agent-browser with CDP (Chrome DevTools Protocol). Use when the user wants to automate their existing Chrome browser, see browser actions in real-time, or needs to control the Chrome instance they're already using. Handles installation, setup, connecting via remote debugging, and all browser automation tasks with live visual feedback.
npx skills add https://github.com/anbeime/skill --skill chrome-automation
Control the user's Google Chrome browser using agent-browser connected via Chrome DevTools Protocol (CDP). All actions are visible in real-time in the user's browser window.
BEFORE using this skill, ALWAYS run the auto-installation check:
This skill automatically checks and installs all required dependencies without user confirmation. The installation process verifies:
Auto-installation workflow:
# Mac: Run auto-install script
bash ~/.claude/skills/chrome-automation/scripts/auto-install-mac.sh
# Windows: Run auto-install script (PowerShell)
powershell -ExecutionPolicy Bypass -File "$HOME\.claude\skills\chrome-automation\scripts\auto-install-windows.ps1"
The script will:
Critical rules:
Why agent-browser is required:
Run the auto-install script first:
# Mac
bash ~/.claude/skills/chrome-automation/scripts/auto-install-mac.sh
# Windows (PowerShell)
powershell -ExecutionPolicy Bypass -File "$HOME\.claude\skills\chrome-automation\scripts\auto-install-windows.ps1"
The script automatically handles:
IMPORTANT: Use the start-chrome script to preserve login states across sessions
# Mac: Start Chrome with persistent profile (RECOMMENDED)
# This preserves your login states, cookies, and settings
bash ~/.claude/skills/chrome-automation/scripts/start-chrome-mac.sh
# Windows: Start Chrome with persistent profile (PowerShell)
powershell -ExecutionPolicy Bypass -File "$HOME\.claude\skills\chrome-automation\scripts\start-chrome-windows.ps1"
# Use agent-browser with --cdp flag
cd /Users/jyxc-dz-0100272/Documents/agent-browser
AGENT_BROWSER_HOME=/Users/jyxc-dz-0100272/Documents/agent-browser \
./bin/agent-browser --cdp 9222 snapshot -i
What the start-chrome script does:
~/Library/Application Support/Google/Chrome-AutomationCRITICAL: Always show browser state to user after each significant action using screenshots.
--cdp 9222 flagsnapshot -i# Set path variables
export AB_HOME=/Users/jyxc-dz-0100272/Documents/agent-browser
cd $AB_HOME
# Navigate
AGENT_BROWSER_HOME=$AB_HOME ./bin/agent-browser --cdp 9222 open https://example.com
sleep 2
# Get interactive elements
AGENT_BROWSER_HOME=$AB_HOME ./bin/agent-browser --cdp 9222 snapshot -i
# Screenshot to show user
AGENT_BROWSER_HOME=$AB_HOME ./bin/agent-browser --cdp 9222 screenshot /tmp/state.png
# Interact
AGENT_BROWSER_HOME=$AB_HOME ./bin/agent-browser --cdp 9222 fill @e1 "text"
AGENT_BROWSER_HOME=$AB_HOME ./bin/agent-browser --cdp 9222 press Enter
# Capture result
sleep 2
AGENT_BROWSER_HOME=$AB_HOME ./bin/agent-browser --cdp 9222 screenshot /tmp/result.png
Always use the auto-install script - it handles all dependencies automatically:
# Run auto-install script
bash ~/.claude/skills/chrome-automation/scripts/auto-install-mac.sh
What it does:
npm run build:nativeRequirements:
# Run auto-install script (PowerShell)
powershell -ExecutionPolicy Bypass -File "$HOME\.claude\skills\chrome-automation\scripts\auto-install-windows.ps1"
What it does:
npm run build:nativeRequirements:
If you prefer manual installation or need to troubleshoot:
# 1. Clone repository
cd ~/Documents
git clone https://github.com/vercel-labs/agent-browser.git
cd agent-browser
# 2. Install Node dependencies
pnpm install
npx playwright install chromium
# 3. Install Rust (if not installed)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
export PATH="$HOME/.cargo/bin:$PATH"
rustup default stable
# 4. Build native binary
npm run build:native
# 1. Clone repository
Set-Location "$HOME\Documents"
git clone https://github.com/vercel-labs/agent-browser.git
Set-Location agent-browser
# 2. Install Node dependencies
pnpm install
npx playwright install chromium
# 3. Install Rust (if not installed)
# Download from: https://win.rustup.rs/x86_64
# Or use the auto-install script
# 4. Build native binary
npm run build:native
After installation (automatic or manual), verify it works:
# Mac
cd ~/Documents/agent-browser
AGENT_BROWSER_HOME=~/Documents/agent-browser ./bin/agent-browser --version
# Windows (PowerShell)
Set-Location "$HOME\Documents\agent-browser"
$env:AGENT_BROWSER_HOME = "$HOME\Documents\agent-browser"
.\bin\agent-browser.cmd --version
"No binary found for darwin-arm64" or "No binary found for win32-x64":
npm run build:native"cargo: command not found":
export PATH="$HOME/.cargo/bin:$PATH"$env:PATH = "$HOME\.cargo\bin;$env:PATH"rustup default stable and npm run build:native"rustup could not choose a version":
rustup default stablenpm run build:nativeIssue 1: Permission denied when installing Rust (Mac)
When running the Rust installer, you may encounter:
error: could not amend shell profile: '/Users/username/.bash_profile':
could not write rcfile file: Permission denied (os error 13)
Solution:
This error is usually harmless - Rust binaries are still installed successfully to ~/.cargo/bin/. The error only affects automatic PATH configuration in shell profiles.
Fix steps:
# Mac: Set default toolchain manually
/Users/username/.cargo/bin/rustup default stable
# This will download and install:
# - cargo, clippy, rust-docs, rust-std, rustc, rustfmt
Issue 2: Rust installed but cargo not found (Mac)
After Rust installation, running cargo fails with "command not found".
Root cause:
~/.cargo/bin/ but not in current shell's PATHSolution:
# Use full path to set default toolchain
~/.cargo/bin/rustup default stable
# Then build with full path
cd ~/Documents/agent-browser/cli
~/.cargo/bin/cargo build --release
# Or add to PATH for current session
export PATH="$HOME/.cargo/bin:$PATH"
cargo build --release
Issue 3: Rust installation permission errors (Windows)
On Windows, Rust installer may fail with access denied errors.
Solution:
# Run PowerShell as Administrator, then:
# Download and run Rust installer
Invoke-WebRequest -Uri "https://win.rustup.rs/x86_64" -OutFile "$env:TEMP\rustup-init.exe"
& "$env:TEMP\rustup-init.exe" -y
# Set default toolchain
& "$env:USERPROFILE\.cargo\bin\rustup.exe" default stable
# Add to PATH for current session
$env:PATH = "$env:USERPROFILE\.cargo\bin;$env:PATH"
Issue 4: Build fails even after Rust installation
Symptoms:
npm run build:native failsSolution:
# Mac: Build with explicit cargo path
cd ~/Documents/agent-browser/cli
~/.cargo/bin/cargo build --release
# Then copy binary manually
cd ~/Documents/agent-browser
node scripts/copy-native.js
# Windows: Build with explicit cargo path
Set-Location "$HOME\Documents\agent-browser\cli"
& "$env:USERPROFILE\.cargo\bin\cargo.exe" build --release
# Then copy binary manually
Set-Location "$HOME\Documents\agent-browser"
node scripts/copy-native.js
Key Takeaway:
Even if Rust installation shows permission errors, the binaries are usually installed successfully. The main issue is:
rustup default stable with full path~/.cargo/bin to PATHFor detailed troubleshooting, see:
references/setup-mac.mdreferences/setup-windows.mdreferences/troubleshooting.mdUse the start-chrome script to preserve login states across sessions:
# Mac: Start Chrome with persistent profile
bash ~/.claude/skills/chrome-automation/scripts/start-chrome-mac.sh
# Windows (PowerShell):
powershell -ExecutionPolicy Bypass -File "$HOME\.claude\skills\chrome-automation\scripts\start-chrome-windows.ps1"
First time setup (automatic):
~/Library/Application Support/Google/Chrome-Automation (Mac)%USERPROFILE%\AppData\Local\Google\Chrome-Automation (Windows)Subsequent runs:
# Verify connection after starting Chrome
cd /Users/jyxc-dz-0100272/Documents/agent-browser
AGENT_BROWSER_HOME=/Users/jyxc-dz-0100272/Documents/agent-browser \
./bin/agent-browser --cdp 9222 get url
# Check if Chrome already running with debug port
ps aux | grep "remote-debugging-port=9222"
# If yes, connect directly
cd /Users/jyxc-dz-0100272/Documents/agent-browser
AGENT_BROWSER_HOME=/Users/jyxc-dz-0100272/Documents/agent-browser \
./bin/agent-browser --cdp 9222 get url
If you need to start Chrome manually without the script:
# Mac: Start with persistent profile directory
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
--remote-debugging-port=9222 \
--user-data-dir="$HOME/Library/Application Support/Google/Chrome-Automation" &
# Windows (PowerShell):
Start-Process "chrome.exe" -ArgumentList @(
"--remote-debugging-port=9222",
"--user-data-dir=`"$HOME\AppData\Local\Google\Chrome-Automation`""
)
Note: Using --user-data-dir=/tmp/chrome-debug (temporary directory) will NOT preserve login states.
cd /Users/jyxc-dz-0100272/Documents/agent-browser
export AB_HOME=/Users/jyxc-dz-0100272/Documents/agent-browser
# Open search site
AGENT_BROWSER_HOME=$AB_HOME ./bin/agent-browser --cdp 9222 open xiaohongshu.com
sleep 2
# Get elements
AGENT_BROWSER_HOME=$AB_HOME ./bin/agent-browser --cdp 9222 snapshot -i
# Output: textbox "搜索小红书" [ref=e2]
# Fill and search
AGENT_BROWSER_HOME=$AB_HOME ./bin/agent-browser --cdp 9222 fill @e2 "labubu"
AGENT_BROWSER_HOME=$AB_HOME ./bin/agent-browser --cdp 9222 press Enter
# Capture result
sleep 2
AGENT_BROWSER_HOME=$AB_HOME ./bin/agent-browser --cdp 9222 screenshot ~/Desktop/result.png
cd /Users/jyxc-dz-0100272/Documents/agent-browser
export AB_HOME=/Users/jyxc-dz-0100272/Documents/agent-browser
# Navigate
AGENT_BROWSER_HOME=$AB_HOME ./bin/agent-browser --cdp 9222 open https://example.com/form
# Get form fields
AGENT_BROWSER_HOME=$AB_HOME ./bin/agent-browser --cdp 9222 snapshot -i
# Fill form
AGENT_BROWSER_HOME=$AB_HOME ./bin/agent-browser --cdp 9222 fill @e1 "John Doe"
AGENT_BROWSER_HOME=$AB_HOME ./bin/agent-browser --cdp 9222 fill @e2 "[email protected]"
AGENT_BROWSER_HOME=$AB_HOME ./bin/agent-browser --cdp 9222 click @e3
# Verify
sleep 2
AGENT_BROWSER_HOME=$AB_HOME ./bin/agent-browser --cdp 9222 screenshot ~/Desktop/submitted.png
When sites show security verification (QR codes, captchas):
# Take screenshot
AGENT_BROWSER_HOME=$AB_HOME ./bin/agent-browser --cdp 9222 screenshot ~/Desktop/verification.png
# Show user and inform them
echo "Site requires verification - please complete in browser window"
# User completes verification manually
# Check URL after verification
AGENT_BROWSER_HOME=$AB_HOME ./bin/agent-browser --cdp 9222 get url
# Continue workflow
AGENT_BROWSER_HOME=$AB_HOME ./bin/agent-browser --cdp 9222 snapshot -i
MANDATORY: Provide visual feedback after every significant action
After navigation, clicks, or form submissions:
# After any action
AGENT_BROWSER_HOME=$AB_HOME ./bin/agent-browser --cdp 9222 screenshot ~/Desktop/current.png
AGENT_BROWSER_HOME=$AB_HOME ./bin/agent-browser --cdp 9222 get url
# Then use Read tool on screenshot
# Describe what's visible to user
All commands use this format:
cd /Users/jyxc-dz-0100272/Documents/agent-browser
AGENT_BROWSER_HOME=/Users/jyxc-dz-0100272/Documents/agent-browser \
./bin/agent-browser --cdp 9222 <command>
Navigation:
open <url> - Navigate to URLback - Go backreload - Reload pageget url - Get current URLPage Analysis:
snapshot -i - Get interactive elements (RECOMMENDED)get title - Get page titleInteraction:
click @e1 - Click elementfill @e1 "text" - Fill inputpress Enter - Press keyscroll down 500 - ScrollCapture:
screenshot path.png - Screenshotget text @e1 - Get element textJavaScript:
eval "code" - Execute JavaScriptFor complete command reference, see the agent-browser skill at:
/Users/jyxc-dz-0100272/Documents/agent-browser/skills/agent-browser/SKILL.md
"No binary found for darwin-arm64/win32-x64":
# Mac: Run auto-install script - it handles Rust installation
bash ~/.claude/skills/chrome-automation/scripts/auto-install-mac.sh
# Windows: Run auto-install script
powershell -ExecutionPolicy Bypass -File "$HOME\.claude\skills\chrome-automation\scripts\auto-install-windows.ps1"
# Or manually:
# Mac:
# 1. Install Rust: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
# 2. Set toolchain: ~/.cargo/bin/rustup default stable
# 3. Build: cd ~/Documents/agent-browser/cli && ~/.cargo/bin/cargo build --release
# 4. Copy: cd ~/Documents/agent-browser && node scripts/copy-native.js
# Windows:
# 1. Download Rust: https://win.rustup.rs/x86_64
# 2. Set toolchain: & "$env:USERPROFILE\.cargo\bin\rustup.exe" default stable
# 3. Build: cd "$HOME\Documents\agent-browser\cli"; & "$env:USERPROFILE\.cargo\bin\cargo.exe" build --release
# 4. Copy: cd "$HOME\Documents\agent-browser"; node scripts/copy-native.js
"cargo: command not found":
# Mac: Use full path to cargo
~/.cargo/bin/rustup default stable
cd ~/Documents/agent-browser/cli
~/.cargo/bin/cargo build --release
# Windows: Use full path to cargo
& "$env:USERPROFILE\.cargo\bin\rustup.exe" default stable
Set-Location "$HOME\Documents\agent-browser\cli"
& "$env:USERPROFILE\.cargo\bin\cargo.exe" build --release
"rustup could not choose a version":
# Mac: Set default Rust toolchain with full path
~/.cargo/bin/rustup default stable
# Windows: Set default Rust toolchain with full path
& "$env:USERPROFILE\.cargo\bin\rustup.exe" default stable
Rust installation shows permission errors but completes:
# Mac: This is usually harmless - binaries are installed
# Just set default toolchain manually:
~/.cargo/bin/rustup default stable
# Windows: Run installer as Administrator if needed
# Then set default toolchain:
& "$env:USERPROFILE\.cargo\bin\rustup.exe" default stable
"Daemon not found" error:
# Must set AGENT_BROWSER_HOME and run from project directory
cd /Users/jyxc-dz-0100272/Documents/agent-browser
AGENT_BROWSER_HOME=/Users/jyxc-dz-0100272/Documents/agent-browser \
./bin/agent-browser --cdp 9222 <command>
# Chrome needs at least one page open
osascript -e 'tell application "Google Chrome" to open location "https://google.com"'
sleep 2
# Then retry
AGENT_BROWSER_HOME=/Users/jyxc-dz-0100272/Documents/agent-browser \
./bin/agent-browser --cdp 9222 snapshot -i
# Check if Chrome running with debug port
ps aux | grep "remote-debugging-port=9222"
# If not, start it with persistent profile
bash ~/.claude/skills/chrome-automation/scripts/start-chrome-mac.sh
start-chrome-mac.sh or start-chrome-windows.ps1 to preserve login statessleep 2 after page loads10. Handle security - Inform user, wait for manual completion
11. Re-snapshot - Get fresh refs after DOM changes
12. Descriptive paths - Save screenshots with clear names
13. Report state - Describe browser content to user
If you want to reset the automation profile and re-import from your main Chrome:
# Mac: Remove automation profile and restart
rm -rf ~/Library/Application\ Support/Google/Chrome-Automation
bash ~/.claude/skills/chrome-automation/scripts/start-chrome-mac.sh
# Windows (PowerShell): Remove automation profile and restart
Remove-Item -Recurse -Force "$HOME\AppData\Local\Google\Chrome-Automation"
powershell -ExecutionPolicy Bypass -File "$HOME\.claude\skills\chrome-automation\scripts\start-chrome-windows.ps1"
| Platform | Automation Profile Location |
|----------|----------------------------|
| Mac | ~/Library/Application Support/Google/Chrome-Automation |
| Windows | %USERPROFILE%\AppData\Local\Google\Chrome-Automation |
This profile is separate from your daily Chrome, so automation activities won't affect your main browser.
Take anbeime/chrome-automation 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 npm, npx.
Without those the skill loads but fails at the first command.