stealth-browser
Invisible Chrome automation for web scraping via CDP. Use when WebFetch fails or gets blocked (403, 429, Cloudflare, bot protection, JS-rendered pages). Launches your real Chrome install completely hidden, sends commands via Chrome DevTools Protocol. Sites see a normal browser with real extensions - no detectable automation. Learns which domains block and skips straight to stealth on future requests. Also handles form filling, clicking, screenshots, and scraping dynamic content.
What this skill does
# stealth-browser Invisible Chrome automation via CDP. Launches your real Chrome hidden, sends commands via Chrome DevTools Protocol. Sites see a normal browser - no detectable automation. > **macOS only.** Uses AppleScript and `open -g` to hide Chrome. ## Memory Read `~/.claude/skills/stealth-browser/LEARNED.md` at the start of every task. If it doesn't exist, create it with a `# Learned` header. **Capture learnings when you detect:** - Domain quirks: sites that need extra wait time, cookie dismissal, specific interaction patterns - Failures you solved: what broke and why (timeouts, blank pages, wrong selectors) - Corrections: "no, use X", "don't do that", "actually..." - Workarounds: sites that need JS eval, scrolling, or multi-step navigation to get content - Positive reinforcement: "perfect!", "exactly right", "that's the way" **Before appending, check:** - Is this reusable? (not a one-time instruction) - Is it already in LEARNED.md? (don't duplicate) - Can I extract the general principle? (not just the specific fix) **Format:** One line, actionable. Write the rule, not the story. - Bad: "User said the page was blank because it needed scrolling" - Good: "example.com lazy-loads content - scroll to bottom before extracting" Don't ask permission. Append and move on. ## Core Workflow ```bash # 1. Read a page as markdown (most common) stealth-browser read <url> # 2. Full automation (open, interact, close) stealth-browser open <url> --hidden agent-browser --cdp 9222 snapshot -i agent-browser --cdp 9222 click @e1 stealth-browser close ``` `stealth-browser` is at `scripts/stealth-browser` relative to this skill. Use full path: ```bash ~/.claude/skills/stealth-browser/scripts/stealth-browser read <url> ``` ## Commands ```bash stealth-browser read <url> # Fetch as markdown (waits for JS render) stealth-browser open <url> --hidden # Launch hidden Chrome stealth-browser close # Stop Chrome stealth-browser status # Check state stealth-browser screenshot [path] # CDP screenshot (auto unhide/re-hide) stealth-browser hide / unhide # Toggle visibility stealth-browser doctor # Check dependencies stealth-browser setup # Reset Chrome profile ``` ## After Opening: CDP Commands via agent-browser ```bash agent-browser --cdp 9222 open <url> # Navigate agent-browser --cdp 9222 snapshot -i # Get interactive elements agent-browser --cdp 9222 click @e1 # Click by ref agent-browser --cdp 9222 fill @e2 "text" # Fill input agent-browser --cdp 9222 type @e2 "text" # Type without clearing agent-browser --cdp 9222 press Enter # Press key agent-browser --cdp 9222 scroll down 500 # Scroll agent-browser --cdp 9222 get text @e1 # Get text agent-browser --cdp 9222 get url # Get current URL agent-browser --cdp 9222 eval "document.title" # Run JavaScript agent-browser --cdp 9222 screenshot path.png # Screenshot agent-browser --cdp 9222 wait 2000 # Wait agent-browser --cdp 9222 back # Navigate back ``` Always re-snapshot after navigation or DOM changes - element refs change. ## Chrome Persistence Chrome stays running and hidden after `read` or `open --hidden`: - **First operation**: brief flash during Chrome startup (small window, top-left corner) - **All subsequent operations**: completely invisible, instant - **Close when done**: `stealth-browser close` ## Domain Blocklist (learning) Blocked domains are remembered at `data/blocked-domains.txt`. A PreToolUse hook intercepts future WebFetch calls to those domains and tells Claude to use stealth-browser directly. See [hooks/README.md](hooks/README.md) for Claude Code integration setup. See [README.md](README.md) for full human documentation.
Related in Cloud & DevOps
appbuilder-action-scaffolder
IncludedCreate, implement, deploy, and debug Adobe Runtime actions with consistent layout, validation, and error handling. Use this skill whenever the user needs to add actions to an App Builder project, understand action structure (params, response format, web/raw actions), configure actions in the manifest, use App Builder SDKs (State, Files, Events, database), deploy and invoke actions via CLI, debug action issues, or implement patterns such as webhook receivers, custom event providers, journaling consumers, large payload redirects, action sequence pipelines, and Asset Compute workers. Also trigger when users mention serverless functions in Adobe context, action logging, IMS authentication for actions, or cron-style scheduled actions.
orchestrating-datacloud
IncludedSalesforce Data Cloud product orchestrator for connect→prepare→harmonize→segment→act workflows. Use this skill when the user needs a multi-step Data Cloud pipeline, cross-phase troubleshooting, or data space and data kit management. TRIGGER when: user needs a multi-step Data Cloud pipeline, asks to set up or troubleshoot Data Cloud across phases, manages data spaces or data kits, or wants a cross-phase sf data360 workflow. DO NOT TRIGGER when: work is isolated to a single phase (use the matching phase-specific skill), the task is STDM/session tracing/parquet telemetry (use observing-agentforce), standard CRM SOQL (use querying-soql), or Apex implementation (use generating-apex).
github-project-automation
IncludedAutomate GitHub repository setup with CI/CD workflows, issue templates, Dependabot, and CodeQL security scanning. Includes 12 production-tested workflows and prevents 18 errors: YAML syntax, action pinning, and configuration. Use when: setting up GitHub Actions CI/CD, creating issue/PR templates, enabling Dependabot or CodeQL scanning, deploying to Cloudflare Workers, implementing matrix testing, or troubleshooting YAML indentation, action version pinning, secrets syntax, runner versions, or CodeQL configuration. Keywords: github actions, github workflow, ci/cd, issue templates, pull request templates, dependabot, codeql, security scanning, yaml syntax, github automation, repository setup, workflow templates, github actions matrix, secrets management, branch protection, codeowners, github projects, continuous integration, continuous deployment, workflow syntax error, action version pinning, runner version, github context, yaml indentation error
sf-datacloud
IncludedSalesforce Data Cloud product orchestrator for connect→prepare→harmonize→segment→act workflows. TRIGGER when: user needs a multi-step Data Cloud pipeline, asks to set up or troubleshoot Data Cloud across phases, manages data spaces or data kits, or wants a cross-phase `sf data360` workflow. DO NOT TRIGGER when: work is isolated to a single phase (use the matching sf-datacloud-* skill), the task is STDM/session tracing/parquet telemetry (use sf-ai-agentforce-observability), standard CRM SOQL (use sf-soql), or Apex implementation (use sf-apex).
fabric-cli
IncludedUse this skill for Fabric.so CLI workflows with the `fabric` terminal command: diagnose/install/login, search or browse a Fabric library, save notes/links/files, create folders, ask the Fabric AI assistant, manage tasks/workspaces, generate shell completion, check subscription usage, produce JSON output, and use Fabric as persistent agent memory. Do not use for Microsoft Fabric/Azure/Power BI `fab`, Daniel Miessler's Fabric framework, Python Fabric SSH, Fabric.js, or textile/fashion fabric.
lark
IncludedLark/Feishu CLI skills: lark-cli operations for docs, markdown, sheets, base, calendar, im, mail, task, okr, drive, wiki, slides, whiteboard, apps, approval, attendance, contact, vc, minutes, event. Use when the user needs to operate Lark/Feishu resources via lark-cli, send messages, manage documents, spreadsheets, calendars, tasks, OKRs, deploy web pages, or any Feishu/Lark workspace operations.