{
  "schemaVersion": "1.0",
  "item": {
    "slug": "browser-use",
    "name": "Browser Use",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/ShawnPana/browser-use",
    "canonicalUrl": "https://clawhub.ai/ShawnPana/browser-use",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/browser-use",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=browser-use",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/browser-use"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/browser-use",
    "agentPageUrl": "https://openagent3.xyz/skills/browser-use/agent",
    "manifestUrl": "https://openagent3.xyz/skills/browser-use/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/browser-use/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Browser Automation with browser-use CLI",
        "body": "The browser-use command provides fast, persistent browser automation. It maintains browser sessions across commands, enabling complex multi-step workflows."
      },
      {
        "title": "Prerequisites",
        "body": "Before using this skill, browser-use must be installed and configured. Run diagnostics to verify:\n\nbrowser-use doctor\n\nFor more information, see https://github.com/browser-use/browser-use/blob/main/browser_use/skill_cli/README.md"
      },
      {
        "title": "Core Workflow",
        "body": "Navigate: browser-use open <url> - Opens URL (starts browser if needed)\nInspect: browser-use state - Returns clickable elements with indices\nInteract: Use indices from state to interact (browser-use click 5, browser-use input 3 \"text\")\nVerify: browser-use state or browser-use screenshot to confirm actions\nRepeat: Browser stays open between commands"
      },
      {
        "title": "Browser Modes",
        "body": "browser-use --browser chromium open <url>      # Default: headless Chromium\nbrowser-use --browser chromium --headed open <url>  # Visible Chromium window\nbrowser-use --browser real open <url>          # Real Chrome (no profile = fresh)\nbrowser-use --browser real --profile \"Default\" open <url>  # Real Chrome with your login sessions\nbrowser-use --browser remote open <url>        # Cloud browser\n\nchromium: Fast, isolated, headless by default\nreal: Uses a real Chrome binary. Without --profile, uses a persistent but empty CLI profile at ~/.config/browseruse/profiles/cli/. With --profile \"ProfileName\", copies your actual Chrome profile (cookies, logins, extensions)\nremote: Cloud-hosted browser with proxy support"
      },
      {
        "title": "Essential Commands",
        "body": "# Navigation\nbrowser-use open <url>                    # Navigate to URL\nbrowser-use back                          # Go back\nbrowser-use scroll down                   # Scroll down (--amount N for pixels)\n\n# Page State (always run state first to get element indices)\nbrowser-use state                         # Get URL, title, clickable elements\nbrowser-use screenshot                    # Take screenshot (base64)\nbrowser-use screenshot path.png           # Save screenshot to file\n\n# Interactions (use indices from state)\nbrowser-use click <index>                 # Click element\nbrowser-use type \"text\"                   # Type into focused element\nbrowser-use input <index> \"text\"          # Click element, then type\nbrowser-use keys \"Enter\"                  # Send keyboard keys\nbrowser-use select <index> \"option\"       # Select dropdown option\n\n# Data Extraction\nbrowser-use eval \"document.title\"         # Execute JavaScript\nbrowser-use get text <index>              # Get element text\nbrowser-use get html --selector \"h1\"      # Get scoped HTML\n\n# Wait\nbrowser-use wait selector \"h1\"            # Wait for element\nbrowser-use wait text \"Success\"           # Wait for text\n\n# Session\nbrowser-use sessions                      # List active sessions\nbrowser-use close                         # Close current session\nbrowser-use close --all                   # Close all sessions\n\n# AI Agent\nbrowser-use -b remote run \"task\"          # Run agent in cloud (async by default)\nbrowser-use task status <id>              # Check cloud task progress"
      },
      {
        "title": "Navigation & Tabs",
        "body": "browser-use open <url>                    # Navigate to URL\nbrowser-use back                          # Go back in history\nbrowser-use scroll down                   # Scroll down\nbrowser-use scroll up                     # Scroll up\nbrowser-use scroll down --amount 1000     # Scroll by specific pixels (default: 500)\nbrowser-use switch <tab>                  # Switch to tab by index\nbrowser-use close-tab                     # Close current tab\nbrowser-use close-tab <tab>              # Close specific tab"
      },
      {
        "title": "Page State",
        "body": "browser-use state                         # Get URL, title, and clickable elements\nbrowser-use screenshot                    # Take screenshot (outputs base64)\nbrowser-use screenshot path.png           # Save screenshot to file\nbrowser-use screenshot --full path.png    # Full page screenshot"
      },
      {
        "title": "Interactions",
        "body": "browser-use click <index>                 # Click element\nbrowser-use type \"text\"                   # Type text into focused element\nbrowser-use input <index> \"text\"          # Click element, then type text\nbrowser-use keys \"Enter\"                  # Send keyboard keys\nbrowser-use keys \"Control+a\"              # Send key combination\nbrowser-use select <index> \"option\"       # Select dropdown option\nbrowser-use hover <index>                 # Hover over element (triggers CSS :hover)\nbrowser-use dblclick <index>              # Double-click element\nbrowser-use rightclick <index>            # Right-click element (context menu)\n\nUse indices from browser-use state."
      },
      {
        "title": "JavaScript & Data",
        "body": "browser-use eval \"document.title\"         # Execute JavaScript, return result\nbrowser-use get title                     # Get page title\nbrowser-use get html                      # Get full page HTML\nbrowser-use get html --selector \"h1\"      # Get HTML of specific element\nbrowser-use get text <index>              # Get text content of element\nbrowser-use get value <index>             # Get value of input/textarea\nbrowser-use get attributes <index>        # Get all attributes of element\nbrowser-use get bbox <index>              # Get bounding box (x, y, width, height)"
      },
      {
        "title": "Cookies",
        "body": "browser-use cookies get                   # Get all cookies\nbrowser-use cookies get --url <url>       # Get cookies for specific URL\nbrowser-use cookies set <name> <value>    # Set a cookie\nbrowser-use cookies set name val --domain .example.com --secure --http-only\nbrowser-use cookies set name val --same-site Strict  # SameSite: Strict, Lax, or None\nbrowser-use cookies set name val --expires 1735689600  # Expiration timestamp\nbrowser-use cookies clear                 # Clear all cookies\nbrowser-use cookies clear --url <url>     # Clear cookies for specific URL\nbrowser-use cookies export <file>         # Export all cookies to JSON file\nbrowser-use cookies export <file> --url <url>  # Export cookies for specific URL\nbrowser-use cookies import <file>         # Import cookies from JSON file"
      },
      {
        "title": "Wait Conditions",
        "body": "browser-use wait selector \"h1\"            # Wait for element to be visible\nbrowser-use wait selector \".loading\" --state hidden  # Wait for element to disappear\nbrowser-use wait selector \"#btn\" --state attached    # Wait for element in DOM\nbrowser-use wait text \"Success\"           # Wait for text to appear\nbrowser-use wait selector \"h1\" --timeout 5000  # Custom timeout in ms"
      },
      {
        "title": "Python Execution",
        "body": "browser-use python \"x = 42\"               # Set variable\nbrowser-use python \"print(x)\"             # Access variable (outputs: 42)\nbrowser-use python \"print(browser.url)\"   # Access browser object\nbrowser-use python --vars                 # Show defined variables\nbrowser-use python --reset                # Clear Python namespace\nbrowser-use python --file script.py       # Execute Python file\n\nThe Python session maintains state across commands. The browser object provides:\n\nbrowser.url, browser.title, browser.html — page info\nbrowser.goto(url), browser.back() — navigation\nbrowser.click(index), browser.type(text), browser.input(index, text), browser.keys(keys) — interactions\nbrowser.screenshot(path), browser.scroll(direction, amount) — visual\nbrowser.wait(seconds), browser.extract(query) — utilities"
      },
      {
        "title": "Agent Tasks",
        "body": "Remote Mode Options\n\nWhen using --browser remote, additional options are available:\n\n# Specify LLM model\nbrowser-use -b remote run \"task\" --llm gpt-4o\nbrowser-use -b remote run \"task\" --llm claude-sonnet-4-20250514\n\n# Proxy configuration (default: us)\nbrowser-use -b remote run \"task\" --proxy-country uk\n\n# Session reuse\nbrowser-use -b remote run \"task 1\" --keep-alive        # Keep session alive after task\nbrowser-use -b remote run \"task 2\" --session-id abc-123 # Reuse existing session\n\n# Execution modes\nbrowser-use -b remote run \"task\" --flash       # Fast execution mode\nbrowser-use -b remote run \"task\" --wait        # Wait for completion (default: async)\n\n# Advanced options\nbrowser-use -b remote run \"task\" --thinking    # Extended reasoning mode\nbrowser-use -b remote run \"task\" --no-vision   # Disable vision (enabled by default)\n\n# Using a cloud profile (create session first, then run with --session-id)\nbrowser-use session create --profile <cloud-profile-id> --keep-alive\n# → returns session_id\nbrowser-use -b remote run \"task\" --session-id <session-id>\n\n# Task configuration\nbrowser-use -b remote run \"task\" --start-url https://example.com  # Start from specific URL\nbrowser-use -b remote run \"task\" --allowed-domain example.com     # Restrict navigation (repeatable)\nbrowser-use -b remote run \"task\" --metadata key=value             # Task metadata (repeatable)\nbrowser-use -b remote run \"task\" --skill-id skill-123             # Enable skills (repeatable)\nbrowser-use -b remote run \"task\" --secret key=value               # Secret metadata (repeatable)\n\n# Structured output and evaluation\nbrowser-use -b remote run \"task\" --structured-output '{\"type\":\"object\"}'  # JSON schema for output\nbrowser-use -b remote run \"task\" --judge                 # Enable judge mode\nbrowser-use -b remote run \"task\" --judge-ground-truth \"expected answer\""
      },
      {
        "title": "Task Management",
        "body": "browser-use task list                     # List recent tasks\nbrowser-use task list --limit 20          # Show more tasks\nbrowser-use task list --status finished   # Filter by status (finished, stopped)\nbrowser-use task list --session <id>      # Filter by session ID\nbrowser-use task list --json              # JSON output\n\nbrowser-use task status <task-id>         # Get task status (latest step only)\nbrowser-use task status <task-id> -c      # All steps with reasoning\nbrowser-use task status <task-id> -v      # All steps with URLs + actions\nbrowser-use task status <task-id> --last 5  # Last N steps only\nbrowser-use task status <task-id> --step 3  # Specific step number\nbrowser-use task status <task-id> --reverse # Newest first\n\nbrowser-use task stop <task-id>           # Stop a running task\nbrowser-use task logs <task-id>           # Get task execution logs"
      },
      {
        "title": "Cloud Session Management",
        "body": "browser-use session list                  # List cloud sessions\nbrowser-use session list --limit 20       # Show more sessions\nbrowser-use session list --status active  # Filter by status\nbrowser-use session list --json           # JSON output\n\nbrowser-use session get <session-id>      # Get session details + live URL\nbrowser-use session get <session-id> --json\n\nbrowser-use session stop <session-id>     # Stop a session\nbrowser-use session stop --all            # Stop all active sessions\n\nbrowser-use session create                          # Create with defaults\nbrowser-use session create --profile <id>           # With cloud profile\nbrowser-use session create --proxy-country uk       # With geographic proxy\nbrowser-use session create --start-url https://example.com\nbrowser-use session create --screen-size 1920x1080\nbrowser-use session create --keep-alive\nbrowser-use session create --persist-memory\n\nbrowser-use session share <session-id>              # Create public share URL\nbrowser-use session share <session-id> --delete     # Delete public share"
      },
      {
        "title": "Tunnels",
        "body": "browser-use tunnel <port>           # Start tunnel (returns URL)\nbrowser-use tunnel <port>           # Idempotent - returns existing URL\nbrowser-use tunnel list             # Show active tunnels\nbrowser-use tunnel stop <port>      # Stop tunnel\nbrowser-use tunnel stop --all       # Stop all tunnels"
      },
      {
        "title": "Session Management",
        "body": "browser-use sessions                      # List active sessions\nbrowser-use close                         # Close current session\nbrowser-use close --all                   # Close all sessions"
      },
      {
        "title": "Profile Management",
        "body": "Local Chrome Profiles (--browser real)\n\nbrowser-use -b real profile list          # List local Chrome profiles\nbrowser-use -b real profile cookies \"Default\"  # Show cookie domains in profile\n\nCloud Profiles (--browser remote)\n\nbrowser-use -b remote profile list            # List cloud profiles\nbrowser-use -b remote profile list --page 2 --page-size 50\nbrowser-use -b remote profile get <id>        # Get profile details\nbrowser-use -b remote profile create          # Create new cloud profile\nbrowser-use -b remote profile create --name \"My Profile\"\nbrowser-use -b remote profile update <id> --name \"New\"\nbrowser-use -b remote profile delete <id>\n\nSyncing\n\nbrowser-use profile sync --from \"Default\" --domain github.com  # Domain-specific\nbrowser-use profile sync --from \"Default\"                      # Full profile\nbrowser-use profile sync --from \"Default\" --name \"Custom Name\" # With custom name"
      },
      {
        "title": "Server Control",
        "body": "browser-use server logs                   # View server logs"
      },
      {
        "title": "Exposing Local Dev Servers",
        "body": "Use when you have a local dev server and need a cloud browser to reach it.\n\nCore workflow: Start dev server → create tunnel → browse the tunnel URL remotely.\n\n# 1. Start your dev server\nnpm run dev &  # localhost:3000\n\n# 2. Expose it via Cloudflare tunnel\nbrowser-use tunnel 3000\n# → url: https://abc.trycloudflare.com\n\n# 3. Now the cloud browser can reach your local server\nbrowser-use --browser remote open https://abc.trycloudflare.com\nbrowser-use state\nbrowser-use screenshot\n\nNote: Tunnels are independent of browser sessions. They persist across browser-use close and can be managed separately. Cloudflared must be installed — run browser-use doctor to check."
      },
      {
        "title": "Authenticated Browsing with Profiles",
        "body": "Use when a task requires browsing a site the user is already logged into (e.g. Gmail, GitHub, internal tools).\n\nCore workflow: Check existing profiles → ask user which profile and browser mode → browse with that profile. Only sync cookies if no suitable profile exists.\n\nBefore browsing an authenticated site, the agent MUST:\n\nAsk the user whether to use real (local Chrome) or remote (cloud) browser\nList available profiles for that mode\nAsk which profile to use\nIf no profile has the right cookies, offer to sync (see below)\n\nStep 1: Check existing profiles\n\n# Option A: Local Chrome profiles (--browser real)\nbrowser-use -b real profile list\n# → Default: Person 1 (user@gmail.com)\n# → Profile 1: Work (work@company.com)\n\n# Option B: Cloud profiles (--browser remote)\nbrowser-use -b remote profile list\n# → abc-123: \"Chrome - Default (github.com)\"\n# → def-456: \"Work profile\"\n\nStep 2: Browse with the chosen profile\n\n# Real browser — uses local Chrome with existing login sessions\nbrowser-use --browser real --profile \"Default\" open https://github.com\n\n# Cloud browser — uses cloud profile with synced cookies\nbrowser-use --browser remote --profile abc-123 open https://github.com\n\nThe user is already authenticated — no login needed.\n\nNote: Cloud profile cookies can expire over time. If authentication fails, re-sync cookies from the local Chrome profile.\n\nStep 3: Syncing cookies (only if needed)\n\nIf the user wants to use a cloud browser but no cloud profile has the right cookies, sync them from a local Chrome profile.\n\nBefore syncing, the agent MUST:\n\nAsk which local Chrome profile to use\nAsk which domain(s) to sync — do NOT default to syncing the full profile\nConfirm before proceeding\n\nCheck what cookies a local profile has:\n\nbrowser-use -b real profile cookies \"Default\"\n# → youtube.com: 23\n# → google.com: 18\n# → github.com: 2\n\nDomain-specific sync (recommended):\n\nbrowser-use profile sync --from \"Default\" --domain github.com\n# Creates new cloud profile: \"Chrome - Default (github.com)\"\n# Only syncs github.com cookies\n\nFull profile sync (use with caution):\n\nbrowser-use profile sync --from \"Default\"\n# Syncs ALL cookies — includes sensitive data, tracking cookies, every session token\n\nOnly use when the user explicitly needs their entire browser state.\n\nFine-grained control (advanced):\n\n# Export cookies to file, manually edit, then import\nbrowser-use --browser real --profile \"Default\" cookies export /tmp/cookies.json\nbrowser-use --browser remote --profile <id> cookies import /tmp/cookies.json\n\nUse the synced profile:\n\nbrowser-use --browser remote --profile <id> open https://github.com"
      },
      {
        "title": "Running Subagents",
        "body": "Use cloud sessions to run autonomous browser agents in parallel.\n\nCore workflow: Launch task(s) with run → poll with task status → collect results → clean up sessions.\n\nSession = Agent: Each cloud session is a browser agent with its own state\nTask = Work: Jobs given to an agent; an agent can run multiple tasks sequentially\nSession lifecycle: Once stopped, a session cannot be revived — start a new one\n\nLaunching Tasks\n\n# Single task (async by default — returns immediately)\nbrowser-use -b remote run \"Search for AI news and summarize top 3 articles\"\n# → task_id: task-abc, session_id: sess-123\n\n# Parallel tasks — each gets its own session\nbrowser-use -b remote run \"Research competitor A pricing\"\n# → task_id: task-1, session_id: sess-a\nbrowser-use -b remote run \"Research competitor B pricing\"\n# → task_id: task-2, session_id: sess-b\nbrowser-use -b remote run \"Research competitor C pricing\"\n# → task_id: task-3, session_id: sess-c\n\n# Sequential tasks in same session (reuses cookies, login state, etc.)\nbrowser-use -b remote run \"Log into example.com\" --keep-alive\n# → task_id: task-1, session_id: sess-123\nbrowser-use task status task-1  # Wait for completion\nbrowser-use -b remote run \"Export settings\" --session-id sess-123\n# → task_id: task-2, session_id: sess-123 (same session)\n\nManaging & Stopping\n\nbrowser-use task list --status finished      # See completed tasks\nbrowser-use task stop task-abc               # Stop a task (session may continue if --keep-alive)\nbrowser-use session stop sess-123            # Stop an entire session (terminates its tasks)\nbrowser-use session stop --all               # Stop all sessions\n\nMonitoring\n\nTask status is designed for token efficiency. Default output is minimal — only expand when needed:\n\nModeFlagTokensUse WhenDefault(none)LowPolling progressCompact-cMediumNeed full reasoningVerbose-vHighDebugging actions\n\n# For long tasks (50+ steps)\nbrowser-use task status <id> -c --last 5   # Last 5 steps only\nbrowser-use task status <id> -v --step 10  # Inspect specific step\n\nLive view: browser-use session get <session-id> returns a live URL to watch the agent.\n\nDetect stuck tasks: If cost/duration in task status stops increasing, the task is stuck — stop it and start a new agent.\n\nLogs: browser-use task logs <task-id> — only available after task completes."
      },
      {
        "title": "Global Options",
        "body": "OptionDescription--session NAMEUse named session (default: \"default\")--browser MODEBrowser mode: chromium, real, remote--headedShow browser window (chromium mode)--profile NAMEBrowser profile (local name or cloud ID). Works with open, session create, etc. — does NOT work with run (use --session-id instead)--jsonOutput as JSON--mcpRun as MCP server via stdin/stdout\n\nSession 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."
      },
      {
        "title": "Tips",
        "body": "Always run browser-use state first to see available elements and their indices\nUse --headed for debugging to see what the browser is doing\nSessions persist — the browser stays open between commands\nUse --json for programmatic parsing\nPython variables persist across browser-use python commands within a session\nCLI aliases: bu, browser, and browseruse all work identically to browser-use"
      },
      {
        "title": "Troubleshooting",
        "body": "Run diagnostics first:\n\nbrowser-use doctor\n\nBrowser won't start?\n\nbrowser-use close --all               # Close all sessions\nbrowser-use --headed open <url>       # Try with visible window\n\nElement not found?\n\nbrowser-use state                     # Check current elements\nbrowser-use scroll down               # Element might be below fold\nbrowser-use state                     # Check again\n\nSession issues?\n\nbrowser-use sessions                  # Check active sessions\nbrowser-use close --all               # Clean slate\nbrowser-use open <url>                # Fresh start\n\nSession reuse fails after task stop:\nIf you stop a task and try to reuse its session, the new task may get stuck at \"created\" status. Create a new session instead:\n\nbrowser-use session create --profile <profile-id> --keep-alive\nbrowser-use -b remote run \"new task\" --session-id <new-session-id>\n\nTask stuck at \"started\": Check cost with task status — if not increasing, the task is stuck. View live URL with session get, then stop and start a new agent.\n\nSessions persist after tasks complete: Tasks finishing doesn't auto-stop sessions. Run browser-use session stop --all to clean up."
      },
      {
        "title": "Cleanup",
        "body": "Always close the browser when done:\n\nbrowser-use close                     # Close browser session\nbrowser-use session stop --all        # Stop cloud sessions (if any)\nbrowser-use tunnel stop --all         # Stop tunnels (if any)"
      }
    ],
    "body": "Browser Automation with browser-use CLI\n\nThe browser-use command provides fast, persistent browser automation. It maintains browser sessions across commands, enabling complex multi-step workflows.\n\nPrerequisites\n\nBefore using this skill, browser-use must be installed and configured. Run diagnostics to verify:\n\nbrowser-use doctor\n\n\nFor more information, see https://github.com/browser-use/browser-use/blob/main/browser_use/skill_cli/README.md\n\nCore Workflow\nNavigate: browser-use open <url> - Opens URL (starts browser if needed)\nInspect: browser-use state - Returns clickable elements with indices\nInteract: Use indices from state to interact (browser-use click 5, browser-use input 3 \"text\")\nVerify: browser-use state or browser-use screenshot to confirm actions\nRepeat: Browser stays open between commands\nBrowser Modes\nbrowser-use --browser chromium open <url>      # Default: headless Chromium\nbrowser-use --browser chromium --headed open <url>  # Visible Chromium window\nbrowser-use --browser real open <url>          # Real Chrome (no profile = fresh)\nbrowser-use --browser real --profile \"Default\" open <url>  # Real Chrome with your login sessions\nbrowser-use --browser remote open <url>        # Cloud browser\n\nchromium: Fast, isolated, headless by default\nreal: Uses a real Chrome binary. Without --profile, uses a persistent but empty CLI profile at ~/.config/browseruse/profiles/cli/. With --profile \"ProfileName\", copies your actual Chrome profile (cookies, logins, extensions)\nremote: Cloud-hosted browser with proxy support\nEssential Commands\n# Navigation\nbrowser-use open <url>                    # Navigate to URL\nbrowser-use back                          # Go back\nbrowser-use scroll down                   # Scroll down (--amount N for pixels)\n\n# Page State (always run state first to get element indices)\nbrowser-use state                         # Get URL, title, clickable elements\nbrowser-use screenshot                    # Take screenshot (base64)\nbrowser-use screenshot path.png           # Save screenshot to file\n\n# Interactions (use indices from state)\nbrowser-use click <index>                 # Click element\nbrowser-use type \"text\"                   # Type into focused element\nbrowser-use input <index> \"text\"          # Click element, then type\nbrowser-use keys \"Enter\"                  # Send keyboard keys\nbrowser-use select <index> \"option\"       # Select dropdown option\n\n# Data Extraction\nbrowser-use eval \"document.title\"         # Execute JavaScript\nbrowser-use get text <index>              # Get element text\nbrowser-use get html --selector \"h1\"      # Get scoped HTML\n\n# Wait\nbrowser-use wait selector \"h1\"            # Wait for element\nbrowser-use wait text \"Success\"           # Wait for text\n\n# Session\nbrowser-use sessions                      # List active sessions\nbrowser-use close                         # Close current session\nbrowser-use close --all                   # Close all sessions\n\n# AI Agent\nbrowser-use -b remote run \"task\"          # Run agent in cloud (async by default)\nbrowser-use task status <id>              # Check cloud task progress\n\nCommands\nNavigation & Tabs\nbrowser-use open <url>                    # Navigate to URL\nbrowser-use back                          # Go back in history\nbrowser-use scroll down                   # Scroll down\nbrowser-use scroll up                     # Scroll up\nbrowser-use scroll down --amount 1000     # Scroll by specific pixels (default: 500)\nbrowser-use switch <tab>                  # Switch to tab by index\nbrowser-use close-tab                     # Close current tab\nbrowser-use close-tab <tab>              # Close specific tab\n\nPage State\nbrowser-use state                         # Get URL, title, and clickable elements\nbrowser-use screenshot                    # Take screenshot (outputs base64)\nbrowser-use screenshot path.png           # Save screenshot to file\nbrowser-use screenshot --full path.png    # Full page screenshot\n\nInteractions\nbrowser-use click <index>                 # Click element\nbrowser-use type \"text\"                   # Type text into focused element\nbrowser-use input <index> \"text\"          # Click element, then type text\nbrowser-use keys \"Enter\"                  # Send keyboard keys\nbrowser-use keys \"Control+a\"              # Send key combination\nbrowser-use select <index> \"option\"       # Select dropdown option\nbrowser-use hover <index>                 # Hover over element (triggers CSS :hover)\nbrowser-use dblclick <index>              # Double-click element\nbrowser-use rightclick <index>            # Right-click element (context menu)\n\n\nUse indices from browser-use state.\n\nJavaScript & Data\nbrowser-use eval \"document.title\"         # Execute JavaScript, return result\nbrowser-use get title                     # Get page title\nbrowser-use get html                      # Get full page HTML\nbrowser-use get html --selector \"h1\"      # Get HTML of specific element\nbrowser-use get text <index>              # Get text content of element\nbrowser-use get value <index>             # Get value of input/textarea\nbrowser-use get attributes <index>        # Get all attributes of element\nbrowser-use get bbox <index>              # Get bounding box (x, y, width, height)\n\nCookies\nbrowser-use cookies get                   # Get all cookies\nbrowser-use cookies get --url <url>       # Get cookies for specific URL\nbrowser-use cookies set <name> <value>    # Set a cookie\nbrowser-use cookies set name val --domain .example.com --secure --http-only\nbrowser-use cookies set name val --same-site Strict  # SameSite: Strict, Lax, or None\nbrowser-use cookies set name val --expires 1735689600  # Expiration timestamp\nbrowser-use cookies clear                 # Clear all cookies\nbrowser-use cookies clear --url <url>     # Clear cookies for specific URL\nbrowser-use cookies export <file>         # Export all cookies to JSON file\nbrowser-use cookies export <file> --url <url>  # Export cookies for specific URL\nbrowser-use cookies import <file>         # Import cookies from JSON file\n\nWait Conditions\nbrowser-use wait selector \"h1\"            # Wait for element to be visible\nbrowser-use wait selector \".loading\" --state hidden  # Wait for element to disappear\nbrowser-use wait selector \"#btn\" --state attached    # Wait for element in DOM\nbrowser-use wait text \"Success\"           # Wait for text to appear\nbrowser-use wait selector \"h1\" --timeout 5000  # Custom timeout in ms\n\nPython Execution\nbrowser-use python \"x = 42\"               # Set variable\nbrowser-use python \"print(x)\"             # Access variable (outputs: 42)\nbrowser-use python \"print(browser.url)\"   # Access browser object\nbrowser-use python --vars                 # Show defined variables\nbrowser-use python --reset                # Clear Python namespace\nbrowser-use python --file script.py       # Execute Python file\n\n\nThe Python session maintains state across commands. The browser object provides:\n\nbrowser.url, browser.title, browser.html — page info\nbrowser.goto(url), browser.back() — navigation\nbrowser.click(index), browser.type(text), browser.input(index, text), browser.keys(keys) — interactions\nbrowser.screenshot(path), browser.scroll(direction, amount) — visual\nbrowser.wait(seconds), browser.extract(query) — utilities\nAgent Tasks\nRemote Mode Options\n\nWhen using --browser remote, additional options are available:\n\n# Specify LLM model\nbrowser-use -b remote run \"task\" --llm gpt-4o\nbrowser-use -b remote run \"task\" --llm claude-sonnet-4-20250514\n\n# Proxy configuration (default: us)\nbrowser-use -b remote run \"task\" --proxy-country uk\n\n# Session reuse\nbrowser-use -b remote run \"task 1\" --keep-alive        # Keep session alive after task\nbrowser-use -b remote run \"task 2\" --session-id abc-123 # Reuse existing session\n\n# Execution modes\nbrowser-use -b remote run \"task\" --flash       # Fast execution mode\nbrowser-use -b remote run \"task\" --wait        # Wait for completion (default: async)\n\n# Advanced options\nbrowser-use -b remote run \"task\" --thinking    # Extended reasoning mode\nbrowser-use -b remote run \"task\" --no-vision   # Disable vision (enabled by default)\n\n# Using a cloud profile (create session first, then run with --session-id)\nbrowser-use session create --profile <cloud-profile-id> --keep-alive\n# → returns session_id\nbrowser-use -b remote run \"task\" --session-id <session-id>\n\n# Task configuration\nbrowser-use -b remote run \"task\" --start-url https://example.com  # Start from specific URL\nbrowser-use -b remote run \"task\" --allowed-domain example.com     # Restrict navigation (repeatable)\nbrowser-use -b remote run \"task\" --metadata key=value             # Task metadata (repeatable)\nbrowser-use -b remote run \"task\" --skill-id skill-123             # Enable skills (repeatable)\nbrowser-use -b remote run \"task\" --secret key=value               # Secret metadata (repeatable)\n\n# Structured output and evaluation\nbrowser-use -b remote run \"task\" --structured-output '{\"type\":\"object\"}'  # JSON schema for output\nbrowser-use -b remote run \"task\" --judge                 # Enable judge mode\nbrowser-use -b remote run \"task\" --judge-ground-truth \"expected answer\"\n\nTask Management\nbrowser-use task list                     # List recent tasks\nbrowser-use task list --limit 20          # Show more tasks\nbrowser-use task list --status finished   # Filter by status (finished, stopped)\nbrowser-use task list --session <id>      # Filter by session ID\nbrowser-use task list --json              # JSON output\n\nbrowser-use task status <task-id>         # Get task status (latest step only)\nbrowser-use task status <task-id> -c      # All steps with reasoning\nbrowser-use task status <task-id> -v      # All steps with URLs + actions\nbrowser-use task status <task-id> --last 5  # Last N steps only\nbrowser-use task status <task-id> --step 3  # Specific step number\nbrowser-use task status <task-id> --reverse # Newest first\n\nbrowser-use task stop <task-id>           # Stop a running task\nbrowser-use task logs <task-id>           # Get task execution logs\n\nCloud Session Management\nbrowser-use session list                  # List cloud sessions\nbrowser-use session list --limit 20       # Show more sessions\nbrowser-use session list --status active  # Filter by status\nbrowser-use session list --json           # JSON output\n\nbrowser-use session get <session-id>      # Get session details + live URL\nbrowser-use session get <session-id> --json\n\nbrowser-use session stop <session-id>     # Stop a session\nbrowser-use session stop --all            # Stop all active sessions\n\nbrowser-use session create                          # Create with defaults\nbrowser-use session create --profile <id>           # With cloud profile\nbrowser-use session create --proxy-country uk       # With geographic proxy\nbrowser-use session create --start-url https://example.com\nbrowser-use session create --screen-size 1920x1080\nbrowser-use session create --keep-alive\nbrowser-use session create --persist-memory\n\nbrowser-use session share <session-id>              # Create public share URL\nbrowser-use session share <session-id> --delete     # Delete public share\n\nTunnels\nbrowser-use tunnel <port>           # Start tunnel (returns URL)\nbrowser-use tunnel <port>           # Idempotent - returns existing URL\nbrowser-use tunnel list             # Show active tunnels\nbrowser-use tunnel stop <port>      # Stop tunnel\nbrowser-use tunnel stop --all       # Stop all tunnels\n\nSession Management\nbrowser-use sessions                      # List active sessions\nbrowser-use close                         # Close current session\nbrowser-use close --all                   # Close all sessions\n\nProfile Management\nLocal Chrome Profiles (--browser real)\nbrowser-use -b real profile list          # List local Chrome profiles\nbrowser-use -b real profile cookies \"Default\"  # Show cookie domains in profile\n\nCloud Profiles (--browser remote)\nbrowser-use -b remote profile list            # List cloud profiles\nbrowser-use -b remote profile list --page 2 --page-size 50\nbrowser-use -b remote profile get <id>        # Get profile details\nbrowser-use -b remote profile create          # Create new cloud profile\nbrowser-use -b remote profile create --name \"My Profile\"\nbrowser-use -b remote profile update <id> --name \"New\"\nbrowser-use -b remote profile delete <id>\n\nSyncing\nbrowser-use profile sync --from \"Default\" --domain github.com  # Domain-specific\nbrowser-use profile sync --from \"Default\"                      # Full profile\nbrowser-use profile sync --from \"Default\" --name \"Custom Name\" # With custom name\n\nServer Control\nbrowser-use server logs                   # View server logs\n\nCommon Workflows\nExposing Local Dev Servers\n\nUse when you have a local dev server and need a cloud browser to reach it.\n\nCore workflow: Start dev server → create tunnel → browse the tunnel URL remotely.\n\n# 1. Start your dev server\nnpm run dev &  # localhost:3000\n\n# 2. Expose it via Cloudflare tunnel\nbrowser-use tunnel 3000\n# → url: https://abc.trycloudflare.com\n\n# 3. Now the cloud browser can reach your local server\nbrowser-use --browser remote open https://abc.trycloudflare.com\nbrowser-use state\nbrowser-use screenshot\n\n\nNote: Tunnels are independent of browser sessions. They persist across browser-use close and can be managed separately. Cloudflared must be installed — run browser-use doctor to check.\n\nAuthenticated Browsing with Profiles\n\nUse when a task requires browsing a site the user is already logged into (e.g. Gmail, GitHub, internal tools).\n\nCore workflow: Check existing profiles → ask user which profile and browser mode → browse with that profile. Only sync cookies if no suitable profile exists.\n\nBefore browsing an authenticated site, the agent MUST:\n\nAsk the user whether to use real (local Chrome) or remote (cloud) browser\nList available profiles for that mode\nAsk which profile to use\nIf no profile has the right cookies, offer to sync (see below)\nStep 1: Check existing profiles\n# Option A: Local Chrome profiles (--browser real)\nbrowser-use -b real profile list\n# → Default: Person 1 (user@gmail.com)\n# → Profile 1: Work (work@company.com)\n\n# Option B: Cloud profiles (--browser remote)\nbrowser-use -b remote profile list\n# → abc-123: \"Chrome - Default (github.com)\"\n# → def-456: \"Work profile\"\n\nStep 2: Browse with the chosen profile\n# Real browser — uses local Chrome with existing login sessions\nbrowser-use --browser real --profile \"Default\" open https://github.com\n\n# Cloud browser — uses cloud profile with synced cookies\nbrowser-use --browser remote --profile abc-123 open https://github.com\n\n\nThe user is already authenticated — no login needed.\n\nNote: Cloud profile cookies can expire over time. If authentication fails, re-sync cookies from the local Chrome profile.\n\nStep 3: Syncing cookies (only if needed)\n\nIf the user wants to use a cloud browser but no cloud profile has the right cookies, sync them from a local Chrome profile.\n\nBefore syncing, the agent MUST:\n\nAsk which local Chrome profile to use\nAsk which domain(s) to sync — do NOT default to syncing the full profile\nConfirm before proceeding\n\nCheck what cookies a local profile has:\n\nbrowser-use -b real profile cookies \"Default\"\n# → youtube.com: 23\n# → google.com: 18\n# → github.com: 2\n\n\nDomain-specific sync (recommended):\n\nbrowser-use profile sync --from \"Default\" --domain github.com\n# Creates new cloud profile: \"Chrome - Default (github.com)\"\n# Only syncs github.com cookies\n\n\nFull profile sync (use with caution):\n\nbrowser-use profile sync --from \"Default\"\n# Syncs ALL cookies — includes sensitive data, tracking cookies, every session token\n\n\nOnly use when the user explicitly needs their entire browser state.\n\nFine-grained control (advanced):\n\n# Export cookies to file, manually edit, then import\nbrowser-use --browser real --profile \"Default\" cookies export /tmp/cookies.json\nbrowser-use --browser remote --profile <id> cookies import /tmp/cookies.json\n\n\nUse the synced profile:\n\nbrowser-use --browser remote --profile <id> open https://github.com\n\nRunning Subagents\n\nUse cloud sessions to run autonomous browser agents in parallel.\n\nCore workflow: Launch task(s) with run → poll with task status → collect results → clean up sessions.\n\nSession = Agent: Each cloud session is a browser agent with its own state\nTask = Work: Jobs given to an agent; an agent can run multiple tasks sequentially\nSession lifecycle: Once stopped, a session cannot be revived — start a new one\nLaunching Tasks\n# Single task (async by default — returns immediately)\nbrowser-use -b remote run \"Search for AI news and summarize top 3 articles\"\n# → task_id: task-abc, session_id: sess-123\n\n# Parallel tasks — each gets its own session\nbrowser-use -b remote run \"Research competitor A pricing\"\n# → task_id: task-1, session_id: sess-a\nbrowser-use -b remote run \"Research competitor B pricing\"\n# → task_id: task-2, session_id: sess-b\nbrowser-use -b remote run \"Research competitor C pricing\"\n# → task_id: task-3, session_id: sess-c\n\n# Sequential tasks in same session (reuses cookies, login state, etc.)\nbrowser-use -b remote run \"Log into example.com\" --keep-alive\n# → task_id: task-1, session_id: sess-123\nbrowser-use task status task-1  # Wait for completion\nbrowser-use -b remote run \"Export settings\" --session-id sess-123\n# → task_id: task-2, session_id: sess-123 (same session)\n\nManaging & Stopping\nbrowser-use task list --status finished      # See completed tasks\nbrowser-use task stop task-abc               # Stop a task (session may continue if --keep-alive)\nbrowser-use session stop sess-123            # Stop an entire session (terminates its tasks)\nbrowser-use session stop --all               # Stop all sessions\n\nMonitoring\n\nTask status is designed for token efficiency. Default output is minimal — only expand when needed:\n\nMode\tFlag\tTokens\tUse When\nDefault\t(none)\tLow\tPolling progress\nCompact\t-c\tMedium\tNeed full reasoning\nVerbose\t-v\tHigh\tDebugging actions\n# For long tasks (50+ steps)\nbrowser-use task status <id> -c --last 5   # Last 5 steps only\nbrowser-use task status <id> -v --step 10  # Inspect specific step\n\n\nLive view: browser-use session get <session-id> returns a live URL to watch the agent.\n\nDetect stuck tasks: If cost/duration in task status stops increasing, the task is stuck — stop it and start a new agent.\n\nLogs: browser-use task logs <task-id> — only available after task completes.\n\nGlobal Options\nOption\tDescription\n--session NAME\tUse named session (default: \"default\")\n--browser MODE\tBrowser mode: chromium, real, remote\n--headed\tShow browser window (chromium mode)\n--profile NAME\tBrowser profile (local name or cloud ID). Works with open, session create, etc. — does NOT work with run (use --session-id instead)\n--json\tOutput as JSON\n--mcp\tRun as MCP server via stdin/stdout\n\nSession 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.\n\nTips\nAlways run browser-use state first to see available elements and their indices\nUse --headed for debugging to see what the browser is doing\nSessions persist — the browser stays open between commands\nUse --json for programmatic parsing\nPython variables persist across browser-use python commands within a session\nCLI aliases: bu, browser, and browseruse all work identically to browser-use\nTroubleshooting\n\nRun diagnostics first:\n\nbrowser-use doctor\n\n\nBrowser won't start?\n\nbrowser-use close --all               # Close all sessions\nbrowser-use --headed open <url>       # Try with visible window\n\n\nElement not found?\n\nbrowser-use state                     # Check current elements\nbrowser-use scroll down               # Element might be below fold\nbrowser-use state                     # Check again\n\n\nSession issues?\n\nbrowser-use sessions                  # Check active sessions\nbrowser-use close --all               # Clean slate\nbrowser-use open <url>                # Fresh start\n\n\nSession reuse fails after task stop: If you stop a task and try to reuse its session, the new task may get stuck at \"created\" status. Create a new session instead:\n\nbrowser-use session create --profile <profile-id> --keep-alive\nbrowser-use -b remote run \"new task\" --session-id <new-session-id>\n\n\nTask stuck at \"started\": Check cost with task status — if not increasing, the task is stuck. View live URL with session get, then stop and start a new agent.\n\nSessions persist after tasks complete: Tasks finishing doesn't auto-stop sessions. Run browser-use session stop --all to clean up.\n\nCleanup\n\nAlways close the browser when done:\n\nbrowser-use close                     # Close browser session\nbrowser-use session stop --all        # Stop cloud sessions (if any)\nbrowser-use tunnel stop --all         # Stop tunnels (if any)"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/ShawnPana/browser-use",
    "publisherUrl": "https://clawhub.ai/ShawnPana/browser-use",
    "owner": "ShawnPana",
    "version": "1.0.2",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/browser-use",
    "downloadUrl": "https://openagent3.xyz/downloads/browser-use",
    "agentUrl": "https://openagent3.xyz/skills/browser-use/agent",
    "manifestUrl": "https://openagent3.xyz/skills/browser-use/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/browser-use/agent.md"
  }
}