{"id":47453629,"url":"https://github.com/pasky/chrome-cdp-skill","last_synced_at":"2026-04-06T11:00:50.915Z","repository":{"id":344194258,"uuid":"1180351558","full_name":"pasky/chrome-cdp-skill","owner":"pasky","description":"Give your AI agent access to your live Chrome session — works out of the box, connects to tabs you already have open","archived":false,"fork":false,"pushed_at":"2026-03-13T23:22:35.000Z","size":19,"stargazers_count":192,"open_issues_count":3,"forks_count":9,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-14T02:22:09.023Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pasky.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-13T00:35:39.000Z","updated_at":"2026-03-14T02:19:52.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/pasky/chrome-cdp-skill","commit_stats":null,"previous_names":["pasky/chrome-cdp-skill"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/pasky/chrome-cdp-skill","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pasky%2Fchrome-cdp-skill","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pasky%2Fchrome-cdp-skill/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pasky%2Fchrome-cdp-skill/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pasky%2Fchrome-cdp-skill/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pasky","download_url":"https://codeload.github.com/pasky/chrome-cdp-skill/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pasky%2Fchrome-cdp-skill/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31469743,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-06T08:36:52.050Z","status":"ssl_error","status_checked_at":"2026-04-06T08:36:51.267Z","response_time":112,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-03-23T18:00:33.561Z","updated_at":"2026-04-06T11:00:50.910Z","avatar_url":"https://github.com/pasky.png","language":"JavaScript","readme":"# chrome-cdp\n\nLet your AI agent see and interact with your **live Chrome session** — the tabs you already have open, your logged-in accounts, your current page state. No browser automation framework, no separate browser instance, no re-login.\n\nWorks out of the box with any Chrome installation. One toggle to enable, nothing else to install.\n\n## Why this matters\n\nMost browser automation tools launch a fresh, isolated browser. This one connects to the Chrome you're already running, so your agent can:\n\n- Read pages you're logged into (Gmail, GitHub, internal tools, ...)\n- Interact with tabs you're actively working in\n- See the actual state of a page mid-workflow, not a clean reload\n\n## Installation\n\n### As a pi skill\n\n```bash\npi install git:github.com/pasky/chrome-cdp-skill@v1.0.1\n```\n\n### For other agents (Amp, Claude Code, Cursor, etc.)\n\nClone or copy the `skills/chrome-cdp/` directory wherever your agent loads skills or context from. The only runtime dependency is **Node.js 22+** — no npm install needed.\n\n### Enable remote debugging in Chrome\n\nNavigate to `chrome://inspect/#remote-debugging` and toggle the switch. That's it.\n\nThe CLI auto-detects Chrome, Chromium, Brave, Edge, and Vivaldi on macOS, Linux, and Windows. If your browser stores `DevToolsActivePort` in a non-standard location, set the `CDP_PORT_FILE` environment variable to the full path.\n\n## Usage\n\n```bash\nscripts/cdp.mjs list                              # list open tabs\nscripts/cdp.mjs shot   \u003ctarget\u003e                   # screenshot → runtime dir\nscripts/cdp.mjs snap   \u003ctarget\u003e                   # accessibility tree (compact, semantic)\nscripts/cdp.mjs html   \u003ctarget\u003e [\".selector\"]     # full HTML or scoped to CSS selector\nscripts/cdp.mjs eval   \u003ctarget\u003e \"expression\"      # evaluate JS in page context\nscripts/cdp.mjs nav    \u003ctarget\u003e https://...       # navigate and wait for load\nscripts/cdp.mjs net    \u003ctarget\u003e                   # network resource timing\nscripts/cdp.mjs click  \u003ctarget\u003e \"selector\"        # click element by CSS selector\nscripts/cdp.mjs clickxy \u003ctarget\u003e \u003cx\u003e \u003cy\u003e          # click at CSS pixel coordinates\nscripts/cdp.mjs type   \u003ctarget\u003e \"text\"            # type at focused element (works in cross-origin iframes)\nscripts/cdp.mjs loadall \u003ctarget\u003e \"selector\"       # click \"load more\" until gone\nscripts/cdp.mjs evalraw \u003ctarget\u003e \u003cmethod\u003e [json]  # raw CDP command passthrough\nscripts/cdp.mjs open   [url]                      # open new tab (triggers Allow prompt)\nscripts/cdp.mjs stop   [target]                   # stop daemon(s)\n```\n\n`\u003ctarget\u003e` is a unique prefix of the targetId shown by `list`.\n\n## Why not chrome-devtools-mcp?\n\n[chrome-devtools-mcp](https://github.com/ChromeDevTools/chrome-devtools-mcp) reconnects on every command, so Chrome's \"Allow debugging\" modal can re-appear repeatedly and target enumeration times out with many tabs open. `chrome-cdp` holds one persistent daemon per tab — the modal fires once, and it handles 100+ tabs reliably.\n\n## How it works\n\nConnects directly to Chrome's remote debugging WebSocket — no Puppeteer, no intermediary. On first access to a tab, a lightweight background daemon is spawned that holds the session open. Chrome's \"Allow debugging\" modal appears once per tab; subsequent commands reuse the daemon silently. Daemons auto-exit after 20 minutes of inactivity.\n\nThis approach is also why it handles 100+ open tabs reliably, where tools built on Puppeteer often time out during target enumeration.\n","funding_links":[],"categories":["🧠 Agent Skills","JavaScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpasky%2Fchrome-cdp-skill","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpasky%2Fchrome-cdp-skill","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpasky%2Fchrome-cdp-skill/lists"}