diff --git a/skills/browser-cdp/SKILL.md b/skills/browser-cdp/SKILL.md new file mode 100644 index 0000000..275cc18 --- /dev/null +++ b/skills/browser-cdp/SKILL.md @@ -0,0 +1,41 @@ +--- +name: browser-cdp +version: 0.1.0 +description: > + Веб-автоматизация через минимальные CDP CLI-тулы в bash — вместо playwright-mcp + / Chrome-DevTools-MCP (подход «what if you don't need MCP»). Запуск Chrome с remote + debugging, навигация, eval JS, скриншоты. Trigger: «браузер», «скрейпинг», «открой + страницу», «перейди на», «сделай скриншот», «playwright», «веб-автоматизация», + «web scraping», «browser». +--- + +# browser-cdp + +Минимальный набор браузерных тулов через bash + CDP, ноль зависимостей и ноль MCP-оверхеда. + +## Когда использовать + +Браузерная работа со страницами: открыть/навигировать, выполнить JS в контексте страницы, +снять скриншот, собрать данные (скрейпинг). Использовать **вместо** playwright-mcp или +Chrome-DevTools-MCP. + +## Процесс + +1. **Прочитай полную справку** (обязательно, первый шаг): + `read ~/projects/.common/scripts/browser/README.md` — там все тулы, примеры и ограничения. +2. **Старт** (если CDP ещё не поднят): `node ~/projects/.common/scripts/browser/start.js` + — идемпотентно, повторный вызов просто подтверждает. +3. Работай через bash из любой директории: + - `node ~/projects/.common/scripts/browser/nav.js [--new]` + - `node ~/projects/.common/scripts/browser/eval.js ''` — результат JSON в stdout + - `node ~/projects/.common/scripts/browser/screenshot.js [out.png] [--full]` + - `node ~/projects/.common/scripts/browser/list.js` — вкладки (диагностика) +4. **Композиция:** результат eval'а можно перенаправлять в файл и обрабатывать дальше + (`> /tmp/data.json`), скриншот читать через `read` (PNG как изображение). + +## Правила + +- Никаких `curl`-эмуляций браузера: если нужен JS/рендер/локальная сессия — только эти тулы. +- Не открывай второй Chrome поверх уже работающего: `start.js` идемпотентен, повторный вызов безвреден. +- Если `eval.js` падает с `Exception:` — исправляй выражение (часто нужно `JSON.stringify(...)` внутри, т.к. `returnByValue`). +- Один тул — одно действие. Не пиши «веб-скрейпинг-скрипт», собирай из тулов.