chrome-cdp — скилл для Claude Code: что делает и как установить
Скилл подключает ИИ-агента к запущенному браузеру Chrome через протокол DevTools без Puppeteer. Пригодится для отладки вёрстки, снятия скриншотов и кликов по элементам.
npx skills add pasky/chrome-cdp-skill --skill chrome-cdp -a claude-codeЧто делает chrome-cdp
Скилл управляет локальным Chrome, Chromium, Brave или Edge через скрипт scripts/cdp.mjs. Подключение идёт напрямую по WebSocket к порту отладки, поэтому тяжёлые зависимости вроде Puppeteer не нужны. Инструмент умеет читать список вкладок командой list, открывать новые страницы, делать снимки экрана и считывать дерево доступности с помощью snap.
Для кликов и ввода данных поддерживаются команды click, clickxy и type. Команда type передаёт символы напрямую через Input.insertText, что позволяет вводить текст во фреймы других доменов. Скриншоты через shot захватывают только видимую область окна, а координаты кликов нужно пересчитывать с учётом DPR страницы.
Для запуска нужен Node.js 22+ со встроенным WebSocket и включённая удалённая отладка в chrome://inspect/#remote-debugging. Фоновый процесс поддерживает сессию активной и автоматически завершается через 20 минут простоя.
Какие задачи решает
- снять скриншот видимой области активной вкладки Chrome
- получить компактное дерево доступности открытой страницы
- кликнуть по CSS-селектору или точным координатам в браузере
- ввести текст в поле ввода внутри кросс-доменного iframe
Примеры запросов агенту
- Посмотри открытые вкладки в Chrome и покажи их список
- Сделай скриншот вкладки 6BE827FA и проверь кнопку входа
- Введи текст в поле поиска на активной странице через CDP
Как установить chrome-cdp
1Через Skills CLI (Vercel)
npx skills add pasky/chrome-cdp-skill --skill chrome-cdp -a claude-code2Вручную: положить файлы
~/.claude/skills/chrome-cdp/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/chrome-cdp/
1Через Skills CLI (Vercel)
npx skills add pasky/chrome-cdp-skill --skill chrome-cdp -a codex2Вручную: положить файлы
.agents/skills/chrome-cdp/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add pasky/chrome-cdp-skill --skill chrome-cdp -a cursor2Вручную: положить файлы
.cursor/skills/chrome-cdp/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install pasky/chrome-cdp-skill chrome-cdp2Вручную: положить файлы
.github/skills/chrome-cdp/SKILL.md1Через Skills CLI (Vercel)
npx skills add pasky/chrome-cdp-skill --skill chrome-cdp -a gemini-cli2Командой платформы
gemini skills install https://github.com/pasky/chrome-cdp-skill --path skills/chrome-cdpВручную: положить файлы
.devin/skills/chrome-cdp/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add pasky/chrome-cdp-skill --skill chrome-cdp -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
Похожие
Вопросы о chrome-cdp
Как установить chrome-cdp в Claude Code?
Выполните команду npx skills add pasky/chrome-cdp-skill --skill chrome-cdp -a claude-code в терминале.
Что делает chrome-cdp?
Скилл позволяет агенту взаимодействовать с открытыми вкладками браузера через Chrome DevTools Protocol: выполнять JavaScript, делать снимки экрана, считывать дерево доступности и симулировать действия пользователя.
Что требуется для работы скилла?
Необходим Node.js версии 22 или новее и браузер на базе Chromium с включённым переключателем удалённой отладки по адресу chrome://inspect/#remote-debugging.
Исходный текст
SKILL.md · MIT
--- name: chrome-cdp description: 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) --- # Chrome CDP Lightweight Chrome DevTools Protocol CLI. Connects directly via WebSocket — no Puppeteer, works with 100+ tabs, instant connection. ## Prerequisites - Chrome (or Chromium, Brave, Edge, Vivaldi) with remote debugging enabled: open `chrome://inspect/#remote-debugging` and toggle the switch - Node.js 22+ (uses built-in WebSocket) - If your browser's `DevToolsActivePort` is in a non-standard location, set `CDP_PORT_FILE` to its full path ## Commands All commands use `scripts/cdp.mjs`. The `<target>` is a **unique** targetId prefix from `list`; copy the full prefix shown in the `list` output (for example `6BE827FA`). The CLI rejects ambiguous prefixes. ### List open pages ```bash scripts/cdp.mjs list ``` ### Take a screenshot ```bash scripts/cdp.mjs shot <target> [file] # default: screenshot-<target>.png in runtime dir ``` Captures the **viewport only**. Scroll first with `eval` if you need content below the fold. Output includes the page's DPR and coordinate conversion hint (see **Coordinates** below). ### Accessibility tree snapshot ```bash scripts/cdp.mjs snap <target> ``` ### Evaluate JavaScript ```bash scripts/cdp.mjs eval <target> <expr> ``` > **Watch out:** avoid index-based selection (`querySelectorAll(...)[i]`) across multiple `eval` calls when the DOM can change between them (e.g. after clicking Ignore, card indices shift). Collect all data in one `eval` or use stable selectors. ### Other commands ```bash scripts/cdp.mjs html <target> [selector] # full page or element HTML scripts/cdp.mjs nav <target> <url> # navigate and wait for load scripts/cdp.mjs net <target> # resource timing entries scripts/cdp.mjs click <target> <selector> # click element by CSS selector scripts/cdp.mjs clickxy <target> <x> <y> # click at CSS pixel coords scripts/cdp.mjs type <target> <text> # Input.insertText at current focus; works in cross-origin iframes unlike eval scripts/cdp.mjs loadall <target> <selector> [ms] # click "load more" until gone (default 1500ms between clicks) scripts/cdp.mjs evalraw <target> <method> [json] # raw CDP command passthrough scripts/cdp.mjs open [url] # open new tab (each triggers Allow prompt) scripts/cdp.mjs stop [target] # stop daemon(s) ``` ## Coordinates `shot` saves an image at native resolution: image pixels = CSS pixels × DPR. CDP Input events (`clickxy` etc.) take **CSS pixels**. ``` CSS px = screenshot image px / DPR ``` `shot` prints the DPR for the current page. Typical Retina (DPR=2): divide screenshot coords by 2. ## Tips - Prefer `snap --compact` over `html` for page structure. - Use `type` (not eval) to enter text in cross-origin iframes — `click`/`clickxy` to focus first, then `type`. - Chrome shows an "Allow debugging" modal once per tab on first access. A background daemon keeps the session alive so subsequent commands need no further approval. Daemons auto-exit after 20 minutes of inactivity.
© pasky · MIT · pasky/chrome-cdp-skill