steipete/agent-scripts/skills/browser-use/SKILL.md
browser-use
Existing Chrome automation: Chrome plugin first; OpenClaw extension-backed mcporter fallback.
- Source repository stars
- 6,508
- Declared platforms
- 0
- Static risk flags
- 2
- Last source update
- 2026-08-04
- Source checked
- 2026-08-05
Decision brief
What it does—and where it fits
Use this for browser tasks against the existing Chrome session.
Not for
- Tasks that require unconfirmed production actions or broad system permissions.
- Environments where the pinned source and install steps cannot be inspected.
Compatibility matrix
Platform support, with evidence labels
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
Inspect first. Install second.
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/steipete/agent-scripts --skill "skills/browser-use"Inspect the Agent Skill "browser-use" from https://github.com/steipete/agent-scripts/blob/4ed372659859acc16d632f8d99a8ad219996ec25/skills/browser-use/SKILL.md at commit 4ed372659859acc16d632f8d99a8ad219996ec25. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
What the source asks the agent to do
- 01
Route
1. If the Codex Chrome or Chrome [Internal] plugin is callable in the current session, use its bundled Chrome-control skill. 2. Otherwise use the mcporter chrome-devtools route below.
If the Codex Chrome or Chrome [Internal] plugin is callable in the current session, use its bundled Chrome-control skill.Otherwise use the mcporter chrome-devtools route below.1. If the Codex Chrome or Chrome [Internal] plugin is callable in the current session, use its bundled Chrome-control skill. 2. Otherwise use the mcporter chrome-devtools route below. - 02
Prompt-free OpenClaw relay
Current mcporter main can replace chrome-devtools-mcp --autoConnect with the paired OpenClaw extension relay. This keeps the real Chrome profile while avoiding Chrome's blocking Allow remote debugging? dialog.
Resolve and verify the unpacked extension directory before presenting it:In the real Chrome profile, open chrome://extensions, enable DeveloperStart or reach the OpenClaw gateway/browser service, then generate and paste - 03
Relay proof
After sharing a controlled tab, prove read and write access through the normal --autoConnect definition:
listpages shows the explicitly shared real-profile tab, not an isolatednavigation and evaluation return the proof URL from that tab.Chrome does not show the blocking Allow remote debugging? dialog. - 04
Check MCP
The attach-alert recovery below is only for the direct/legacy --autoConnect path when the extension relay is unavailable. During an OpenClaw relay proof, do not click Allow remote debugging?; its appearance means the rewrite did not apply.
The attach-alert recovery below is only for the direct/legacy --autoConnect path when the extension relay is unavailable. During an OpenClaw relay proof, do not click Allow remote debugging?; its appearance means the re…listpages must show the user's real open tabs. If it shows a blank/default isolated Chrome, stop and say reattach failed.If the call appears to hang while Chrome shows an auth/attach/update prompt, handle the attach alert before falling back. Prefer Peekaboo to press an explicit Chrome Allow button when visible; otherwise wait for the hum… - 05
If the UI shows Chrome "Allow remote debugging?", click only the visible Allow button.
"$PB" click --coords , --json mcporter call chrome-devtools.listpages --args '{}' --output text bash mcporter daemon restart mcporter call chrome-devtools.listpages --args '{}' --output text bash
"$PB" click --coords , --json mcporter call chrome-devtools.listpages --args '{}' --output text bash mcporter daemon restart mcporter call chrome-devtools.listpages --args '{}' --output text bash
Permission review
Static risk signals and limitations
Runs scripts
The documentation asks the agent to run terminal commands or scripts.
pnpm installRuns scripts
The documentation asks the agent to run terminal commands or scripts.
pnpm buildNetwork access
The documentation includes network, browsing, or remote request actions.
MCPORTER_CHROME_DEVTOOLS_RELAY_URL="http://127.0.0.1:$relay_port" \Network access
The documentation includes network, browsing, or remote request actions.
-args '{"url":"https://example.com/?mcporter-relay-proof=1"}' --output textEvidence record
Why each signal appears
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 86/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 6,508 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Provenance and original SKILL.md
- Repository
- steipete/agent-scripts
- Skill path
- skills/browser-use/SKILL.md
- Commit
- 4ed372659859acc16d632f8d99a8ad219996ec25
- License
- MIT
- Collected
- 2026-08-05
- Default branch
- main
View the original SKILL.md
Browser Use
Use this for browser tasks against the existing Chrome session.
Config repair details live in mcporter-config.md.
Route
- If the Codex
ChromeorChrome [Internal]plugin is callable in the current session, use its bundled Chrome-control skill. - Otherwise use the mcporter
chrome-devtoolsroute below.
Bundled or installed on disk does not mean available; the plugin must be callable in the active session. Both routes must use the user's existing Chrome profile.
For the mcporter fallback, use this target:
mcporter call chrome-devtools.<tool>
Most login-heavy sites fail in isolated profiles because fresh sessions trigger captcha, device checks, or missing SSO/extension state. Strongly prefer the existing Chrome profile for any website that needs login.
Never use chrome-isolated, Playwright, Puppeteer, the Codex in-app browser, AppleScript, osascript, GUI scripting, or macOS open for browser control unless the user explicitly asks for an isolated/new browser.
Screenshot/live UI bugs require this existing-Chrome path. curl, source
inspection, Worker smoke tests, or local Playwright are supporting proof only;
do not treat them as equivalent when the user showed a rendered browser problem
or the page may depend on login/profile state.
Prompt-free OpenClaw relay
Current mcporter main can replace chrome-devtools-mcp --autoConnect with the
paired OpenClaw extension relay. This keeps the real Chrome profile while
avoiding Chrome's blocking Allow remote debugging? dialog.
Use this route when the OpenClaw checkout and extension are available:
The examples use an installed openclaw command. If it is absent, run the
same arguments as pnpm -s openclaw ... from ~/Projects/openclaw.
-
Resolve and verify the unpacked extension directory before presenting it:
extension_dir="$(openclaw browser extension path)" if [ ! -f "$extension_dir/manifest.json" ]; then extension_dir="$HOME/Projects/openclaw/extensions/browser/chrome-extension" fi test -f "$extension_dir/manifest.json" printf '%s\n' "$extension_dir"A source checkout may report an unstaged
dist/extensions/...path. Never hand that path to the user unlessmanifest.jsonexists. The verified source fallback is~/Projects/openclaw/extensions/browser/chrome-extension. -
In the real Chrome profile, open
chrome://extensions, enable Developer mode, choose Load unpacked, and select the verified directory. Use Peekaboo for UI automation or give the user the exact verified path. -
Start or reach the OpenClaw gateway/browser service, then generate and paste the pairing string with
openclaw browser extension pair. Pairing strings contain a host-local secret: never print one in chat or tool output. For automated local pairing, extractpairingStringfrom--jsondirectly intopbcopy, paste only into the confirmed OpenClaw popup, and clear the clipboard immediately afterward. -
Run
openclaw browser status --browser-profile chrome --jsonto activate the browser sidecar when necessary. The extension popup must say Connected to OpenClaw. Share one controlled tab; success moves it into the orange OpenClaw tab group. -
Confirm the mcporter definition is still the normal auto-connect form:
mcporter config get chrome-devtools # Transport should include: chrome-devtools-mcp ... --autoConnectDo not manually replace the server definition with a token-bearing command. mcporter reads
~/.openclaw/credentials/browser-extension-relay.secret, probes the relay, and rewrites the child arguments in memory. -
Use a mcporter build that contains the relay rewrite. When testing current source rather than the installed binary:
cd "$HOME/Projects/mcporter" pnpm install pnpm build node dist/cli.js --versionCall that
node dist/cli.jsentry point for the proof; an older globalmcporterbinary does not prove currentmain.
The default relay URL is http://127.0.0.1:18799. A custom gateway port can
produce a different relay port; read relayPort from
openclaw browser extension pair --json and pass only the non-secret URL:
relay_port=18799 # replace with the reported relayPort when non-default
MCPORTER_CHROME_DEVTOOLS_RELAY_URL="http://127.0.0.1:$relay_port" \
mcporter call chrome-devtools.list_pages --args '{}' --output text
If OpenClaw uses a custom OPENCLAW_STATE_DIR, pass the same variable to
mcporter so it can find the relay secret. Never display the secret itself.
Relay proof
After sharing a controlled tab, prove read and write access through the normal
--autoConnect definition:
mcporter call chrome-devtools.list_pages --args '{}' --output text
mcporter call chrome-devtools.navigate_page \
--args '{"url":"https://example.com/?mcporter-relay-proof=1"}' --output text
mcporter call chrome-devtools.evaluate_script \
--args '{"function":"() => ({title: document.title, href: location.href})"}' \
--output text
Success requires all of the following:
list_pagesshows the explicitly shared real-profile tab, not an isolated blank Chrome.- navigation and evaluation return the proof URL from that tab.
- Chrome does not show the blocking Allow remote debugging? dialog.
- Chrome may show the dismissible "OpenClaw" started debugging this browser banner with a Cancel button. That banner is expected; Cancel revokes the tab share and is not the MCP attach alert.
If the blocking remote-debugging dialog appears while the extension is paired,
treat the relay rewrite as failed. Check the mcporter binary, relay URL, shared
tab, secret location, and relay reachability before clicking anything. Do not
count a fallback --autoConnect attachment as success for this flow.
Check MCP
The attach-alert recovery below is only for the direct/legacy --autoConnect
path when the extension relay is unavailable. During an OpenClaw relay proof,
do not click Allow remote debugging?; its appearance means the rewrite did
not apply.
mcporter list chrome-devtools --schema
mcporter call chrome-devtools.list_pages --args '{}' --output text
list_pages must show the user's real open tabs. If it shows a blank/default isolated Chrome, stop and say reattach failed.
If the call appears to hang while Chrome shows an auth/attach/update prompt, handle the attach alert before falling back. Prefer Peekaboo to press an explicit Chrome Allow button when visible; otherwise wait for the human. Do not restart daemons or kill MCP processes just because the first output is slow.
Tested attach-prompt recovery:
PB="${PEEKABOO_BIN:-$HOME/bin/peekaboo}"
[ -x "$PB" ] || PB="$(command -v peekaboo)"
"$PB" permissions status --json
"$PB" see --app frontmost --path /tmp/chrome-attach.png --json --annotate
# If the UI shows Chrome "Allow remote debugging?", click only the visible Allow button.
"$PB" click --coords <allow_x>,<allow_y> --json
mcporter call chrome-devtools.list_pages --args '{}' --output text
Use coordinates from the current Peekaboo snapshot, not stale notes. Success means list_pages returns the user's real Chrome tabs.
Attach-alert rule: when the current snapshot clearly shows Chrome asking to
allow DevTools/MCP/browser automation attachment, click the visible Allow
button once, then rerun list_pages. If the button is not visible or the prompt
is ambiguous, stop and ask; do not silently switch to Playwright/Puppeteer.
If list_pages fails with DevToolsActivePort, ask the user to restart Chrome or the DevTools bridge, then retry once:
mcporter daemon restart
mcporter call chrome-devtools.list_pages --args '{}' --output text
If it still fails, stop and say Chrome DevTools MCP is unavailable. Do not use AppleScript.
Avoid noisy recovery loops. Repeated MCP/browser restarts can trigger reconnect/login prompts and alerts. Try once, then pause and choose a quieter path.
Typical Flow
# pick the page id from list_pages
mcporter call chrome-devtools.select_page --args '{"pageId":9}' --output text
# inspect page
mcporter call chrome-devtools.take_snapshot --args '{}' --output text
# navigate selected page
mcporter call chrome-devtools.navigate_page --args '{"url":"https://example.com"}' --output text
# click an element uid from the latest snapshot
mcporter call chrome-devtools.click --args '{"uid":"1_38","includeSnapshot":true}' --output text
# type/fill
mcporter call chrome-devtools.fill --args '{"uid":"1_13","value":"text","includeSnapshot":true}' --output text
# run JS, keep secrets out of output
mcporter call chrome-devtools.evaluate_script --args '{"function":"() => document.title"}' --output json
Use take_snapshot before actions and use current uid values only. Avoid take_screenshot unless visual layout matters.
Live UI Proof
For screenshot regressions, deployed dashboard checks, or anything where the rendered browser is the bug:
mcporter call chrome-devtools.list_pages --args '{}' --output text
mcporter call chrome-devtools.select_page --args '{"pageId":9}' --output text
mcporter call chrome-devtools.navigate_page --args '{"url":"https://example.com"}' --output text
mcporter call chrome-devtools.take_snapshot --args '{}' --output text
mcporter call chrome-devtools.evaluate_script --args '{"function":"() => document.body.innerText"}' --output json
Use the existing logged-in/profile-bearing tab set. If browser automation is unavailable, report that as a verification gap instead of substituting isolated browser tooling.
Secret Handling
Never print tokens/passwords from page DOM, network logs, or inputs. For token checks, return shape only: present/absent, length, status code, account/org name.
Alternatives
Compare before choosing
prowler-cloud/prowler
postgresql-indexing
PostgreSQL indexing best practices for Prowler: index design, partial indexes, partitioned table indexing, EXPLAIN ANALYZE validation, concurrent operations, monitoring, and maintenance. Trigger: When creating or modifying PostgreSQL indexes, analyzing query performance with EXPLAIN, debugging slow queries, reviewing index usage statistics, reindexing, dropping indexes, or working with partitioned table indexes. Also trigger when discussing index strategies, partial indexes, or index maintenance
HKUDS/Vibe-Trading
strategy-generate
Create, modify, and optimize quantitative trading strategies, then backtest and evaluate them.
alirezarezvani/claude-skills
quality-manager-qms-iso13485
ISO 13485 Quality Management System implementation and maintenance for medical device organizations. Provides QMS design, documentation control, internal auditing, CAPA management, and certification support. Use when working with medical device quality systems, preparing for ISO 13485 audits, managing regulatory compliance documentation, setting up corrective actions, or building audit preparation programs. Useful for quality management, audit preparation, regulatory compliance, medical device d
respira-press/agent-skills-wordpress
design-system-synthesizer
Use when the user says 'build a design system for my site', 'extract design tokens', 'capture my brand', or 'build my style guide', or after a rebrand. Reads representative pages, theme files, and media to extract logo, colors, typography, spacing, and components, then writes a visible style-guide page.