cdp-cli
Use for browser testing/automation via Chrome DevTools Protocol (cdp-cli).
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Use for browser testing/automation via Chrome DevTools Protocol (cdp-cli).
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Use when drafting, writing, or filing a Linear ticket/issue, or asked for a Linear title/body/description.
Use when drafting, writing, or opening a pull request (gh pr create), or asked for a PR title/body/description.
Writing voice for authored prose — PR bodies, Linear tickets, review comments, commit messages.
Hand a file to the user's running editor and block until they finish editing it. Use whenever a draft (PR body, ticket, commit message, any generated file) needs the user's review before you act on it, or when a task says "open this in my editor/vim/nvim".
Clojure style guidelines. Activate before writing or editing Clojure code
Interview the user relentlessly about a plan or design until reaching shared understanding, resolving each branch of the decision tree. Use when user wants to stress-test a plan, get grilled on their design.
| name | cdp-cli |
| description | Use for browser testing/automation via Chrome DevTools Protocol (cdp-cli). |
| allowed-tools | Bash(cdp-cli:*) |
Use this skill when a task says “test in browser”, “verify button flow”, “check console/network”, or “use cdp-cli”.
Assumptions:
http://localhost:9222cdp-cli tabs
cdp-cli click <page> <selector> --user-gesture
eval (before/after facts), not visuals alone.# A) find/open page
cdp-cli tabs
cdp-cli new "http://localhost:8000/settings" # if needed
# B) baseline
cdp-cli eval "localhost:8000/settings" "({url: location.href, title: document.title})"
# C) interact
cdp-cli fill "localhost:8000/settings" "2" "input"
cdp-cli click "localhost:8000/settings" "button" --user-gesture
# D) verify
cdp-cli eval "localhost:8000/settings" "(async () => {
await new Promise(r => setTimeout(r, 500));
return {ok: true};
})()"
# E) debug if failing
cdp-cli console "localhost:8000/settings" --inspect --type error --tail 100
cdp-cli network "localhost:8000/settings" --duration 3
cdp-cli click <page> <selector> --user-gesture
Use for activation-gated behavior (fullscreen/WebXR/etc.) and generally safer app-flow simulation.
cdp-cli eval "<page>" "(async () => {
const before = /* read state */;
await new Promise(r => setTimeout(r, 500));
const after = /* read state */;
return {before, after, changed: before !== after};
})()"
cdp-cli console <page> --inspect --type error --tail 200
cdp-cli tabs
cdp-cli new [url]
cdp-cli go <page> <url|back|forward|reload>
cdp-cli close <idOrTitle>
cdp-cli snapshot <page> [--format ax|text|dom]
cdp-cli eval <page> "<js>"
cdp-cli console <page> [--inspect] [--type error] [--tail N]
cdp-cli network <page> [--duration S] [--type fetch|xhr]
cdp-cli click <page> <selector> [--user-gesture] [--double]
cdp-cli fill <page> <value> <selector>
cdp-cli key <page> <key>
cdp-cli screenshot <page> --output <path>
Return these explicitly:
--user-gesture when clicking)