agent-browser
Skill9 starsChanged 3 months agoMITView on GitHub
Поднять или починить браузер на машине пользователя через обратный туннель - когда нужен домашний IP или логин пользователя. Не обычная работа с браузером - `rules/agent-browser.md`.
188 other projects use a version of this.
Adopted by
Most recently taken up by
- chrysogonus/power-agentstheir own version, first seen Nov 8, 2026
- kinhluan/skillstheir own version, first seen Nov 8, 2026
- cafe3310/public-agent-skillstheir own version, first seen Nov 8, 2026
- kortix-ai/sunatheir own version, first seen Nov 8, 2026
- HeteroCat/heterocat-skillstheir own version, first seen Nov 8, 2026
- JuanMarchetto/agent-skillstheir own version, first seen Nov 8, 2026
Used with
Projects with it also use time-skill, dep-refs and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
Recepay6358Skilltime-skill
Display the current time in Pakistan Standard Time (PKT, UTC+5). Use when the user asks for the current time, Pakistan time, or PKT.
Also in 6 projects that use this
betacatslingSkilldep-refs
Use when needs to inspect TypeScript export references in the z-code workspace, list exports from a file, verify whether an export is unused before deletion, investigate who imports a symbol during refactors, or combine pnpm knip unused-export results with pnpm dep:refs symbol-level reference tracing.
Also in 5 projects that use this
betacatslingSkillfeature-boundary-planner
Map a ZCode behavior change to current UI surfaces, state owners, protocol commands, persistence, and validation. Use for impact analysis, product-boundary planning, or an implementation handoff grounded in the checked-out source.
Also in 5 projects that use this
nicepkgSkillcommunity-led-growth
Expert in community-led growth (CLG) - leveraging user communities to drive acquisition, retention, and expansion. Covers building developer communities, user groups, ambassador programs, and turning customers into advocates. Knows the difference between community as a feature vs community as a growth engine, and how to measure community ROI. Use when "community-led, CLG, ambassador program, champion program, user community, developer community, word of mouth, user group, " mentioned.
Also in 5 projects that use this
nicepkgSkillph-community-outreach
Engage Reddit, Indie Hackers, Hacker News and other communities for Product Hunt launches. Use this skill to identify relevant communities, craft appropriate posts, and drive cross-platform engagement without appearing spammy.
Also in 5 projects that use this
Recepay6358Skillweather-svg-creator
Creates an SVG weather card showing the current temperature for Dubai. Writes the SVG to orchestration-workflow/weather.svg and updates orchestration-workflow/output.md.
Also in 6 projects that use this
- +3 more from nicepkg
Other versions188 projects use a version of this.
Word for word · 1
- dewil/ai-toolkit★ 9100% same
Edited · 0
None found.
Wrote their own version · 187
- shanraisshan/claude-code-best-practice★ 69ksame name
- moeru-ai/airi★ 51ksame name
- vercel-labs/agent-browser★ 47ksame name
- activepieces/activepieces★ 25ksame name
- slopus/happy★ 25ksame name
- kortix-ai/suna★ 21ksame name
- kortix-ai/CompanyOS★ 21ksame name
- eosphoros-ai/DB-GPT★ 20ksame name
- documenso/documenso★ 16ksame name
- emdash-cms/emdash★ 14ksame name
177 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository37 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- android-apk-releaseSkill
- asana-blockersSkill
- asana-commentsSkill
- asana-projectSkill
- backlog-taskSkill
- canon-syncSkill
- csv-xlsxSkill
- estimate-calibrationSkill
- gdocsSkill
- harvest-canonSkill
- implementSkill
- jev-decideSkill
- llm-ruSkill
- local-transcriptionSkill
- md-docxSkill
- md-pdfSkill
- md-pptxSkill
- memory-compactSkill
- memory-searchSkill
- migrateSkill
- minimal-codeSkill
- mymeet-snapshotSkill
- office-mdSkill
- pii-maskSkill
- proofreadSkill
- qa-browserSkill
- redmine-snapshotSkill
- repo-publicationSkill
- requirementsSkill
- reviewSkill
- sddSkill
- session-costSkill
- telegram-sendSkill
- telegram-snapshotSkill
- tutorSkill
- web-researchSkill
The file
Files
agent-browser: браузер по требованию на машине пользователя
Скилл развертывания и починки. Повседневные правила работы с браузером (какую площадку выбрать, гигиена, гонка общего окна, диагностика симптомов) - rules/agent-browser.md; сюда ходят, когда схемы на устройстве еще нет или она сломалась.
Зачем схема
Два ресурса, которых нет у серверного headless Chrome:
- домашний IP - когда сайт режет трафик дата-центров по адресу. Прежде чем разворачивать схему ради этого, проверить, что фильтр действительно по адресу, а не по заголовку клиента: порядок проверки - в
rules/agent-browser.md, раздел "Сайт не отдает контент"; - живые сессии пользователя - сайты, привязывающие логин к устройству и IP (LinkedIn), при переносе кук на сервер дают checkpoint или тихий разлогин.
Банк, госуслуги и почта восстановления запрещены в агентском профиле: это работа человека в обычном браузере. См. ограничение в rules/agent-browser.md, раздел "Что этот канал не защищает".
Из чего состоит
На машине пользователя постоянно живет только autossh с обратным туннелем на сервер; браузер поднимается по требованию и гасится после работы:
[машина пользователя] [Сервер]
autossh (постоянно) ──── SSH ───────────────▶ слушает 127.0.0.1:9222 (CDP)
-R 9222 -R 2222 слушает 127.0.0.1:2222 (управление)
│
chrome-ctl ◀──── forced command по ключу ◀──────────────┘
└─▶ Chrome (headless, отдельный профиль) - живет только на время задачиКлюч управления ограничен forced command: по нему исполняется только chrome-ctl start|start-gui|stop|status, произвольные команды на машине пользователя по этому каналу невозможны.
Чего эта граница не закрывает - понимать до развертывания. Ограничен только SSH-канал; проброшенный порт CDP аутентификации не имеет вовсе - разбор в rules/agent-browser.md, раздел "Что этот канал не защищает".
Что из этого следует для развертывания: профиль агента - отдельный от личного (в схеме так и есть); порт CDP слушать строго на loopback (проверка GatewayPorts в ранбуке идет до поднятия туннеля) и дальше не пробрасывать; ключ туннеля - выделенный, с forced command (Шаг 5а ранбука).
Установка
- macOS - пошаговый ранбук:
runbook-mac.md(Remote Login, autossh через LaunchAgent, chrome-ctl, forced command, сторож простоя, проверка с обеих сторон). - Linux - пошаговый ранбук:
runbook-linux.md(проверено на Ubuntu 24.04): systemd-юнит вместо LaunchAgent, Chrome из репозитория Google,DISPLAY/XAUTHORITYдля режима с окном, сторож простоя на systemd timer. Разбор решений не дублируется - ранбук ссылается на macOS-версию. - Windows - готового ранбука нет; разворачивать по аналогии, после отладки оформить ранбук и поднять в канон.
Выход через домашний прокси - отдельная задача от развертывания браузера. Если нужен не компьютер пользователя, а только его адрес, браузер остается серверным, а на домашней машине поднимается прокси-клиент, чей порт пробрасывается тем же обратным туннелем (-R 127.0.0.1:<PROXY_PORT>:127.0.0.1:<локальный порт прокси> - адрес в левой части обязателен по той же причине, что и у портов CDP и управления: без него при серверном GatewayPorts clientspecified порт уйдет слушать наружу). После подъема сверить ss -tlnp на <PROXY_PORT> - адрес обязан быть 127.0.0.1. Два места, где это легко забыть: порт надо разрешить в ключе туннеля (permitlisten="127.0.0.1:<PROXY_PORT>" - иначе ExitOnForwardFailure=yes уронит весь туннель вместе с CDP и управляющим каналом, поэтому сперва правится ключ на сервере и только потом добавляется -R), и на сервере этот порт должен быть свободен - там может уже работать свой прокси-клиент. Правка authorized_keys - изменение доступа: готовь точную команду и показывай ее пользователю, а не рассчитывай провести схему целиком сам. На части конфигураций она агенту вообще не дана, и тогда схема, где новый порт нужен "прямо сейчас", упрется в человека - это надо учитывать в плане, а не обнаруживать на середине. Дальше браузер стартует с --proxy-server=http://127.0.0.1:<PROXY_PORT>; выбор маршрута и обязательная проверка выхода - в rules/agent-browser.md.
Несколько машин на одном сервере. Порты 9222/2222 занимает та машина, которую развернули первой, и это не про Linux - вторая macOS упрется точно так же. Перед развертыванием проверить занятость на сервере (ss -tln | grep -E ":(9222|2222)\b") и при необходимости взять следующую свободную пару, подставив ее везде: в chrome-ctl, в -R автозапуска, в permitlisten ключа туннеля, в проверках. Ключи и forced command у каждой машины свои, поэтому схемы сосуществуют без конфликтов.
Бэкап сессий
Жесткое завершение браузера теряет куки текущего сеанса - для сайтов с ротацией токена это потеря логина и ручной заход владельца. Канонический scripts/chrome-cookies.py (stdlib, CDP по голым сокетам) снимает куки живой сессии и заливает их обратно без GUI:
python3 scripts/chrome-cookies.py dump --port <CDP_PORT> --domain linkedin.com --require-cookie li_at
python3 scripts/chrome-cookies.py list
python3 scripts/chrome-cookies.py restore --port <CDP_PORT> --in ~/.config/browser-sessions/linkedin.com.json--port указывать явно, когда машин больше одной. Дефолт скрипта - 9222, и он достается той машине, которую развернули первой. Забытый флаг подключит dump к чужому браузеру. Если существующий бэкап содержит метку другого профиля, скрипт откажет в перезаписи (без --force). Для первого дампа и бэкапа без метки источника сравнивать профили не с чем, поэтому порт нужно проверять явно.
Проверка --require-cookie и сохранение дампа - по rules/agent-browser.md.
Дамп кук - секрет, эквивалент пароля (rules/secrets-handling.md): хранилище ~/.config/browser-sessions/ живет вне репозитория и вне синкаемых папок, права 600 выставляет сам скрипт, содержимое в чат и артефакты не выводится. Порядок: сразу после первичного GUI-логина владельца - dump; при слете сессии - restore, и только если сайт инвалидировал токен на своей стороне - снова звать владельца.
Границы
- Машина пользователя выключена или спит - браузера нет; это осознанная плата за домашний IP.
- Скилл не занимается выбором площадки на конкретную задачу и не учит пользоваться браузером - это правило
rules/agent-browser.md.
Модель и текущие назначения
Перед новым заданием и запуском применяй маршрутизацию моделей: свежий MODELS выше канонического дефолта. Границы данных и полномочий этого навыка сохраняются.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

