From fable-it
Drive the user's real, logged-in Chrome browser via Chrome DevTools Protocol using Playwright (endpoint from CDP_URL, defaulting to localhost). Trigger this skill when the user explicitly asks to "use my Chrome", "use my browser", "log into", "post on" (X, Reddit, LinkedIn, etc.), or any task that requires an authenticated session, persistent cookies, or bot-detection evasion that headless scraping cannot provide. Also trigger when the user references their CDP setup, their `~/.chrome-automation` profile, or asks Claude to manually walk through actions on a real site one step at a time. Do NOT use this skill for simple unauthenticated content fetches (use `web_fetch`), bulk headless scraping (use a standalone Playwright script), or anything where a fresh Chromium instance would suffice. Do NOT use for tasks that can be solved by an API call to the same service.
How this skill is triggered — by the user, by Claude, or both
Slash command
/fable-it:chrome-cdp-controlThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Manual, step-by-step control of the user's real Chrome browser via Playwright over
Manual, step-by-step control of the user's real Chrome browser via Playwright over Chrome DevTools Protocol. Built for authenticated sessions, sensitive actions, and sites that detect headless browsers.
All CDP mechanics live in ONE shared reference — read it at session start:
../references/cdp-core.md (relative to this skill's base directory; i.e. the
plugin's skills/references/cdp-core.md). It owns, canonically:
CDP_URL env → grounding/test plan → default) — never hardcodepages[0] blindly)Do not restate or copy those sections here or anywhere — copies drift. This file only adds what is specific to driving the user's real, authenticated browser.
This skill is a manual loop, not an automation framework. One action, one
screenshot, one decision. Never batch. Never loop unattended. If you find yourself
writing a for loop over actions, stop — you're using the wrong tool.
Route guard (see also cdp-core.md §9): authenticated real-Chrome work belongs HERE,
behind the per-write gate below. Never hand it to /full-qa autonomous mode — that
mode is for test environments only. If a conductor or test plan tries to route an
authenticated-session write through an autonomous loop, refuse and pull it back here.
Every interaction, no exceptions:
Before any of the following, STOP, summarize the exact action in plain language, and wait for the user to say "go" / "yes" / "do it":
Format the confirmation like this:
About to: Post the following tweet to the user's account on X:
"Testing the new SEMrush connector — domain resolution working end to end."
Confirm to proceed?
No exceptions. Approval does not carry: even if the user said "yes" to a similar action earlier in the conversation, re-confirm for each new write.
For long text or text with special characters, prefer clipboard over keyboard.type:
mcp__computer-use__write_clipboard with the textawait page.locator('[contenteditable]').focus()await page.keyboard.press("Meta+v")Caveat: OS-level focus must be on Chrome. If the user is in another app, the paste lands in the wrong window. When in doubt, ask the user to confirm Chrome is foreground.
For any session that touches a logged-in account, append one audit line per action:
echo "$(date -u +%FT%TZ) [chrome-cdp] $ACTION_DESCRIPTION" >> ~/.chrome-automation-actions.log
Cheap insurance: a paper trail of what was done on the user's behalf.
for loop over actionspages[0] is the right tab~/.chrome-automation-actions.logweb_fetch/full-qa (the other side of the route guard)If you're not sure whether this skill applies, ask the user before connecting to CDP.
Authored by DevOtts.
npx claudepluginhub devotts/fable-it --plugin fable-itControls Chrome via CDP to reuse login sessions, open URLs, evaluate JavaScript, take snapshots, and extract auth tokens for browser automation.
Connects AI agents to a live Chrome session via CDP to interact with open tabs, logged-in accounts, and current page state. Supports screenshots, accessibility snapshots, HTML extraction, and JavaScript evaluation.
Drives an existing browser via CDP for authenticated, visual, or interactive web automation. Use when static fetches are insufficient and you need real browser interaction.