{"id":"agent-browser","name":"agent-browser","summary":"あらゆるタスクのためにウェブを閲覧できます — トピックの調査、記事の閲覧、ウェブアプリの操作、フォームの記入、スクリーンショットの撮影、データの抽出、ウェブページのテストなど。","body":"# Browser Automation with agent-browser\n\n## Quick start\n\n```bash\nagent-browser open <url>        # Navigate to page\nagent-browser snapshot -i       # Get interactive elements with refs\nagent-browser click @e1         # Click element by ref\nagent-browser fill @e2 \"text\"   # Fill input by ref\nagent-browser close             # Close browser\n```\n\n## Core workflow\n\n1. Navigate: `agent-browser open <url>`\n2. Snapshot: `agent-browser snapshot -i` (returns elements with refs like `@e1`, `@e2`)\n3. Interact using refs from the snapshot\n4. Re-snapshot after navigation or significant DOM changes\n\n## Commands\n\n### Navigation\n\n```bash\nagent-browser open <url>      # Navigate to URL\nagent-browser back            # Go back\nagent-browser forward         # Go forward\nagent-browser reload          # Reload page\nagent-browser close           # Close browser\n```\n\n### Snapshot (page analysis)\n\n```bash\nagent-browser snapshot            # Full accessibility tree\nagent-browser snapshot -i         # Interactive elements only (recommended)\nagent-browser snapshot -c         # Compact output\nagent-browser snapshot -d 3       # Limit depth to 3\nagent-browser snapshot -s \"#main\" # Scope to CSS selector\n```\n\n### Interactions (use @refs from snapshot)\n\n```bash\nagent-browser click @e1           # Click\nagent-browser dblclick @e1        # Double-click\nagent-browser fill @e2 \"text\"     # Clear and type\nagent-browser type @e2 \"text\"     # Type without clearing\nagent-browser press Enter         # Press key\nagent-browser hover @e1           # Hover\nagent-browser check @e1           # Check checkbox\nagent-browser uncheck @e1         # Uncheck checkbox\nagent-browser select @e1 \"value\"  # Select dropdown option\nagent-browser scroll down 500     # Scroll page\nagent-browser upload @e1 file.pdf # Upload files\n```\n\n### Get information\n\n```bash\nagent-browser get text @e1        # Get element text\nagent-browser get html @e1        # Get innerHTML\nagent-browser get value @e1       # Get input value\nagent-browser get attr @e1 href   # Get attribute\nagent-browser get title           # Get page title\nagent-browser get url             # Get current URL\nagent-browser get count \".item\"   # Count matching elements\n```\n\n### Screenshots & PDF\n\n```bash\nagent-browser screenshot          # Save to temp directory\nagent-browser screenshot path.png # Save to specific path\nagent-browser screenshot --full   # Full page\nagent-browser pdf output.pdf      # Save as PDF\n```\n\n### Wait\n\n```bash\nagent-browser wait @e1                     # Wait for element\nagent-browser wait 2000                    # Wait milliseconds\nagent-browser wait --text \"Success\"        # Wait for text\nagent-browser wait --url \"**/dashboard\"    # Wait for URL pattern\nagent-browser wait --load networkidle      # Wait for network idle\n```\n\n### Waiting for a custom condition — ALWAYS bound it\n\nPrefer the built-in `wait` subcommands above. Only fall back to `eval`-polling\nwhen you must wait on a custom JS condition (e.g. a spinner disappearing or a\n\"Send\" button re-enabling in a chat UI).\n\n**Never write an unbounded wait loop.** A bare `until … do sleep; done` that\npolls a page condition will loop *forever* if the condition never becomes true\n(page failed to load, selector changed, network stalled). That does not just\nfail the command — it wedges the entire agent turn: the runner keeps the model\nstream open, later messages get silently swallowed, and the container can hang\nfor hours without the host's stuck-detection firing.\n\nAlways cap the wait with BOTH a wall-clock `timeout` and a max-attempts counter,\nand always exit the loop (never leave a `sleep` loop as the last thing running):\n\n```bash\n# Bounded wait: succeeds when the condition is met, gives up after ~90s.\ntimeout 90 bash -c '\n  for i in $(seq 1 30); do\n    if agent-browser eval \"document.querySelector(\\\".loading\\\") === null\" 2>/dev/null | grep -q true; then\n      echo READY; exit 0\n    fi\n    sleep 3\n  done\n  echo TIMEOUT; exit 1\n'\n# Check the exit status / output: on TIMEOUT, snapshot the page and decide —\n# do NOT re-enter another unbounded wait.\n```\n\nIf the wait times out, treat it as a real failure: take a `snapshot -i` or\n`screenshot` to see the actual page state, report what you found, and move on.\nRetrying the same unbounded wait is what causes the hang.\n\n### Semantic locators (alternative to refs)\n\n```bash\nagent-browser find role button click --name \"Submit\"\nagent-browser find text \"Sign In\" click\nagent-browser find label \"Email\" fill \"user@test.com\"\nagent-browser find placeholder \"Search\" type \"query\"\n```\n\n### Authentication with saved state\n\n```bash\n# Login once\nagent-browser open https://app.example.com/login\nagent-browser snapshot -i\nagent-browser fill @e1 \"username\"\nagent-browser fill @e2 \"password\"\nagent-browser click @e3\nagent-browser wait --url \"**/dashboard\"\nagent-browser state save auth.json\n\n# Later: load saved state\nagent-browser state load auth.json\nagent-browser open https://app.example.com/dashboard\n```\n\n### Cookies & Storage\n\n```bash\nagent-browser cookies                     # Get all cookies\nagent-browser cookies set name value      # Set cookie\nagent-browser cookies clear               # Clear cookies\nagent-browser storage local               # Get localStorage\nagent-browser storage local set k v       # Set value\n```\n\n### JavaScript\n\n```bash\nagent-browser eval \"document.title\"   # Run JavaScript\n```\n\n## Example: Form submission\n\n```bash\nagent-browser open https://example.com/form\nagent-browser snapshot -i\n# Output shows: textbox \"Email\" [ref=e1], textbox \"Password\" [ref=e2], button \"Submit\" [ref=e3]\n\nagent-browser fill @e1 \"user@example.com\"\nagent-browser fill @e2 \"password123\"\nagent-browser click @e3\nagent-browser wait --load networkidle\nagent-browser snapshot -i  # Check result\n```\n\n## Example: Data extraction\n\n```bash\nagent-browser open https://example.com/products\nagent-browser snapshot -i\nagent-browser get text @e1  # Get product title\nagent-browser get attr @e2 href  # Get link URL\nagent-browser screenshot products.png\n```","author":"@nanocoai","ownerProfile":null,"authorContacts":null,"sourceUrl":"https://github.com/nanocoai/nanoclaw/tree/main/container/skills/agent-browser","license":"MIT","category":"testing","lang":"en","tokens":1424,"stars":0,"calls30d":2,"claimed":false,"visibility":"public","origin":"crawler","version":"0.1.0","createdAt":"2026-08-22","updatedAt":"2026-08-22","files":[],"requires":{"mcp":[],"tools":["Bash(agent-browser:*)"]},"safety":{"flags":[],"scannedAt":"2026-08-22","hasScripts":false,"networkEndpoints":["app.example.com"]}}