Browser Harness JS — скилл

Скилл cdp: агент управляет вашим Chrome напрямую через протокол DevTools, 652 типизированных метода без готовых click и goto

  • 493 ★ репозитория
  • Последний коммит
  • MIT
СкиллОфициальный

Широкий доступ

Почему такой уровень

  • Подключается к вашему запущенному Chrome и может читать страницы, куки и вводить данные в сайтах, где вы уже вошли в аккаунт
  • Агент вызывает любые методы протокола, включая загрузку и скачивание файлов, перехват сетевых запросов и печать страниц
  • При первом запуске ставит среду Bun и держит фоновый сервер на локальном порту, пока вы его не остановите
Все причины и проверки

browser-use/browser-harness-js

Установка

Работает в

В терминале, через SkillFoxx CLI

npx skillfoxx add skills/browser-harness-js

Определит агенты на машине, покажет уровень доступа и зафиксирует версию.

Другие способы установки

Доступ и проверки

Как мы проверяем

Широкий доступИнструмент может менять данные, выполнять команды или работать с секретами.

  • Подключается к вашему запущенному Chrome и может читать страницы, куки и вводить данные в сайтах, где вы уже вошли в аккаунт
  • Агент вызывает любые методы протокола, включая загрузку и скачивание файлов, перехват сетевых запросов и печать страниц
  • При первом запуске ставит среду Bun и держит фоновый сервер на локальном порту, пока вы его не остановите

Это чужой код. Посмотрите файлы в репозитории перед установкой.

Что делает

Browser Harness JS — самый тонкий мост между языковой моделью и Chrome. Библиотека сгенерирована из описаний протокола Chrome DevTools: она открывает 56 доменов и 652 типизированных метода вида `session.Page.navigate({url})`. Готовых помощников вроде `click()`, `goto()` или `upload_file()` нет: по замыслу авторов каждый такой помощник скрывает часть возможностей протокола, а агент сам пишет нужный вызов, например `Input.dispatchMouseEvent` или `DOM.setFileInputFiles`. Работает это через консольную программу `browser-harness-js`. При первом запуске она поднимает фоновый HTTP-сервер на Bun с одним постоянным соединением `Session`, а все следующие вызовы идут в тот же процесс. Подключение, выбранная вкладка и глобальные переменные сохраняются между вызовами. `session.connect()` без аргументов сам находит запущенный Chromium-браузер: Chrome, Chromium, Edge, Brave, Arc, Vivaldi, Opera, Comet или Canary. В папке `interaction-skills/` лежат короткие рецепты для неочевидных вещей: выпадающие списки, `shadow DOM`, `iframe`, загрузка и скачивание файлов, диалоги, куки, скриншоты, печать в PDF, прокрутка и перетаскивание.

Для кого. Для разработчиков и энтузиастов агентов, которым нужен прямой и полный доступ к Chrome без обертки над браузером.

Подходит, если

  • Нужно, чтобы агент посмотрел все открытые вкладки, сгруппировал их по темам и сделал скриншот самой интересной
  • Задача требует редкого вызова протокола, которого нет в обертках: все 14 параметров `Input.dispatchMouseEvent` или перехват сети
  • Нужно подключиться к уже запущенному браузеру с вашей сессией и действовать в нем без нового окна
  • Страница использует `shadow DOM`, вложенные `iframe` или нестандартные выпадающие списки, и нужны проверенные рецепты на чистом CDP
  • Надо сохранить страницу в PDF, скачать файл или управлять диалогами через протокол

Не подходит, если

  • Нужны простые команды вроде «открой сайт и нажми кнопку» без знания протокола: для этого лучше подойдет браузерный CLI с готовыми действиями
  • Задача не должна касаться вашего основного браузера с рабочими входами в аккаунты: подключение идет к реальной сессии
  • На машине нельзя ставить новое ПО: консольная программа при первом запуске сама ставит Bun, если его нет
  • Нужен браузер не на Chromium: скилл подключается к Chrome, Edge, Brave и другим браузерам на этом движке

Пример запроса к агенту

Используй скилл cdp: подключись к моему Chrome, перечисли все открытые вкладки, сгруппируй их по темам и сделай скриншот самой интересной

Ограничения

Нужен браузер на Chromium с удаленной отладкой. Если Chrome просит включить флажок удаленной отладки, его нужно отметить, так агент подключается. Для Chrome 144 и новее порт читается из файла `DevToolsActivePort`.

Программа `browser-harness-js` не попадает в PATH автоматически: после `npx skills add` скилл лежит в папке агента, и ссылку на программу нужно создать самому, пути для macOS и Linux приведены в SKILL.md. Если Bun нет, CLI сам его поставит; отключить это можно переменной `BROWSER_HARNESS_SKIP_BUN_INSTALL=1`.

Многострочные фрагменты через стандартный ввод должны явно возвращать результат словом `return`. Порт сервера по умолчанию 9876, журнал лежит в `/tmp/browser-harness-js.log`, оба параметра меняются переменными `CDP_REPL_PORT` и `CDP_REPL_LOG`.

Как отключить. Остановите фоновый сервер командой `browser-harness-js --stop`. Затем удалите ссылку `browser-harness-js` из PATH и папку скилла cdp из каталога скиллов агента, например `~/.claude/skills/cdp`. В Chrome можно снять флажок удаленной отладки, чтобы закрыть подключение.

Частые вопросы

Как поставить Browser Harness JS в Claude Code?

Выполните `npx skills add https://github.com/browser-use/browser-harness-js --skill cdp`. Затем создайте ссылку `browser-harness-js` на `sdk/browser-harness-js` в каталоге из PATH: команда установки CLI в PATH не кладет. Либо вставьте агенту готовую фразу из README, и он сделает все шаги сам.

Почему в инструменте нет функций `click` и `goto`?

Авторы считают каждого помощника неточным слоем над протоколом: `click(x, y)` скрывает 14 параметров `Input.dispatchMouseEvent`, а урезанная обертка ограничивает агента. Поэтому доступен каждый метод CDP в виде `session.<Домен>.<метод>(параметры)`, а подсказки дают типы.

Как подключиться к уже открытому Chrome?

Вызовите `await session.connect()` без аргументов: скилл ищет запущенные браузеры по файлу `DevToolsActivePort` в профиле и выбирает последний запущенный. Выбрать конкретный можно через `{ profileDir }` или `{ wsUrl }`. Если Chrome попросит включить удаленную отладку, отметьте флажок.

Что сохраняется между вызовами?

Одно соединение с браузером, активная вкладка и значения в `globalThis`. Пока работает фоновый сервер Bun, следующие вызовы `browser-harness-js` используют тот же `session`. Для чистого состояния есть `--restart`, для остановки — `--stop`.

Что внутри папки `interaction-skills`?

Рецепты на чистом CDP по отдельным механикам: подключение, куки, вложенные `iframe` и `iframe` из других источников, диалоги, скачивание, перетаскивание, выпадающие списки, сетевые запросы, печать в PDF, скриншоты, прокрутка, `shadow DOM`, вкладки, загрузка файлов и область просмотра. Автор принимает новые рецепты, по одному на файл.

Обсуждение

Вопросов и отзывов пока нет.

Скиллы

Скилл и CLI от Browser Use: агент управляет вашим настоящим Chrome через DevTools Protocol, под вашей учетной записью, и сам дописывает недостающие функции

СкиллШирокий доступ18,6 тыс.Звезды репозитория

Скилл для Amp, Claude Code и Cursor: агент управляет вашим живым Chrome с открытыми вкладками и входами в аккаунты через один переключатель отладки

СкиллШирокий доступ3,3 тыс.Звезды репозитория

CLI, скилл и MCP для управления Chrome короткими скриптами Puppeteer, вкладки сохраняют состояние между вызовами

CLIШирокий доступ6,7 тыс.Звезды репозитория

Плагин для Claude Code, который управляет вашим Chrome через DevTools Protocol: вкладки, формы, выгрузка страниц и скриншоты без сторонних зависимостей

ПлагинШирокий доступ362Звезды репозитория
Официальный

Локальная платформа автоматизации браузера: MCP-сервер, CLI и скиллы, чтобы агент управлял Chrome, заполнял формы и доставал данные со страниц

MCP-серверШирокий доступ1,4 тыс.Звезды репозитория
Выбор редакции

CLI, скилл и Python-библиотека для управления браузером: агент кликает, заполняет формы и читает страницы через CDP

CLIШирокий доступ119 тыс.Звезды репозитория

Сравнение с похожими

Записи с тем же главным запросом: чем они отличаются.

ЗаписьОфициальныйАвторизацияЗвезды репозиторияГлавное отличие
Browser Harness JS (эта запись)да493
Browser Useнет118 988CLI, скилл и библиотека на Python с готовыми действиями агента в браузере
browser-use-mcp-serverнетAPI-ключ848MCP-сервер на Playwright с готовыми командами открытия страниц, кликов и форм

Коротко о README

README объявляет идею: самый тонкий мост от языковой модели к Chrome без готовых помощников и рельсов, где протокол и есть API. Дальше установка одной командой и готовая фраза для агента, примечание про флажок отладки, список файлов репозитория и объяснение, почему помощников нет. Исключения перечислены: `listPageTargets`, `resolveWsUrl`, `session.use` и `session.waitFor`. В конце просьба присылать новые рецепты взаимодействия на чистом CDP.

Бейдж для README

Исходный SKILL.md

---
name: cdp
description: Drive Chrome via the DevTools Protocol from JavaScript. Run JS snippets through the `browser-harness-js` CLI — it auto-spawns a long-lived bun HTTP server holding a fully-typed CDP `Session`, and every call (`browser-harness-js 'await session.Page.navigate(...)'`) executes against the same persistent connection. Session, active target, and globals survive across calls. Use when the user wants to automate, script, or inspect a Chrome browser via CDP — single tab or multi-tab, attach to existing Chrome or to a new one launched with --remote-debugging-port.
---

# CDP — `browser-harness-js` skill

Custom codegen'd CDP SDK (every method from browser_protocol.json + js_protocol.json gets a typed wrapper) plus a tiny HTTP server that holds one persistent CDP `Session`. The `browser-harness-js` CLI auto-starts the server on first use and forwards JS snippets to it.

The SDK lives in the skill's `sdk/` directory. In the rest of this doc, `<skill-dir>` refers to wherever `npx skills add` installed the skill (Claude Code: `~/.claude/skills/cdp`; Cursor: `~/.cursor/skills/cdp`; other agents vary). The CLI should be on PATH as `browser-harness-js`.

## Setup (once, first use)

`npx skills add` drops the skill into your agent's skills directory but does NOT put the CLI on PATH. Before the first call, verify it's reachable and symlink it into any directory on your PATH if not:

```bash
# macOS (Apple Silicon + Homebrew)
command -v browser-harness-js >/dev/null || ln -sf <skill-dir>/sdk/browser-harness-js /opt/homebrew/bin/browser-harness-js

# macOS (Intel) / most Linux — may need sudo
command -v browser-harness-js >/dev/null || ln -sf <skill-dir>/sdk/browser-harness-js /usr/local/bin/browser-harness-js

# Linux without sudo (ensure ~/.local/bin is on PATH)
command -v browser-harness-js >/dev/null || { mkdir -p ~/.local/bin && ln -sf <skill-dir>/sdk/browser-harness-js ~/.local/bin/browser-harness-js; }
```

The CLI auto-installs `bun` on first run if it's missing (the server is Bun-native). Set `BROWSER_HARNESS_SKIP_BUN_INSTALL=1` to opt out.

## How to use

Сообщить о проблеме

Foxx AIBrowser Harness JS
Foxx AI

Я Foxx AI и уже разобрал этот инструмент. Спросите про установку, настройку или что угодно еще, отвечу простыми словами.