browser-use
Skill5 starsChanged 9 months agoMITView on GitHub
Automates browser interactions for web testing, form filling, screenshots, and data extraction. Use when the user needs to navigate websites, interact with web pages, fill forms, take screenshots, or extract information from web pages.
- Reads credentials
- Installs packages
54 other projects use a version of this, 21 of them edited.
Adopted by
Most recently taken up by
- ton-anywhere/my-favorite-promptstheir own version, first seen Nov 8, 2026
- hermes-max100/browser-harness-customtheir own version, first seen Nov 8, 2026
- n1kben/agentstheir own version, first seen Nov 8, 2026
- nmb1337/dafeiyu-skillstheir own version, first seen Nov 8, 2026
- joe-qai/qa-skillstheir own version, first seen Nov 8, 2026
- cacity/VideoHubedited, first seen Nov 6, 2026
Used with
Projects with it also use context7-efficient, configuring-dapr-pubsub and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
hfzarslanSkillcontext7-efficient
Token-efficient library documentation fetcher using Context7 MCP with 86.8% token savings through intelligent shell pipeline filtering. Fetches code examples, API references, and best practices for JavaScript, Python, Go, Rust, and other libraries. Use when users ask about library documentation, need code examples, want API usage patterns, are learning a new framework, need syntax reference, or troubleshooting with library-specific information. Triggers include questions like "Show me React hooks", "How do I use Prisma", "What's the Next.js routing syntax", or any request for library/framework documentation.
Also in 5 projects that use this
AbdullahMalik17Skillconfiguring-dapr-pubsub
Configures Dapr pub/sub components for event-driven microservices with Kafka or Redis. Use when wiring agent-to-agent communication, setting up event subscriptions, or integrating Dapr sidecars. Covers component configuration, subscription patterns, publishing events, and Kubernetes deployment. NOT when using direct Kafka clients or non-Dapr messaging patterns.
Also in 3 projects that use this
AbdullahMalik17Skilldeploying-cloud-k8s
Deploys applications to cloud Kubernetes (AKS/GKE/DOKS) with CI/CD pipelines. Use when deploying to production, setting up GitHub Actions, troubleshooting deployments. Covers build-time vs runtime vars, architecture matching, and battle-tested debugging.
Also in 3 projects that use this
dycnnnbSkillremote-browser
Controls a cloud browser from a sandboxed remote machine. Use when the agent is running in a sandbox (no GUI) and needs to navigate websites, interact with web pages, fill forms, take screenshots, or expose local dev servers via tunnels.
Also in 3 projects that use this
mjunaidcaSkillbuilding-chatgpt-apps
Guides creation of ChatGPT Apps with interactive widgets using OpenAI Apps SDK and MCP servers. Use when building ChatGPT custom apps with visual UI components, embedded widgets, or rich interactive experiences. Covers widget architecture, MCP server setup with FastMCP, response metadata, and Developer Mode configuration. NOT when building standard MCP servers without widgets (use building-mcp-servers skill instead).
Also in 3 projects that use this
mjunaidcaSkillbuilding-chat-interfaces
Build AI chat interfaces with custom backends, authentication, and context injection. Use when integrating chat UI with AI agents, adding auth to chat, injecting user/page context, or implementing httpOnly cookie proxies. Covers ChatKitServer, useChatKit, and MCP auth patterns. NOT when building simple chatbots without persistence or custom agent integration.
Also in 3 projects that use this
- +6 more from AbdullahMalik17
Other versions54 projects use a version of this.
Word for word · 0
None found.
Edited · 21
- wanikua/boluobobo-ai-court-tutorial★ 2.7k18% same
- cacity/VideoHub★ 18323% same
- kivo360/OmoiOS★ 81100% same
- ulpi-io/browse★ 1523% same
- dglijin-oss/chinese-metaphysics-skills★ 1329% same
- eugenepyvovarov/mcpbundler-agent-skills-marketplace★ 1232% same
- nicholyx/ai-skills★ 616% same
- audibleblink/skills★ 416% same
- mfang0126/openclaw-skills★ 421% same
- dycnnnb/skills★ 229% same
11 more not listed
Wrote their own version · 33
- browser-use/browser-use★ 120ksame name
- jxxghp/MoviePilot★ 12ksame name
- steipete/agent-scripts★ 7.4ksame name
- OpenBMB/PilotDeck★ 5ksame name
- davidondrej/skills★ 4.3ksame name
- xuzhougeng/wisp-science★ 1.1ksame name
- Saik0s/mcp-browser-use★ 970same name
- SirAllap/agentglass★ 347same name
- joe-qai/qa-skills★ 30same name
- AlekseiUL/heisenberg-team★ 17same name
23 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository10 other files it gives its agents.
The file
We split this skill into the rules it gives an agent
7 rules. 0 are common, 3 are distinctive, and 4 are very specific to this project.
0
Common
Most of the 53 edited versions we read keep these.
3
Distinctive
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 39
Interact: Use indices from state to interact (browser-use click 5, browser-use input 3 "text")
- Very specific: line 207
Use a cloud profile with --browser remote --profile <id>:
- Very specific: line 216
Ask the user which local Chrome profile to use (browser-use profile list-local)
- Distinctive: line 217
Ask which domain(s) to sync - do NOT default to syncing the full profile
- Distinctive: line 220
Default behavior: Create a NEW cloud profile for each domain sync.
- Very specific: line 308
Session behavior: All commands without --session use the same "default" session.
- Distinctive: line 401
Always close the browser when done: Run this after completing browser automation:
“Common” is measured: kept by at least 6 in 10 of the 53 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Browser Automation with browser-use CLI
The browser-use command provides fast, persistent browser automation. It maintains browser sessions across commands, enabling complex multi-step workflows.
Installation
# Run without installing (recommended for one-off use)
uvx "browser-use[cli]" open https://example.com
# Or install permanently
uv pip install "browser-use[cli]"
# Install browser dependencies (Chromium)
browser-use installQuick Start
browser-use open https://example.com # Navigate to URL
browser-use state # Get page elements with indices
browser-use click 5 # Click element by index
browser-use type "Hello World" # Type text
browser-use screenshot # Take screenshot
browser-use close # Close browserCore Workflow
- Navigate:
browser-use open <url>- Opens URL (starts browser if needed) - Inspect:
browser-use state- Returns clickable elements with indices - Interact: Use indices from state to interact (
browser-use click 5,browser-use input 3 "text") - Verify:
browser-use stateorbrowser-use screenshotto confirm actions - Repeat: Browser stays open between commands
Browser Modes
browser-use --browser chromium open <url> # Default: headless Chromium
browser-use --browser chromium --headed open <url> # Visible Chromium window
browser-use --browser real open <url> # User's Chrome with login sessions
browser-use --browser remote open <url> # Cloud browser (requires API key)- chromium: Fast, isolated, headless by default
- real: Uses your Chrome with cookies, extensions, logged-in sessions
- remote: Cloud-hosted browser with proxy support (requires BROWSER_USE_API_KEY)
Commands
Navigation
browser-use open <url> # Navigate to URL
browser-use back # Go back in history
browser-use scroll down # Scroll down
browser-use scroll up # Scroll upPage State
browser-use state # Get URL, title, and clickable elements
browser-use screenshot # Take screenshot (outputs base64)
browser-use screenshot path.png # Save screenshot to file
browser-use screenshot --full path.png # Full page screenshotInteractions (use indices from browser-use state)
browser-use click <index> # Click element
browser-use type "text" # Type text into focused element
browser-use input <index> "text" # Click element, then type text
browser-use keys "Enter" # Send keyboard keys
browser-use keys "Control+a" # Send key combination
browser-use select <index> "option" # Select dropdown optionTab Management
browser-use switch <tab> # Switch to tab by index
browser-use close-tab # Close current tab
browser-use close-tab <tab> # Close specific tabJavaScript & Data
browser-use eval "document.title" # Execute JavaScript, return result
browser-use extract "all product prices" # Extract data using LLM (requires API key)Cookies
browser-use cookies get # Get all cookies
browser-use cookies get --url <url> # Get cookies for specific URL
browser-use cookies set <name> <value> # Set a cookie
browser-use cookies set name val --domain .example.com --secure --http-only
browser-use cookies clear # Clear all cookies
browser-use cookies clear --url <url> # Clear cookies for specific URL
browser-use cookies export <file> # Export all cookies to JSON file
browser-use cookies export <file> --url <url> # Export cookies for specific URL
browser-use cookies import <file> # Import cookies from JSON fileWait Conditions
browser-use wait selector "h1" # Wait for element to be visible
browser-use wait selector ".loading" --state hidden # Wait for element to disappear
browser-use wait selector "#btn" --state attached # Wait for element in DOM
browser-use wait text "Success" # Wait for text to appear
browser-use wait selector "h1" --timeout 5000 # Custom timeout in msAdditional Interactions
browser-use hover <index> # Hover over element (triggers CSS :hover)
browser-use dblclick <index> # Double-click element
browser-use rightclick <index> # Right-click element (context menu)Information Retrieval
browser-use get title # Get page title
browser-use get html # Get full page HTML
browser-use get html --selector "h1" # Get HTML of specific element
browser-use get text <index> # Get text content of element
browser-use get value <index> # Get value of input/textarea
browser-use get attributes <index> # Get all attributes of element
browser-use get bbox <index> # Get bounding box (x, y, width, height)Python Execution (Persistent Session)
browser-use python "x = 42" # Set variable
browser-use python "print(x)" # Access variable (outputs: 42)
browser-use python "print(browser.url)" # Access browser object
browser-use python --vars # Show defined variables
browser-use python --reset # Clear Python namespace
browser-use python --file script.py # Execute Python fileThe Python session maintains state across commands. The browser object provides:
browser.url- Current page URLbrowser.title- Page titlebrowser.goto(url)- Navigatebrowser.click(index)- Click elementbrowser.type(text)- Type textbrowser.screenshot(path)- Take screenshotbrowser.scroll()- Scroll pagebrowser.html- Get page HTML
Agent Tasks (Requires API Key)
browser-use run "Fill the contact form with test data" # Run AI agent
browser-use run "Extract all product prices" --max-steps 50Agent tasks use an LLM to autonomously complete complex browser tasks. Requires BROWSER_USE_API_KEY or configured LLM API key (OPENAI_API_KEY, ANTHROPIC_API_KEY, etc).
Session Management
browser-use sessions # List active sessions
browser-use close # Close current session
browser-use close --all # Close all sessionsProfile Management
browser-use profile list-local # List local Chrome profilesBefore opening a real browser (--browser real), always ask the user if they want to use a specific Chrome profile or no profile. Use profile list-local to show available profiles:
browser-use profile list-local
# Output: Default: Person 1 (user@gmail.com)
# Profile 1: Work (work@company.com)
# With a specific profile (has that profile's cookies/logins)
browser-use --browser real --profile "Profile 1" open https://gmail.com
# Without a profile (fresh browser, no existing logins)
browser-use --browser real open https://gmail.com
# Headless mode (no visible window) - useful for cookie export
browser-use --browser real --profile "Default" cookies export /tmp/cookies.jsonEach Chrome profile has its own cookies, history, and logged-in sessions. Choosing the right profile determines whether sites will be pre-authenticated.
Cloud Profiles
Cloud profiles store browser state (cookies) in Browser-Use Cloud, persisting across sessions. Requires BROWSER_USE_API_KEY.
browser-use profile list # List cloud profiles
browser-use profile get <id> # Get profile details
browser-use profile update <id> --name "New" # Rename profile
browser-use profile delete <id> # Delete profileUse a cloud profile with --browser remote --profile <id>:
browser-use --browser remote --profile abc-123 open https://example.comSyncing Cookies to Cloud
⚠️ IMPORTANT: Before syncing cookies from a local browser to the cloud, the agent MUST:
- Ask the user which local Chrome profile to use (
browser-use profile list-local) - Ask which domain(s) to sync - do NOT default to syncing the full profile
- Confirm before proceeding
Default behavior: Create a NEW cloud profile for each domain sync. This ensures clear separation of concerns for cookies. Users can add cookies to existing profiles if needed.
Step 1: List available profiles and cookies
# List local Chrome profiles
browser-use profile list-local
# → Default: Person 1 (user@gmail.com)
# → Profile 1: Work (work@company.com)
# See what cookies are in a profile
browser-use profile cookies "Default"
# → youtube.com: 23
# → google.com: 18
# → github.com: 2Step 2: Sync cookies (three levels of control)
1. Domain-specific sync (recommended default)
browser-use profile sync --from "Default" --domain youtube.com
# Creates new cloud profile: "Chrome - Default (youtube.com)"
# Only syncs youtube.com cookiesThis is the recommended approach - sync only the cookies you need.
2. Full profile sync (use with caution)
browser-use profile sync --from "Default"
# Syncs ALL cookies from the profile⚠️ Warning: This syncs ALL cookies including sensitive data, tracking cookies, session tokens for every site, etc. Only use when the user explicitly needs their entire browser state.
3. Fine-grained control (advanced)
# Export cookies to file
browser-use --browser real --profile "Default" cookies export /tmp/cookies.json
# Manually edit the JSON to keep only specific cookies
# Import to cloud profile
browser-use --browser remote --profile <id> cookies import /tmp/cookies.jsonFor users who need individual cookie-level control.
Step 3: Use the synced profile
browser-use --browser remote --profile <id> open https://youtube.comAdding cookies to existing profiles:
# Sync additional domain to existing profile
browser-use --browser real --profile "Default" cookies export /tmp/cookies.json
browser-use --browser remote --profile <existing-id> cookies import /tmp/cookies.jsonManaging profiles:
browser-use profile update <id> --name "New Name" # Rename
browser-use profile delete <id> # DeleteServer Control
browser-use server status # Check if server is running
browser-use server stop # Stop server
browser-use server logs # View server logsSetup
browser-use install # Install Chromium and system dependenciesGlobal Options
| Option | Description |
--session NAME | Use named session (default: "default") |
--browser MODE | Browser mode: chromium, real, remote |
--headed | Show browser window (chromium mode) |
--profile NAME | Chrome profile (real mode only) |
--json | Output as JSON |
--api-key KEY | Override API key |
Session behavior: All commands without --session use the same "default" session. The browser stays open and is reused across commands. Use --session NAME to run multiple browsers in parallel.
API Key Configuration
Some features (run, extract, --browser remote) require an API key. The CLI checks these locations in order:
--api-keycommand line flagBROWSER_USE_API_KEYenvironment variable~/.config/browser-use/config.jsonfile
To configure permanently:
mkdir -p ~/.config/browser-use
echo '{"api_key": "your-key-here"}' > ~/.config/browser-use/config.jsonExamples
Form Submission
browser-use open https://example.com/contact
browser-use state
# Shows: [0] input "Name", [1] input "Email", [2] textarea "Message", [3] button "Submit"
browser-use input 0 "John Doe"
browser-use input 1 "john@example.com"
browser-use input 2 "Hello, this is a test message."
browser-use click 3
browser-use state # Verify successMulti-Session Workflows
browser-use --session work open https://work.example.com
browser-use --session personal open https://personal.example.com
browser-use --session work state # Check work session
browser-use --session personal state # Check personal session
browser-use close --all # Close both sessionsData Extraction with Python
browser-use open https://example.com/products
browser-use python "
products = []
for i in range(20):
browser.scroll('down')
browser.screenshot('products.png')
"
browser-use python "print(f'Captured {len(products)} products')"Using Real Browser (Logged-In Sessions)
browser-use --browser real open https://gmail.com
# Uses your actual Chrome with existing login sessions
browser-use state # Already logged in!Tips
- Always run
browser-use statefirst to see available elements and their indices - Use
--headedfor debugging to see what the browser is doing - Sessions persist - the browser stays open between commands
- Use
--jsonfor parsing output programmatically - Python variables persist across
browser-use pythoncommands within a session - Real browser mode preserves your login sessions and extensions
- CLI aliases:
bu,browser, andbrowseruseall work identically tobrowser-use
Troubleshooting
Browser won't start?
browser-use install # Install/reinstall Chromium
browser-use server stop # Stop any stuck server
browser-use --headed open <url> # Try with visible windowElement not found?
browser-use state # Check current elements
browser-use scroll down # Element might be below fold
browser-use state # Check againSession issues?
browser-use sessions # Check active sessions
browser-use close --all # Clean slate
browser-use open <url> # Fresh startCleanup
Always close the browser when done. Run this after completing browser automation:
browser-use closeDoes it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

