Browser Testing with Chrome DevTools
addyosmani/agent-skills
Connects an agent to a real Chrome instance through the Chrome DevTools MCP server, so it can inspect the DOM, read console errors and profile performance directly.
Interacts with local browser via Chrome DevTools Protocol (only triggered after user explicitly requests to inspect, debug, or interact with pages open in Chrome)
$ npx skills add MatrixAges/polywise --skill chrome-cdp -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install MatrixAges/polywise chrome-cdp --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/MatrixAges/polywise.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.opencode/skills/chrome-cdp .claude/skills/chrome-cdp && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "chrome-cdp" agent skill from https://github.com/MatrixAges/polywise/tree/master/.opencode/skills/chrome-cdp into .claude/skills/chrome-cdp/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "chrome-cdp", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/MatrixAges/polywise/tree/master/.opencode/skills/chrome-cdpType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add MatrixAges/polywise --skill chrome-cdp -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install MatrixAges/polywise chrome-cdp --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/MatrixAges/polywise.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.opencode/skills/chrome-cdp .agents/skills/chrome-cdp && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "chrome-cdp" agent skill from https://github.com/MatrixAges/polywise/tree/master/.opencode/skills/chrome-cdp into .agents/skills/chrome-cdp/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "chrome-cdp", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add MatrixAges/polywise --skill chrome-cdp -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install MatrixAges/polywise chrome-cdp --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/MatrixAges/polywise.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.opencode/skills/chrome-cdp .cursor/skills/chrome-cdp && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "chrome-cdp" agent skill from https://github.com/MatrixAges/polywise/tree/master/.opencode/skills/chrome-cdp into .cursor/skills/chrome-cdp/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "chrome-cdp", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/MatrixAges/polywise.git --path .opencode/skills/chrome-cdp--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add MatrixAges/polywise --skill chrome-cdp -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install MatrixAges/polywise chrome-cdp --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/MatrixAges/polywise.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.opencode/skills/chrome-cdp .gemini/skills/chrome-cdp && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "chrome-cdp" agent skill from https://github.com/MatrixAges/polywise/tree/master/.opencode/skills/chrome-cdp into .gemini/skills/chrome-cdp/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "chrome-cdp", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install MatrixAges/polywise chrome-cdpInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add MatrixAges/polywise --skill chrome-cdp -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/MatrixAges/polywise.git skills-src && mkdir -p .github/skills && cp -r skills-src/.opencode/skills/chrome-cdp .github/skills/chrome-cdp && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "chrome-cdp" agent skill from https://github.com/MatrixAges/polywise/tree/master/.opencode/skills/chrome-cdp into .github/skills/chrome-cdp/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "chrome-cdp", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add MatrixAges/polywise --skill chrome-cdp -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install MatrixAges/polywise chrome-cdp --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/MatrixAges/polywise.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.opencode/skills/chrome-cdp .opencode/skills/chrome-cdp && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "chrome-cdp" agent skill from https://github.com/MatrixAges/polywise/tree/master/.opencode/skills/chrome-cdp into .opencode/skills/chrome-cdp/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "chrome-cdp", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
chrome-cdpInteracts with local browser via Chrome DevTools Protocol (only triggered after user explicitly requests to inspect, debug, or interact with pages open in Chrome)
Chrome Cdp is an agent skill from MatrixAges/polywise. Interacts with local browser via Chrome DevTools Protocol (only triggered after user explicitly requests to inspect, debug, or interact with pages open in Chrome)
Its SKILL.md is about 800 tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts.
It sits in Testing & QA, covering Browser testing. It works with Chrome DevTools. The repository describes itself as: The open source agentic content system to make your contents alive. Self-hosted on any platform. ◑. The licence is MIT.
Read from SKILL.md and the folder at commit f8d2320. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (JavaScript), which the agent can run.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Chrome Cdp loads about 800 tokens when it runs. Until then it costs about 43 tokens; SKILL.md has 242 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from MatrixAges/polywise at commit f8d2320, republished under its MIT licence (© MatrixAges). 242 words, ~800 tokens.
.claude/skills/chrome-cdp/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Lightweight Chrome DevTools Protocol CLI. Direct connection via WebSocket, no Puppeteer required, supports 100+ tabs, instant connection.
chrome://inspect/#remote-debugging and turn on the switchDevToolsActivePort is in a non-standard location, set CDP_PORT_FILE to its full pathAll commands use scripts/cdp.mjs. <target> is the unique targetId prefix from list output; copy the full prefix shown (e.g., 6BE827FA). CLI rejects ambiguous prefixes.
scripts/cdp.mjs listscripts/cdp.mjs shot <target> [file] # Default: screenshot-<target>.png in runtime directoryOnly captures the viewport. If content outside the viewport is needed, use eval to scroll first. Output includes page DPR and coordinate transformation hints (see Coordinates section below).
scripts/cdp.mjs snap <target>scripts/cdp.mjs eval <target> <expr>Note: Avoid using index-based selections (
querySelectorAll(...)[i]) across multipleevalcalls, as DOM may change between calls (e.g., after ignoring clicks, indices shift). Collect all data in oneevalor use stable selectors.
scripts/cdp.mjs html <target> [selector] # Full page or element HTML
scripts/cdp.mjs nav <target> <url> # Navigate and wait for load complete
scripts/cdp.mjs net <target> # Resource timing entries
scripts/cdp.mjs click <target> <selector> # Click element via CSS selector
scripts/cdp.mjs clickxy <target> <x> <y> # Click at CSS pixel coordinates
scripts/cdp.mjs type <target> <text> # Type text at current focus; works in cross-origin iframes
scripts/cdp.mjs loadall <target> <selector> [ms] # Repeatedly click "load more" until it disappears (default 1500ms interval)
scripts/cdp.mjs evalraw <target> <method> [json] # Raw CDP command passthrough
scripts/cdp.mjs open [url] # Open new tab (allows prompt per trigger)
scripts/cdp.mjs stop [target> # Stop daemonshot saves images at native resolution: image pixels = CSS pixels × DPR. CDP Input events (clickxy etc.) use CSS pixels.
CSS px = Screenshot pixels / DPRshot prints DPR for the current page. Typical Retina (DPR=2): divide screenshot coordinates by 2.
snap --compact over html for viewing page structure.type (not eval) — first focus with click/clickxy, then type.© MatrixAges, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (scripts) in .opencode/skills/chrome-cdp of MatrixAges/polywise.
Open the folder on GitHubat commit f8d2320
Chrome Cdp next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Chrome Cdp this skillMatrixAges/polywise | 662 | — | ~800 | Automated safety check: Pass | MIT | |
| Browser Testing with Chrome DevToolsaddyosmani/agent-skills | 103k | 4 repos | ~3.5k | Automated safety check: Warn | MIT | |
| Browsingobra/superpowers-chrome | 356 | 1 repos | ~8k | Automated safety check: Pass | MIT | |
| Chrome Devtools Axilayer5io/sistent | 138 | 2 repos | ~989 | Automated safety check: Pass | Apache-2.0 | |
| Idleon Live CdpMrJoiny/Idleon-Injector | 112 | — | ~1.2k | Automated safety check: Pass | None | |
| Web Browsermitsuhiko/agent-stuff | 3.2k | — | ~1.5k | Automated safety check: Warn | Apache-2.0 |
addyosmani/agent-skills
Connects an agent to a real Chrome instance through the Chrome DevTools MCP server, so it can inspect the DOM, read console errors and profile performance directly.
obra/superpowers-chrome
A skill your agent uses when you need direct browser control - teaches Chrome DevTools Protocol for controlling existing browser sessions, multi-tab management, form automation, and content…
layer5io/sistent
Control a Chrome browser session through the chrome-devtools-axi CLI - navigate, snapshot, click, fill forms, run JavaScript, inspect console and network, take screenshots, audit performance.
MrJoiny/Idleon-Injector
Inspect and interact with a running Legends of Idleon session through the Chrome DevTools Protocol on port 32123.
mitsuhiko/agent-stuff
Automate and interact with web pages through Chrome or Chromium using the Chrome DevTools Protocol (CDP): navigate, click, fill forms, inspect content, take screenshots, and debug console or network…
Skyvern-AI/skyvern
Reads your git diff, writes a handful of happy-path browser smoke tests, runs them with Skyvern or Chrome DevTools MCP and posts screenshot evidence to the PR.
MatrixAges/polywise
Called when users need to create new OpenCode skills. An agent skill from MatrixAges/polywise.
MatrixAges/polywise
Guides the generation, reading, and updating of agentmap.md files.
MatrixAges/polywise
Guides styling implementation using TailwindCSS + CSS Modules.
MatrixAges/polywise
Guides using eRPC (electron-tRPC) for inter-process communication (IPC) between Electron main and renderer processes.
MatrixAges/polywise
Guides internationalization (i18n) implementation using i18next with TypeScript.
MatrixAges/polywise
Guides state management implementation using MobX + tsyringe.
Works with
Categories
Interacts with local browser via Chrome DevTools Protocol (only triggered after user explicitly requests to inspect, debug, or interact with pages open in Chrome). Chrome Cdp is an agent skill from MatrixAges/polywise.
Chrome Cdp fits situations like: tasks that involve Browser testing.
Run `npx skills add MatrixAges/polywise --skill chrome-cdp -a claude-code`. Or copy the skill folder (.opencode/skills/chrome-cdp in MatrixAges/polywise) into .claude/skills/chrome-cdp in your project. Claude Code loads it when a task matches its description.
Run `npx skills add MatrixAges/polywise --skill chrome-cdp -a codex`. Or copy the skill folder (.opencode/skills/chrome-cdp in MatrixAges/polywise) into .agents/skills/chrome-cdp in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add MatrixAges/polywise --skill chrome-cdp -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/chrome-cdp, .gemini/skills/chrome-cdp, .github/skills/chrome-cdp and .opencode/skills/chrome-cdp in your project.
Going by SKILL.md and its folder, Chrome Cdp needs JavaScript for the scripts in its folder. Our summary lists: Node.js.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Chrome Cdp is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 800 tokens (SKILL.md is roughly 3.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Chrome Cdp: Browser Testing with Chrome DevTools (addyosmani/agent-skills, 103k stars), Browsing (obra/superpowers-chrome, 356 stars), Chrome Devtools Axi (layer5io/sistent, 138 stars) and Idleon Live Cdp (MrJoiny/Idleon-Injector, 112 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
MatrixAges (a GitHub organization) maintains it in MatrixAges/polywise, which has 662 GitHub stars. The repository holds 11 skills in this directory. The repository was last updated on June 11, 2026.
Source: MatrixAges/polywise on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.