Allows to interact with web pages by performing actions such as clicking buttons, filling out forms, and navigating links. It works by remote controlling Google Chrome or Chromium browsers using the Chrome DevTools Protocol (CDP). When Claude needs to browse the web, it can use this skill to do so.
70
86%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
Minimal CDP tools for collaborative site exploration.
./scripts/start.js # Isolated reusable profile (default)
./scripts/start.js --profile # Copy your profile into isolated cache
./scripts/start.js --reset-profile # Clear selected cached profile before launchStarts Chrome with remote debugging (default port :9222).
Profile behavior:
~/.cache/agent-web/browser/fresh-profile--profile mode uses: ~/.cache/agent-web/browser/profile-copy:9222 is already used by an unknown instance, start will fail instead of reusing itIf Chrome is installed in a non-standard location, set:
BROWSER_BIN=/path/to/chrome ./scripts/start.jsOptional debug endpoint override:
BROWSER_DEBUG_PORT=9333 ./scripts/start.js./scripts/nav.js https://example.com
./scripts/nav.js https://example.com --newNavigate current tab or open new tab.
./scripts/emulate.js --list
./scripts/emulate.js iphone-14
./scripts/emulate.js pixel-7 --landscape
./scripts/emulate.js --resetSet an active device emulation preference (viewport, DPR, touch, UA) for browser skill commands. Use --reset to clear.
Commands like nav.js, eval.js, pick.js, dismiss-cookies.js, and screenshot.js automatically apply the active preference.
./scripts/eval.js 'document.title'
./scripts/eval.js 'document.querySelectorAll("a").length'
./scripts/eval.js 'JSON.stringify(Array.from(document.querySelectorAll("a")).map(a => ({ text: a.textContent.trim(), href: a.href })).filter(link => !link.href.startsWith("https://")))'Execute JavaScript in active tab (async context). Be careful with string escaping, best to use single quotes.
./scripts/screenshot.js
./scripts/screenshot.js --full-page
./scripts/screenshot.js --device iphone-14
./scripts/screenshot.js --device pixel-7 --full-pageTakes a screenshot and returns a temp file path.
--full-page: captures full document height--device <preset>: temporary mobile emulation for that screenshot only./scripts/pick.js "Click the submit button"Interactive element picker. Click to select, Cmd/Ctrl+Click for multi-select, Enter to finish.
./scripts/dismiss-cookies.js # Accept cookies
./scripts/dismiss-cookies.js --reject # Reject cookies (where possible)Automatically dismisses EU cookie consent dialogs.
Run after navigating to a page:
./scripts/nav.js https://example.com && ./scripts/dismiss-cookies.js./scripts/start.js
./scripts/nav.js https://example.com
./scripts/emulate.js iphone-14
./scripts/nav.js https://example.com # reload with mobile UA
./scripts/dismiss-cookies.js
./scripts/screenshot.js --full-pageAutomatically started by start.js and writes JSONL logs to:
~/.cache/agent-web/logs/YYYY-MM-DD/<targetId>.jsonlManually start:
./scripts/watch.jsTail latest log:
./scripts/logs-tail.js # dump current log and exit
./scripts/logs-tail.js --follow # keep followingSummarize network responses:
./scripts/net-summary.jse6f304f
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.