Skip to content
Development
Command

/chrome-cdp

Use when the user asks to interact with a web page, take a screenshot of a site, click or type in Chrome, scrape content, or debug a web UI. Connects to real Chrome tabs with existing logins.

From plugin
amux
54812 skills12 commands

Command definition

chrome-cdp.md
description: Use when the user asks to interact with a web page, take a screenshot of a site, click or type in Chrome, scrape content, or debug a web UI. Connects to real Chrome tabs with existing logins.
allowed-tools: Bash, Read
argument-hint: <command> [args...]
context: fork

/chrome-cdp — Chrome Browser Automation

Control the user's **live Chrome browser** via Chrome DevTools Protocol. Connects to real tabs with existing cookies/logins — no fresh browser needed.

Prerequisites

  • Chrome must have remote debugging enabled: `chrome://inspect/#remote-debugging` → toggle the switch
  • Node.js 22+ (uses built-in WebSocket)

Commands

The CLI is at `skills/chrome-cdp/scripts/cdp.mjs` (relative to the amux repo root). Always run from the amux project directory.

List open tabs

node skills/chrome-cdp/scripts/cdp.mjs list

Returns tab IDs, titles, and URLs. Use the **target ID prefix** (e.g. `6BE827FA`) in all subsequent commands.

Screenshot

node skills/chrome-cdp/scripts/cdp.mjs shot <target> [file]

Captures the viewport as PNG. Prints DPR and coordinate mapping info. Default save path: `~/.cache/cdp/screenshot-<target>.png`

**Always read the screenshot file after capturing** to see what's on screen.

Accessibility tree (preferred for reading page content)

node skills/chrome-cdp/scripts/cdp.mjs snap <target>

Returns a compact semantic tree — much better than raw HTML for understanding page structure.

Evaluate JavaScript

node skills/chrome-cdp/scripts/cdp.mjs eval <target> <expression>

Runs JS in the page context. Avoid index-based DOM selection across multiple eval calls when the DOM can change between them.

Navigate

node skills/chrome-cdp/scripts/cdp.mjs nav <target> <url>

Navigates and waits for load completion.

Click

node skills/chrome-cdp/scripts/cdp.mjs click <target> <css-selector>
node skills/chrome-cdp/scripts/cdp.mjs clickxy <target> <x> <y>     # CSS pixel coords

`click` scrolls the element into view first. `clickxy` takes CSS pixels (screenshot pixels / DPR).

Type text

node skills/chrome-cdp/scripts/cdp.mjs type <target> <text>

Uses `Input.insertText` — works in cross-origin iframes unlike eval-based approaches. Click/focus the input first.

Other commands

node skills/chrome-cdp/scripts/cdp.mjs html <target> [selector]       # full page or element HTML
node skills/chrome-cdp/scripts/cdp.mjs net <target>                    # network resource timing
node skills/chrome-cdp/scripts/cdp.mjs loadall <target> <selector> [ms] # click "load more" until gone
node skills/chrome-cdp/scripts/cdp.mjs evalraw <target> <method> [json] # raw CDP command
node skills/chrome-cdp/scripts/cdp.mjs open [url]                       # open new tab
node skills/chrome-cdp/scripts/cdp.mjs stop [target]                    # stop daemon(s)

Typical workflow

# 1. List tabs
node skills/chrome-cdp/scripts/cdp.mjs list

# 2. Screenshot a tab
node skills/chrome-cdp/scripts/cdp.mjs shot 6BE827FA /tmp/page.png

# 3. Read the screenshot
# (use Read tool on /tmp/page.png)

# 4. Read page content
node skills/chrome-cdp/scripts/cdp.mjs snap 6BE827FA

# 5. Interact
node skills/chrome-cdp/scripts/cdp.mjs click 6BE827FA "button.submit"
node skills/chrome-cdp/scripts/cdp.mjs type 6BE827FA "Hello world"

Coordinates

Screenshots are at native resolution (CSS pixels × DPR). CDP input events use **CSS pixels**.

CSS px = screenshot px / DPR

`shot` prints the DPR. Typical Retina (DPR=2): divide screenshot coords by 2.

Notes

  • Chrome shows an "Allow debugging" modal once per tab on first access. A background daemon keeps the session alive so subsequent commands need no further approval.
  • Daemons auto-exit after 20 minutes of inactivity.
  • Prefer `snap` over `html` for understanding page structure.
  • Use `type` (not eval) to enter text — click to focus first, then type.

Gotchas

  • Chrome must have remote debugging enabled (`chrome://inspect/#remote-debugging`) or all commands silently fail.
  • First access to a tab triggers an "Allow debugging" modal — you must approve it before commands work.
  • `clickxy` uses CSS pixels, not screenshot pixels. Divide screenshot coords by DPR (usually 2 on Retina).
  • `eval` results are stringified — objects come back as `[object Object]` unless you `JSON.stringify()`.
  • Don't chain multiple `eval` calls that depend on DOM index positions — the DOM can change between calls.
Read more
@mixpeek
Ships withamux

The agent control plane: run Claude Code, Codex and Gemini CLI agents in parallel with a shared task board, schedules and usage-limit recovery. Native iPhone, iPad and Mac apps plus a web dashboard. Self-host (Rust + SQLite, Tailscale remote access) or use amux Cloud. MIT + Commons Clause.

Stars on GitHub

Momentum

stars in total
548
Star history of mixpeek/amux on GitHub, a chart by star-history.com

Other commands on amux.

aissue

aissue

Command

Pick up an open issue from the amux issue tracker, mark it doing, work it, and mark it done.

@mixpeek@mixpeekInstall Command
amux-board

amux-board

Command

Use when the user says "add to board", "create a task", or wants to track a todo on the amux kanban board

@mixpeek@mixpeekInstall Command
amux

amux

Command

Use when you need to interact with the amux system — manage board tasks, check sessions/workers, send emails, message via…

@mixpeek@mixpeekInstall Command
bad-guy

bad-guy

Command

Before shipping, play the bad guy: run a fixed checklist of 14 attacks against your OWN app with test accounts and test data,…

@mixpeek@mixpeekInstall Command
cleanup

cleanup

Command

Repo/branch/file hygiene sweep — stray artifacts, doc drift, stale branches, worktrees, upstream sync, backup sprawl, duplicate…

@mixpeek@mixpeekInstall Command
orchestrate

orchestrate

Command

Scaffold and run a closed orchestrator loop that drives an existing MD plan to verified completion.

@mixpeek@mixpeekInstall Command

More commands from other plugins.

build
Auto-invoked

build

Command

Implement tasks incrementally — build, test, verify, commit. Add "auto" to run the whole plan in one approved pass.

@addyosmani@addyosmaniInstall Command