skills/chrome-browser/SKILL.md
Use when setting up a dedicated Chrome browser for Playwright MCP with session persistence, or when encountering Cloudflare challenges during browser automation. Covers CDP setup, launchd auto-start, and persistent login sessions.
npx skillsauth add eins78/skills chrome-browserInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
A dedicated headed Chrome for Testing (CfT) instance with CDP for Playwright MCP. Persistent profile (cookies/logins survive restarts), launchd-managed, multi-session safe. Distinct "TEST" badge icon in the Dock.
CFBundleIdentifier — shows as a separate app in Dock/Cmd+Tab with a distinctive iconChrome for Testing (CfT, ~/.local/Applications/)
└── CDP on port 9222 + ergonomic flags
└── ~/.cache/chrome-cdp-profile (persistent, isolated from daily Chrome)
├── Claude session 1 → Playwright MCP → CDP
├── Claude session 2 → Playwright MCP → CDP
└── User can log into sites manually (headed)
# Check CDP
curl -s http://127.0.0.1:9222/json/version
# Configure Playwright MCP (user-scope, one-time)
claude mcp add -s user playwright -- npx @playwright/mcp --cdp-endpoint http://127.0.0.1:9222
# Manual launch (if not using launchd)
${CLAUDE_SKILL_DIR}/scripts/launch-chrome-cdp.sh
# Install / update Chrome for Testing
${CLAUDE_SKILL_DIR}/scripts/install-cft.sh # latest stable
${CLAUDE_SKILL_DIR}/scripts/install-cft.sh 147 # specific milestone
| Decision | Rationale |
|----------|-----------|
| Chrome for Testing | Distinct Dock icon ("TEST" badge), own CFBundleIdentifier, no auto-update surprises |
| ~/.local/Applications/ install path | User-writable, stable path independent of puppeteer cache |
| Isolated profile (~/.cache/chrome-cdp-profile) | Avoids single-instance lock, doesn't interfere with daily browsing |
| Headed (not headless) | User can log into sites manually, cookies persist for automation |
| launchd KeepAlive on crash only | Restart on crash, but intentional quit stays quit |
| --no-first-run --no-default-browser-check | Zero-friction automated sessions |
| --disable-infobars + UI suppression flags | Suppress infobars, search engine choice, hang monitor, popup blocking, form repost dialogs |
| --disable-features=Translate,... | Disable translation, password check, autofill, media routing, AI mode, tab organization, optimization hints |
| --password-store=basic --use-mock-keychain | Bypass macOS keychain — no unlock prompts during automation |
| Background reduction flags | Disable background networking, phishing detection, component updates, sync, metrics upload |
| User-scope MCP (-s user) | Available across all projects |
${CLAUDE_SKILL_DIR}/scripts/launch-chrome-cdp.sh to start or check status.ps aux | grep chrome-cdp-profile${CLAUDE_SKILL_DIR}/scripts/install-cft.sh to download and install the latest stable version.See INSTALL.md for the full setup checklist, including the launch script and launchd plist.
If you encounter a setup step that fails, a Chrome/Playwright behavior change, or missing guidance in this skill, don't just work around it — fix the skill:
https://github.com/eins78/agent-skills on a new branch, fixing the issue directlyhttps://github.com/eins78/agent-skills with: what failed, the actual behavior, and the suggested fixNever silently work around a skill gap. The fix benefits all future sessions.
development
Use when writing or reviewing any TypeScript code. Covers discriminated unions, branded types, Zod at boundaries, const arrays over enums, and safe access patterns.
development
Use when facing technical uncertainty, unproven architecture, or building a large feature where agents or humans risk getting lost in details before confirming the architecture works. Prevents horizontal layer-by-layer building that delays integration feedback.
tools
Use when sending commands to tmux panes, reading pane output, creating windows/panes, or monitoring tmux sessions. Covers reliable targeting, synchronization, and output capture patterns.
tools
Use when converting a PDF into a fold-and-print booklet (zine) — A4 sheets, double-sided, short-edge flip, fold to A5. Triggers: make a zine, make a booklet, booklet PDF, imposition, fold-and-print, 2-up booklet, print as booklet, signature imposition, pdf-zine, pdf2zine, bookletimposer. Wraps the `pdf2zine` Docker-based CLI; prefer it over hand-rolled Ghostscript or pdfjam scripts.