plugins/steroids/skills/cdp-chrome/SKILL.md
Shared headed Chrome for browser automation. Mandatory for visible GUI Chrome: social media, JS-rendered pages, logged-in sites, anti-bot pages, forms, screenshots, and live site inspection. Use for requests like open browser, check website, scrape page, visit URL, check X/Twitter or Reddit, verify an article date, or log in to a site. Not for headless tests, PDF generation, or Playwright/Puppeteer unit tests of local code.
npx skillsauth add kanlac/agent-steroids cdp-chromeInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Scope: All headed (GUI) Chrome usage must follow this Skill. Headless testing/PDF generation is out of scope.
CDP tools default to --enable-automation, setting navigator.webdriver = true — detected by social media platforms. JS patching is fragile (multi-layered detection). The only robust solution: a genuinely normal Chrome without automation flags.
Multiple agents each launching Chrome causes port collisions, session conflicts, fragmented login state. A single shared instance eliminates all of this.
Config file:
macOS/Linux: ~/.config/steroids.json
Windows: %APPDATA%\steroids.json
Content: { "cdp-chrome": { "port": 9224 } }
~/.config/cdp-chrome/
profile/ # --user-data-dir (persistent login sessions)
start.sh # Launch script — deployed from this Skill's scripts/
Key properties: GUI mode, no --enable-automation, persistent profile, single port from config. CDP 每个 tab 有独立的 WebSocket 端点,天然支持多 agent 并行操作不同 tab,无需额外协调。
Set port in config file:
{ "cdp-chrome": { "port": 9224 } }
Then: mkdir -p ~/.config/cdp-chrome
Deploy scripts/start.sh from this Skill to ~/.config/cdp-chrome/start.sh. Make executable.
Register MCP — name must be cdp-chrome. This is additive: do not remove or modify any existing Chrome/browser MCPs the user may already have.
# Claude Code
claude mcp add cdp-chrome -s user -- npx chrome-devtools-mcp@latest --browserUrl=http://127.0.0.1:9224
其他 agent 用各自的 MCP 配置方式注册同一个 server,关键参数相同:server 为 chrome-devtools-mcp,名称为 cdp-chrome,必须带 --browserUrl 指向共享实例。不带 --browserUrl 会自行启动 Chrome,违反共享原则。
Do NOT create project-level ./.mcp.json for this.
Run start script, manually log in to needed sites. Sessions persist in profile.
与页面交互时,优先用 evaluate_script 执行 JS 精准提取/操作,不要依赖 take_snapshot 的完整 A11Y 树——复杂页面的快照动辄 80K+ 字符,超出工具限制且浪费 token。详见 references/page-interaction.md。
Do not start a new Chrome process. Do not use Puppeteer's launch() or Playwright's chromium.launch().
mcp__cdp-chrome__* — no other Chrome MCPExclusively use mcp__cdp-chrome__* tools. If you see other Chrome/browser MCP tools in your tool list — such as mcp__chrome-devtools__*, mcp__playwright__*, mcp__puppeteer__*, or any other name — do NOT use them. They launch a separate Chrome instance with --enable-automation and --remote-debugging-pipe, setting navigator.webdriver = true and triggering bot detection. The whole point of this Skill is to avoid exactly that.
If mcp__cdp-chrome__* tools are not available in your session, do not fall back to other browser tools. Instead:
claude mcp add cdp-chrome -s user -- npx chrome-devtools-mcp@latest --browserUrl=http://127.0.0.1:9224每个 tab 有独立的 CDP WebSocket 端点(按唯一 hex ID 区分),天然支持并行。但 MCP 实例有全局的「当前选中页面」状态——同进程内多个 subagent 共享 MCP 实例,并行操作浏览器会互相干扰(select_page 状态冲突)。
安全的并行方式:独立进程(Teammate、多个 claude -p、多个 Codex 实例),各自有独立 MCP 实例。
Open tabs for your task via new_page, close them when done. Don't touch other agents' tabs.
Don't clear cookies, change settings, or install extensions.
If tools fail to connect, run ~/.config/cdp-chrome/start.sh.
Check: curl http://127.0.0.1:<port>/json/version and /json/list.
Red flags (wrong browser): --enable-automation in process args, --remote-debugging-pipe, temp user-data-dir like puppeteer_dev_chrome_profile-*, unexpected logouts. Stop and fix MCP registration if any appear.
Common misconfiguration: MCP registered as chrome-devtools instead of cdp-chrome, or missing --browserUrl → launches its own Chrome silently.
The running MCP process uses old config until restart. If you cannot restart, use CDP HTTP API directly as fallback:
CONFIG="${APPDATA:-$HOME/.config}/steroids.json"
PORT=$(python3 -c "import json,os; print(json.load(open(os.path.expandvars('$CONFIG')))['cdp-chrome']['port'])")
curl -s -X PUT "http://127.0.0.1:$PORT/json/new?https://example.com" # open tab
curl -s "http://127.0.0.1:$PORT/json/list" # list tabs
curl -s -X PUT "http://127.0.0.1:$PORT/json/close/$TAB_ID" # close tab
This Skill is mandatory. Global agent instructions must mandate it for all browser operations. Skill/agent authors must not include Chrome launch logic — only state dependency on steroids:cdp-chrome. Scheduled agents should verify Chrome is reachable at task start.
devops
自建机场(代理服务端)搭建与运维。涵盖 VPS 初始化/加固、3X-UI 面板、Xray VLESS Reality+Vision 入站、多用户独立订阅(UUID/subId/到期/续期)、把节点渲染成 Clash/Mihomo 订阅 YAML、Profile 显示名与到期时间下发、域名/ACME 证书、出口测速、IP 被墙/被滥用风险判断、备份恢复。用户要在 VPS 上部署或维护自建节点/机场、调试 3X-UI 订阅、Reality 入站、订阅链接显示名/到期、面板安全、证书申请、速度低或 IP 风险时用这个 skill。客户端 Clash Verge / mihomo 的配置即代码、规则不命中、DNS 泄漏排查见 clash-verge-config skill。
development
Generate a local HTML dashboard for auditing installed Skills, token usage, description token budgets, duplicate Skill names, Skill paths, and selected Skill exports. Use when the user wants to inspect many Skills, decide which Skills to disable, compare duplicates, preview SKILL.md contents, sort by token usage, or export selected Skills as JSON.
tools
Turn a YouTube link into a polished single-file bilingual (Chinese + original) transcript reading page. Use when the user gives a YouTube URL and asks to "转录" "做转录稿" "生成转录页面" "中英对照" "bilingual transcript" "transcribe this video", or wants a readable HTML transcript with clickable timestamps, chapter navigation, highlighted key points, and proper-noun annotations. Fetches captions + chapters via yt-dlp, the agent translates and curates, then a script renders the HTML.
development
Use when a user asks the agent to "learn" from a file, example, correction, failed workflow, or feedback and persist that learning into skills or agent instructions. Guides semantic skill refactoring: extract the transferable behavior, update the owning skill so it becomes clearer and easier to execute, avoid append-only note dumping, and decide when not to create new reference files.