skills/chrome-cdp/SKILL.md
Interact with local Chrome browser session (only on explicit user approval after being asked to inspect, debug, or interact with a page open in Chrome). Connects via Chrome DevTools Protocol — no extension, no Puppeteer, handles 100+ tabs.
npx skillsauth add b-open-io/prompts chrome-cdpInstall 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.
Lightweight Chrome DevTools Protocol CLI. Connects directly via WebSocket — no Puppeteer, no extensions, instant connection, handles 100+ tabs. Operates on the user's live browser session with existing logins and state.
Chrome with remote debugging enabled. If list fails with "Chrome remote debugging not enabled", run the enable command to open the settings page:
bun ${SKILL_PATH}/scripts/cdp.ts enable
Then tell the user: "I've opened Chrome's remote debugging settings. Please toggle the switch to enable it, then I'll try again."
Bun runtime (already available in this environment).
Auto-setup flow: Always try list first. If it fails, run enable and ask the user to toggle. Then retry list.
Trigger on explicit user approval to:
Do NOT activate speculatively. The user must ask you to interact with Chrome.
All commands use bun ${SKILL_PATH}/scripts/cdp.ts. The <target> is a unique prefix of the targetId shown by list. Copy the prefix exactly as shown.
bun ${SKILL_PATH}/scripts/cdp.ts list
Always run list first to see available tabs and get target prefixes.
bun ${SKILL_PATH}/scripts/cdp.ts snap <target>
Returns a semantic tree of the page — roles, names, values. Best for understanding page structure without raw HTML noise.
bun ${SKILL_PATH}/scripts/cdp.ts eval <target> "document.title"
bun ${SKILL_PATH}/scripts/cdp.ts eval <target> "document.querySelectorAll('h1').length"
bun ${SKILL_PATH}/scripts/cdp.ts eval <target> "[...document.querySelectorAll('a')].map(a => a.href).join('\\n')"
Runs in the page context — full DOM access, can call page functions, read variables.
bun ${SKILL_PATH}/scripts/cdp.ts nav <target> "https://example.com"
Navigates and waits for page load (up to 30s).
bun ${SKILL_PATH}/scripts/cdp.ts click <target> "button.submit"
bun ${SKILL_PATH}/scripts/cdp.ts click <target> "[data-testid='login-btn']"
bun ${SKILL_PATH}/scripts/cdp.ts type <target> "Hello world"
Uses Input.insertText — works in cross-origin iframes where JS eval is blocked.
bun ${SKILL_PATH}/scripts/cdp.ts shot <target>
Saves to /tmp/screenshot.png.
bun ${SKILL_PATH}/scripts/cdp.ts html <target> # full page
bun ${SKILL_PATH}/scripts/cdp.ts html <target> ".sidebar" # specific selector
bun ${SKILL_PATH}/scripts/cdp.ts stop # all daemons
bun ${SKILL_PATH}/scripts/cdp.ts stop <target> # specific daemon
DevToolsActivePort file when remote debugging is enabled1. bun cdp.ts list # see what's open
2. bun cdp.ts snap 6BE827FA # understand the page
3. bun cdp.ts eval 6BE827FA "document.title" # extract specific data
4. bun cdp.ts click 6BE827FA ".btn-submit" # interact
development
This skill should be used when the user asks to "design a business card", "make a printable PDF", "render HTML to PDF", "generate a postcard", "build print collateral", "set up an HTML print pipeline", or needs help with bleed, safe areas, font embedding, or QR generation for print. Provides a Playwright-based pipeline with multiple bundled templates and theme variants for business cards (minimal, watercolor light, watercolor dark) and instructions for adding new templates.
tools
Get recent tweets from an X/Twitter user. Use when user asks "what has @username posted", "recent tweets from", "user's X posts", "show timeline for", "what is @user saying". Requires X_BEARER_TOKEN.
data-ai
Get X/Twitter user profile by username. Use when user asks "who is @username", "get X profile", "lookup Twitter user", "find X account", "user details", "follower count for". Requires X_BEARER_TOKEN.
data-ai
Search recent X/Twitter posts by query. Returns RAW TWEETS (last 7 days). Use when user asks "search X for", "find tweets about", "what are people saying about", "Twitter search", "raw tweets about". For AI summaries/sentiment, use x-research instead. Requires X_BEARER_TOKEN.