{
  "schemaVersion": "1.0",
  "item": {
    "slug": "neo-stealth-browser",
    "name": "Ghost Browser",
    "source": "tencent",
    "type": "skill",
    "category": "效率提升",
    "sourceUrl": "https://clawhub.ai/neothelobster/neo-stealth-browser",
    "canonicalUrl": "https://clawhub.ai/neothelobster/neo-stealth-browser",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/neo-stealth-browser",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=neo-stealth-browser",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "AGENTS_INTEGRATION.md",
      "SKILL.md",
      "_meta.json",
      "extensions/cdp-input-fix/content.js",
      "extensions/cdp-input-fix/manifest.json",
      "requirements.txt"
    ],
    "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-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.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/neo-stealth-browser"
    },
    "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/neo-stealth-browser",
    "agentPageUrl": "https://openagent3.xyz/skills/neo-stealth-browser/agent",
    "manifestUrl": "https://openagent3.xyz/skills/neo-stealth-browser/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/neo-stealth-browser/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": "Ghost Browser",
        "body": "Automated Chrome browser for AI agent web tasks. Powered by nodriver for reliable browser control. Every command is designed to minimize token usage and maximize accuracy.\n\nUse for: web automation, screenshots, page reading, form filling, scraping, cookie/session management, and persistent browser profiles."
      },
      {
        "title": "How to Browse — Follow This Workflow",
        "body": "ALWAYS use this workflow. Never use raw content (HTML) or CSS-selector click/type as your first choice."
      },
      {
        "title": "Step 1: Navigate and understand the page",
        "body": "ghost-browser navigate https://example.com\nghost-browser wait-ready\nghost-browser page-summary\n\npage-summary returns: page title, URL, element counts (links/buttons/inputs/forms), whether there's a login form, and a short text preview. Costs ~10 tokens."
      },
      {
        "title": "Step 2: See what you can interact with",
        "body": "ghost-browser elements              # Numbered list of ALL interactive elements\nghost-browser elements --form-only  # Just form inputs (for login/signup/search)\n\nOutput:\n\n[0] link \"Home\" → /\n[1] link \"Products\" → /products\n[2] button \"Sign In\"\n[3] input[email] \"Email address\"\n[4] input[password] \"Password\"\n[5] submit \"Log In\""
      },
      {
        "title": "Step 3: Interact by visible text (NOT CSS selectors)",
        "body": "ghost-browser interact click \"Sign In\"\nghost-browser interact type \"Email\" --type-text \"user@example.com\"\nghost-browser interact type \"Password\" --type-text \"secret123\"\n\n# Or fill entire forms at once\nghost-browser fill-form '{\"email\":\"user@example.com\",\"password\":\"secret123\"}' --submit"
      },
      {
        "title": "Step 4: Read page content as markdown",
        "body": "ghost-browser readable                    # Full page as clean markdown\nghost-browser readable --max-length 5000  # Limit length to save tokens\n\nNever use content — it returns raw HTML which wastes thousands of tokens. Use readable instead."
      },
      {
        "title": "Step 5: Wait for dynamic pages",
        "body": "ghost-browser wait-ready             # Wait for network idle + DOM stable\nghost-browser wait-ready --timeout 10"
      },
      {
        "title": "Complete Login Example",
        "body": "ghost-browser start\nghost-browser navigate https://mysite.com/login\nghost-browser wait-ready\nghost-browser elements --form-only\nghost-browser fill-form '{\"email\":\"me@example.com\",\"password\":\"mypass\"}' --submit\nghost-browser wait-ready\nghost-browser page-summary           # Verify login succeeded\nghost-browser session save mysite    # Save auth state for later"
      },
      {
        "title": "Restore a Previous Session",
        "body": "ghost-browser start --profile mysite\nghost-browser session load mysite\nghost-browser navigate https://mysite.com/dashboard\nghost-browser page-summary"
      },
      {
        "title": "Preferred Commands (use these first)",
        "body": "CommandWhat it doesToken costpage-summaryPage overview: title, URL, element counts, flags~10elementsNumbered list of buttons, links, inputs~50-200elements --form-onlyJust form inputs~10-50readableFull page as clean markdown~500-10000readable --max-length NPage markdown capped at N charscontrolledinteract click \"text\"Click by visible textactioninteract type \"label\" --type-text \"value\"Type by label/placeholder textactionfill-form '{\"field\":\"value\"}' --submitFill and submit a formactionhover \"text\" --by-textHover by visible textactionwait-readyWait for page to finish loading~5session save <name>Save cookies + localStorage + sessionStorage~10session load <name>Restore full auth state~10"
      },
      {
        "title": "Lifecycle",
        "body": "ghost-browser start                          # Start browser daemon\nghost-browser start --headless               # Run without visible window\nghost-browser start --profile work           # Use named profile (persistent data)\nghost-browser start --extension /path/ext    # Load unpacked Chrome extension\nghost-browser start --proxy socks5://host:port  # Use proxy\nghost-browser stop                           # Graceful shutdown\nghost-browser status                         # Check if running\nghost-browser status --json                  # Machine-readable status\nghost-browser health                         # Quick health check"
      },
      {
        "title": "Navigation & Tabs",
        "body": "ghost-browser navigate <url>                 # Navigate current tab (or reuse matching tab)\nghost-browser navigate <url> --force-new     # Always open new tab\nghost-browser tabs                           # List open tabs with IDs\nghost-browser tabs --json                    # Machine-readable tab list\nghost-browser activate-tab <ID>              # Switch to a tab by ID\nghost-browser close-tab <ID>                 # Close a tab by ID\nghost-browser wait-ready                     # Wait for page to fully load\nghost-browser wait-ready --timeout 10        # Custom timeout in seconds\n\nAfter navigate, all commands automatically target the navigated tab."
      },
      {
        "title": "Page Understanding",
        "body": "ghost-browser page-summary                   # Quick overview (~10 tokens)\nghost-browser elements                       # All interactive elements (numbered)\nghost-browser elements --form-only           # Form inputs only\nghost-browser elements --limit 50            # Cap at 50 elements\nghost-browser readable                       # Full page as markdown\nghost-browser readable --max-length 5000     # Limit output length\nghost-browser content                        # Raw HTML (avoid — use readable instead)"
      },
      {
        "title": "Text-Based Interaction (preferred)",
        "body": "ghost-browser interact click \"Sign In\"       # Click by button/link text\nghost-browser interact type \"Email\" --type-text \"user@example.com\"  # Type by label\nghost-browser interact click \"Products\" --index 1  # Click 2nd match if multiple\nghost-browser fill-form '{\"email\":\"a@b.com\",\"password\":\"x\"}' --submit\nghost-browser hover \"Menu\" --by-text         # Hover by visible text"
      },
      {
        "title": "CSS Selector Interaction (fallback)",
        "body": "Use these only when text-based interaction fails.\n\nghost-browser click \"button.submit\"          # Click by CSS selector\nghost-browser type \"input#email\" \"a@b.com\"   # Type by CSS selector\nghost-browser find \"h1\"                      # Find elements by selector\nghost-browser hover \".dropdown\"              # Hover by CSS selector\nghost-browser wait \".loaded\" --timeout 10    # Wait for element to appear\nghost-browser scroll --down                  # Scroll down\nghost-browser scroll --up                    # Scroll up\nghost-browser scroll --to 500               # Scroll to Y position\nghost-browser eval \"document.title\"          # Execute arbitrary JavaScript"
      },
      {
        "title": "Cookies & Storage",
        "body": "ghost-browser cookies                        # List all cookies\nghost-browser cookies --domain example.com   # Filter by domain\nghost-browser set-cookie name value          # Set a cookie\nghost-browser set-cookie name value --domain .example.com  # Set with domain\nghost-browser clear-cookies                  # Clear all cookies\nghost-browser clear-cookies --domain example.com  # Clear for domain\nghost-browser save-cookies --file cookies.json  # Export cookies to JSON\nghost-browser load-cookies cookies.json      # Import cookies from JSON\nghost-browser storage list                   # List localStorage entries\nghost-browser storage list --session         # List sessionStorage entries\nghost-browser storage get <key>              # Get a value\nghost-browser storage set <key> <value>      # Set a value\nghost-browser storage delete <key>           # Delete a key\nghost-browser storage clear                  # Clear all localStorage"
      },
      {
        "title": "Session Management",
        "body": "ghost-browser session save <name>            # Save cookies + localStorage + sessionStorage\nghost-browser session load <name>            # Restore full auth state\n\nSessions are saved locally under state/sessions/<name>.json. They contain cookies and storage data needed to restore an authenticated state. Delete session files when no longer needed."
      },
      {
        "title": "Files & Media",
        "body": "ghost-browser screenshot                         # Screenshot to auto-named file\nghost-browser screenshot --output ./page.png     # Screenshot to specific file\nghost-browser pdf --output page.pdf              # Save page as PDF\nghost-browser pdf --output page.pdf --landscape  # Landscape PDF\nghost-browser upload photo.jpg                   # Upload file (auto-detect file input)\nghost-browser upload doc.pdf --selector \"#file\"  # Upload to specific file input\nghost-browser download <url> --output file.pdf   # Download a file"
      },
      {
        "title": "Debugging",
        "body": "ghost-browser network-log                    # View recent network requests\nghost-browser network-log --limit 20         # Limit entries\nghost-browser network-log --filter api       # Filter by URL substring\nghost-browser network-log --clear            # Clear the log\nghost-browser console-log                    # View JS console output\nghost-browser console-log --level error      # Show only errors\nghost-browser console-log --clear            # Clear the log\nghost-browser eval \"document.title\"          # Execute JavaScript and return result\n\nNetwork and console logging run automatically in the background."
      },
      {
        "title": "Window",
        "body": "ghost-browser window --size 1920x1080        # Resize window\nghost-browser window --position 0x0          # Reposition window"
      },
      {
        "title": "Profile Management",
        "body": "Profiles persist browser data (history, cookies, extensions) across sessions.\n\nghost-browser profile list                   # List profiles with sizes\nghost-browser profile create <name>          # Create new profile\nghost-browser profile delete <name>          # Delete a profile and its data\nghost-browser profile default                # Show default profile\nghost-browser profile default <name>         # Set default profile\nghost-browser profile clone <src> <dst>      # Clone a profile"
      },
      {
        "title": "Extension Management",
        "body": "ghost-browser install-extension <source>     # Install from Web Store URL/ID or .crx file\nghost-browser install-extension <source> --name custom-name  # Install with custom folder name\nghost-browser list-extensions                # List all installed extensions\nghost-browser remove-extension <name>        # Remove an installed extension\nghost-browser load-extension <name>          # Load extension into running browser\nghost-browser load-extension                 # Load all extensions\nghost-browser unload-extension <name>        # Unload extension from running browser"
      },
      {
        "title": "Challenge Handling",
        "body": "ghost-browser cf-solve                       # Handle Cloudflare challenges (all tabs)\nghost-browser cf-solve --tab <ID>            # Handle on specific tab\n\nChallenges are also detected and handled automatically in the background."
      },
      {
        "title": "Decision Guide",
        "body": "I want to...Use thisUnderstand what's on a pagepage-summary then elements if neededRead page text contentreadable (NOT content)Click a buttoninteract click \"Button Text\"Fill a login formfill-form '{\"email\":\"...\",\"password\":\"...\"}' --submitType into a specific fieldinteract type \"Field Label\" --type-text \"value\"Wait for page to loadwait-readySee what I can click/typeelements or elements --form-onlySave login for latersession save sitenameRestore a saved loginsession load sitenameDebug a failing requestnetwork-log --filter domain.comCheck for JS errorsconsole-log --level errorTake a screenshotscreenshot --output ./page.pngRun custom JavaScripteval \"your code here\""
      },
      {
        "title": "JSON Output",
        "body": "All commands support --json for machine-readable output:\n\nghost-browser page-summary --json\nghost-browser elements --json\nghost-browser readable --json\nghost-browser status --json"
      },
      {
        "title": "Installation",
        "body": "After installing the skill, run the setup script:\n\nbash setup.sh\n\nThis creates a Python virtual environment and installs dependencies automatically."
      },
      {
        "title": "Requirements",
        "body": "Python 3.8+\nGoogle Chrome installed on the system\nnodriver (installed automatically by setup.sh)"
      },
      {
        "title": "Data & Privacy",
        "body": "This skill stores the following data locally under its state/ directory:\n\nDataLocationContainsBrowser statestate/browser.jsonPort numbers, process IDLogsstate/browser.logDaemon debug logsProfilesstate/profiles/Chrome user data (history, cookies)Sessionsstate/sessions/Saved auth state (cookies, localStorage)\n\nTo clean up: delete the state/ directory to remove all persistent data. Use ghost-browser profile delete <name> to remove individual profiles.\n\nSession and cookie files may contain authentication tokens. Handle them carefully and delete when no longer needed."
      },
      {
        "title": "Security",
        "body": "Browser control server binds to 127.0.0.1 only (localhost, not network-accessible)\nThe skill does not modify any files outside its own directory\nNo environment variables or external credentials are required\nAll persistent data is stored under the skill's state/ directory"
      }
    ],
    "body": "Ghost Browser\n\nAutomated Chrome browser for AI agent web tasks. Powered by nodriver for reliable browser control. Every command is designed to minimize token usage and maximize accuracy.\n\nUse for: web automation, screenshots, page reading, form filling, scraping, cookie/session management, and persistent browser profiles.\n\nHow to Browse — Follow This Workflow\n\nALWAYS use this workflow. Never use raw content (HTML) or CSS-selector click/type as your first choice.\n\nStep 1: Navigate and understand the page\nghost-browser navigate https://example.com\nghost-browser wait-ready\nghost-browser page-summary\n\n\npage-summary returns: page title, URL, element counts (links/buttons/inputs/forms), whether there's a login form, and a short text preview. Costs ~10 tokens.\n\nStep 2: See what you can interact with\nghost-browser elements              # Numbered list of ALL interactive elements\nghost-browser elements --form-only  # Just form inputs (for login/signup/search)\n\n\nOutput:\n\n[0] link \"Home\" → /\n[1] link \"Products\" → /products\n[2] button \"Sign In\"\n[3] input[email] \"Email address\"\n[4] input[password] \"Password\"\n[5] submit \"Log In\"\n\nStep 3: Interact by visible text (NOT CSS selectors)\nghost-browser interact click \"Sign In\"\nghost-browser interact type \"Email\" --type-text \"user@example.com\"\nghost-browser interact type \"Password\" --type-text \"secret123\"\n\n# Or fill entire forms at once\nghost-browser fill-form '{\"email\":\"user@example.com\",\"password\":\"secret123\"}' --submit\n\nStep 4: Read page content as markdown\nghost-browser readable                    # Full page as clean markdown\nghost-browser readable --max-length 5000  # Limit length to save tokens\n\n\nNever use content — it returns raw HTML which wastes thousands of tokens. Use readable instead.\n\nStep 5: Wait for dynamic pages\nghost-browser wait-ready             # Wait for network idle + DOM stable\nghost-browser wait-ready --timeout 10\n\nComplete Login Example\nghost-browser start\nghost-browser navigate https://mysite.com/login\nghost-browser wait-ready\nghost-browser elements --form-only\nghost-browser fill-form '{\"email\":\"me@example.com\",\"password\":\"mypass\"}' --submit\nghost-browser wait-ready\nghost-browser page-summary           # Verify login succeeded\nghost-browser session save mysite    # Save auth state for later\n\nRestore a Previous Session\nghost-browser start --profile mysite\nghost-browser session load mysite\nghost-browser navigate https://mysite.com/dashboard\nghost-browser page-summary\n\nCommand Reference\nPreferred Commands (use these first)\nCommand\tWhat it does\tToken cost\npage-summary\tPage overview: title, URL, element counts, flags\t~10\nelements\tNumbered list of buttons, links, inputs\t~50-200\nelements --form-only\tJust form inputs\t~10-50\nreadable\tFull page as clean markdown\t~500-10000\nreadable --max-length N\tPage markdown capped at N chars\tcontrolled\ninteract click \"text\"\tClick by visible text\taction\ninteract type \"label\" --type-text \"value\"\tType by label/placeholder text\taction\nfill-form '{\"field\":\"value\"}' --submit\tFill and submit a form\taction\nhover \"text\" --by-text\tHover by visible text\taction\nwait-ready\tWait for page to finish loading\t~5\nsession save <name>\tSave cookies + localStorage + sessionStorage\t~10\nsession load <name>\tRestore full auth state\t~10\nLifecycle\nghost-browser start                          # Start browser daemon\nghost-browser start --headless               # Run without visible window\nghost-browser start --profile work           # Use named profile (persistent data)\nghost-browser start --extension /path/ext    # Load unpacked Chrome extension\nghost-browser start --proxy socks5://host:port  # Use proxy\nghost-browser stop                           # Graceful shutdown\nghost-browser status                         # Check if running\nghost-browser status --json                  # Machine-readable status\nghost-browser health                         # Quick health check\n\nNavigation & Tabs\nghost-browser navigate <url>                 # Navigate current tab (or reuse matching tab)\nghost-browser navigate <url> --force-new     # Always open new tab\nghost-browser tabs                           # List open tabs with IDs\nghost-browser tabs --json                    # Machine-readable tab list\nghost-browser activate-tab <ID>              # Switch to a tab by ID\nghost-browser close-tab <ID>                 # Close a tab by ID\nghost-browser wait-ready                     # Wait for page to fully load\nghost-browser wait-ready --timeout 10        # Custom timeout in seconds\n\n\nAfter navigate, all commands automatically target the navigated tab.\n\nPage Understanding\nghost-browser page-summary                   # Quick overview (~10 tokens)\nghost-browser elements                       # All interactive elements (numbered)\nghost-browser elements --form-only           # Form inputs only\nghost-browser elements --limit 50            # Cap at 50 elements\nghost-browser readable                       # Full page as markdown\nghost-browser readable --max-length 5000     # Limit output length\nghost-browser content                        # Raw HTML (avoid — use readable instead)\n\nText-Based Interaction (preferred)\nghost-browser interact click \"Sign In\"       # Click by button/link text\nghost-browser interact type \"Email\" --type-text \"user@example.com\"  # Type by label\nghost-browser interact click \"Products\" --index 1  # Click 2nd match if multiple\nghost-browser fill-form '{\"email\":\"a@b.com\",\"password\":\"x\"}' --submit\nghost-browser hover \"Menu\" --by-text         # Hover by visible text\n\nCSS Selector Interaction (fallback)\n\nUse these only when text-based interaction fails.\n\nghost-browser click \"button.submit\"          # Click by CSS selector\nghost-browser type \"input#email\" \"a@b.com\"   # Type by CSS selector\nghost-browser find \"h1\"                      # Find elements by selector\nghost-browser hover \".dropdown\"              # Hover by CSS selector\nghost-browser wait \".loaded\" --timeout 10    # Wait for element to appear\nghost-browser scroll --down                  # Scroll down\nghost-browser scroll --up                    # Scroll up\nghost-browser scroll --to 500               # Scroll to Y position\nghost-browser eval \"document.title\"          # Execute arbitrary JavaScript\n\nCookies & Storage\nghost-browser cookies                        # List all cookies\nghost-browser cookies --domain example.com   # Filter by domain\nghost-browser set-cookie name value          # Set a cookie\nghost-browser set-cookie name value --domain .example.com  # Set with domain\nghost-browser clear-cookies                  # Clear all cookies\nghost-browser clear-cookies --domain example.com  # Clear for domain\nghost-browser save-cookies --file cookies.json  # Export cookies to JSON\nghost-browser load-cookies cookies.json      # Import cookies from JSON\nghost-browser storage list                   # List localStorage entries\nghost-browser storage list --session         # List sessionStorage entries\nghost-browser storage get <key>              # Get a value\nghost-browser storage set <key> <value>      # Set a value\nghost-browser storage delete <key>           # Delete a key\nghost-browser storage clear                  # Clear all localStorage\n\nSession Management\nghost-browser session save <name>            # Save cookies + localStorage + sessionStorage\nghost-browser session load <name>            # Restore full auth state\n\n\nSessions are saved locally under state/sessions/<name>.json. They contain cookies and storage data needed to restore an authenticated state. Delete session files when no longer needed.\n\nFiles & Media\nghost-browser screenshot                         # Screenshot to auto-named file\nghost-browser screenshot --output ./page.png     # Screenshot to specific file\nghost-browser pdf --output page.pdf              # Save page as PDF\nghost-browser pdf --output page.pdf --landscape  # Landscape PDF\nghost-browser upload photo.jpg                   # Upload file (auto-detect file input)\nghost-browser upload doc.pdf --selector \"#file\"  # Upload to specific file input\nghost-browser download <url> --output file.pdf   # Download a file\n\nDebugging\nghost-browser network-log                    # View recent network requests\nghost-browser network-log --limit 20         # Limit entries\nghost-browser network-log --filter api       # Filter by URL substring\nghost-browser network-log --clear            # Clear the log\nghost-browser console-log                    # View JS console output\nghost-browser console-log --level error      # Show only errors\nghost-browser console-log --clear            # Clear the log\nghost-browser eval \"document.title\"          # Execute JavaScript and return result\n\n\nNetwork and console logging run automatically in the background.\n\nWindow\nghost-browser window --size 1920x1080        # Resize window\nghost-browser window --position 0x0          # Reposition window\n\nProfile Management\n\nProfiles persist browser data (history, cookies, extensions) across sessions.\n\nghost-browser profile list                   # List profiles with sizes\nghost-browser profile create <name>          # Create new profile\nghost-browser profile delete <name>          # Delete a profile and its data\nghost-browser profile default                # Show default profile\nghost-browser profile default <name>         # Set default profile\nghost-browser profile clone <src> <dst>      # Clone a profile\n\nExtension Management\nghost-browser install-extension <source>     # Install from Web Store URL/ID or .crx file\nghost-browser install-extension <source> --name custom-name  # Install with custom folder name\nghost-browser list-extensions                # List all installed extensions\nghost-browser remove-extension <name>        # Remove an installed extension\nghost-browser load-extension <name>          # Load extension into running browser\nghost-browser load-extension                 # Load all extensions\nghost-browser unload-extension <name>        # Unload extension from running browser\n\nChallenge Handling\nghost-browser cf-solve                       # Handle Cloudflare challenges (all tabs)\nghost-browser cf-solve --tab <ID>            # Handle on specific tab\n\n\nChallenges are also detected and handled automatically in the background.\n\nDecision Guide\nI want to...\tUse this\nUnderstand what's on a page\tpage-summary then elements if needed\nRead page text content\treadable (NOT content)\nClick a button\tinteract click \"Button Text\"\nFill a login form\tfill-form '{\"email\":\"...\",\"password\":\"...\"}' --submit\nType into a specific field\tinteract type \"Field Label\" --type-text \"value\"\nWait for page to load\twait-ready\nSee what I can click/type\telements or elements --form-only\nSave login for later\tsession save sitename\nRestore a saved login\tsession load sitename\nDebug a failing request\tnetwork-log --filter domain.com\nCheck for JS errors\tconsole-log --level error\nTake a screenshot\tscreenshot --output ./page.png\nRun custom JavaScript\teval \"your code here\"\nJSON Output\n\nAll commands support --json for machine-readable output:\n\nghost-browser page-summary --json\nghost-browser elements --json\nghost-browser readable --json\nghost-browser status --json\n\nInstallation\n\nAfter installing the skill, run the setup script:\n\nbash setup.sh\n\n\nThis creates a Python virtual environment and installs dependencies automatically.\n\nRequirements\nPython 3.8+\nGoogle Chrome installed on the system\nnodriver (installed automatically by setup.sh)\nData & Privacy\n\nThis skill stores the following data locally under its state/ directory:\n\nData\tLocation\tContains\nBrowser state\tstate/browser.json\tPort numbers, process ID\nLogs\tstate/browser.log\tDaemon debug logs\nProfiles\tstate/profiles/\tChrome user data (history, cookies)\nSessions\tstate/sessions/\tSaved auth state (cookies, localStorage)\n\nTo clean up: delete the state/ directory to remove all persistent data. Use ghost-browser profile delete <name> to remove individual profiles.\n\nSession and cookie files may contain authentication tokens. Handle them carefully and delete when no longer needed.\n\nSecurity\nBrowser control server binds to 127.0.0.1 only (localhost, not network-accessible)\nThe skill does not modify any files outside its own directory\nNo environment variables or external credentials are required\nAll persistent data is stored under the skill's state/ directory"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/neothelobster/neo-stealth-browser",
    "publisherUrl": "https://clawhub.ai/neothelobster/neo-stealth-browser",
    "owner": "neothelobster",
    "version": "1.0.4",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/neo-stealth-browser",
    "downloadUrl": "https://openagent3.xyz/downloads/neo-stealth-browser",
    "agentUrl": "https://openagent3.xyz/skills/neo-stealth-browser/agent",
    "manifestUrl": "https://openagent3.xyz/skills/neo-stealth-browser/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/neo-stealth-browser/agent.md"
  }
}