selkies/skills/chrome-devtools-mcp/SKILL.md
Chrome DevTools MCP server via mcp-proxy (Streamable HTTP on port 9224). Use when working with the chrome-devtools-mcp layer, MCP-based browser automation, or the mcp-proxy stdio-to-HTTP bridge pattern.
npx skillsauth add overthinkos/overthink-plugins chrome-devtools-mcpInstall 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.
| Property | Value |
|----------|-------|
| Dependencies | nodejs, supervisord |
| Ports | 9224 (Streamable HTTP MCP endpoint) |
| Services | chrome-devtools-mcp (supervisord, autostart) |
| Install files | layer.yml, pixi.toml, package.json |
| Name | URL Template | Transport |
|------|-------------|-----------|
| chrome-devtools | http://{{.ContainerName}}:9224/mcp | http |
Pod-aware: same-container consumers receive http://localhost:9224/mcp, cross-container consumers receive http://ov-<image>:9224/mcp. Consumed by hermes (mcp_accepts: chrome-devtools) for MCP-based browser inspection and automation.
MCP Client (hermes, Claude Code)
↓ Streamable HTTP (POST /mcp)
mcp-proxy (Python, pixi) — 0.0.0.0:9224
↓ stdio
chrome-devtools-mcp (Node.js, npm)
↓ Chrome DevTools Protocol
cdp-proxy (port 9222) → Chrome (port 9223)
package.json) connects to Chrome at http://127.0.0.1:9222 via the cdp-proxyautorestart=true (handles startup ordering — retries until Chrome is ready)| Category | Tools |
|----------|-------|
| Input | click, drag, fill, fill_form, hover, type_text, press_key, upload_file, handle_dialog |
| Navigation | navigate_page, list_pages, select_page, new_page, close_page, wait_for |
| Inspection | take_screenshot, take_snapshot, evaluate_script, get_console_message, list_console_messages |
| Network | list_network_requests, get_network_request |
| Performance | performance_start_trace, performance_stop_trace, performance_analyze_insight, take_memory_snapshot, lighthouse_audit |
| Emulation | emulate, resize_page |
mcp-proxychrome-devtools-mcpHermes config.yaml is guarded by a # ov:auto-configured sentinel — it only generates on first start, never overwrites. When chrome-devtools-mcp is added to a running deployment, hermes won't automatically pick it up.
Fix: Delete config.yaml and restart hermes:
ov shell <image> -c "rm /opt/data/config.yaml"
ov service restart <image> hermes
After restart, hermes mcp list should show chrome-devtools as enabled with all 29 tools.
This layer is auto-included by the chrome base layer via layers: [chrome-devtools-mcp]. Any image that includes chrome, chrome-sway, or any desktop metalayer gets this automatically — zero explicit configuration needed.
/ov-selkies:chrome — includes via layers: [chrome-devtools-mcp]/ov-selkies:selkies-desktop/ov-selkies:selkies-desktop-nvidia/ov-selkies:sway-browser-vnc/ov-selkies:chrome — parent layer, provides Chrome + CDP on port 9222/ov-jupyter:jupyter-mcp — analogous MCP server pattern (Tier 1, different domain)/ov-hermes:hermes — consumes via mcp_accepts: chrome-devtools/ov-tools:mcporter — MCP server CLI (npm-based, similar npm install pattern)/ov-eval:cdp — direct Chrome DevTools Protocol commands (lower-level than MCP)/ov-build:ov-mcp-cmd — test-side client for this layer's MCP endpoint (ov eval mcp ping, list-tools, etc.). The layer ships 2 deploy-scope mcp: declarative checks (mcp-chrome-devtools-ping, mcp-chrome-devtools-list-tools asserting navigate_page / take_screenshot). Port-publishing gotcha: when this layer is added to an image that already has a deploy.yml port: override (e.g. sway-browser-vnc), port 9224 may not be published until the override is updated. ov eval mcp surfaces this with the exact ports: [9224:9224] remediation message — see /ov-build:ov-mcp-cmd for the full fix.Use when the user asks about:
/ov-image:layer — layer authoring reference (layer.yml schema, task verbs, service declarations)/ov-eval:eval — declarative testing (eval: block, ov eval image, ov eval live)development
Claude Code multi-agent support in Overthink — sub-agents, dynamic workflows, and agent teams, and how each drives the existing `ov eval` disposable beds to test and verify. MUST be invoked before authoring or invoking an ov sub-agent / dynamic workflow / agent team, wiring agent-lifecycle hooks, or asking "which primitive should drive the R10 beds?".
tools
Mounts a virtiofs share tagged `workspace` at /workspace inside a VM guest via a systemd .mount unit. Use when a kind:vm entity shares a host directory into the guest and you need it auto-mounted (and re-mounted at every boot).
development
MUST be invoked before any work involving: the `kind: android` schema kind, a `target: android` deploy, the `apk:` layer package format (installing Android apps declaratively), AndroidDeployTarget, an in-pod emulator OR a remote/physical adb-endpoint device, or nested `pod → android` deployment. The first-class Android device + app surface that sits above `ov eval adb`/`appium`.
tools
Use when committing, branching, pushing, merging, tagging, creating PRs, or approving/merging PRs with gh — the feat/-branch, R10-gated, never-force-push landing workflow across the main repo + the plugins submodule + image/<distro> submodules. Covers sync-to-upstream, branch/worktree pruning, the fork+PR path for contributors without write access, and cross-repo @github landing order.