# Drive Desktop Cdp

Drive the running OpenWork app over CDP from the shell, headless by default (nothing...

- Repository: https://github.com/different-ai/openwork (24362 stars)
- Category: Design
- License: see repository
- Last updated: 2026-11-01
- Runs scripts: yes, review before use

## Install

Claude Code: `npx skills add different-ai/openwork --skill drive-desktop-cdp -g -a claude-code -y`
Codex: `npx skills add different-ai/openwork --skill drive-desktop-cdp -g -a codex -y`
Cursor: `npx skills add different-ai/openwork --skill drive-desktop-cdp -g -a cursor -y`
Gemini CLI: `npx skills add different-ai/openwork --skill drive-desktop-cdp -g -a gemini-cli -y`

## Description

Drive the running OpenWork app over CDP from the shell, headless by default (nothing opens on screen). Evaluate JS, take screenshots, open a new session, send a prompt with a chosen model, wait for the run to finish. Use when checking a UI change by hand in a world or pnpm dev, or when reproducing a chat state.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Drive the app over CDP

For verdicts, write or run an `evals/core` journey or `evals/proofs` proof (`write-a-spec`, `run-tests`). This skill is for checking changes by hand and reproducing states quickly.

## Find the app

Default to the app in headless Chrome. It runs this checkout (Vite hot reload included) and opens nothing on the developer's screen:

```bash
pnpm world up dev-app-web --detach -- --browser   # prints webUrl and cdp http://127.0.0.1:<port>
pnpm world down dev-app-web                        # when you are done
```

Use a desktop window only when the change needs the desktop shell (titlebar, native menus, deep links, the built-in browser pane, updater, quit and relaunch) or the user asks for it. A desktop window opens and takes focus on this computer:

- `pnpm dev`: CDP on `http://127.0.0.1:9823`.
- `pnpm world up live-desktop -- --allow-shared-state` prints `cdp http://127.0.0.1:<port>` and uses the real installed profile.

Set `CDP_URL` to the address the world printed for every command.

## Commands

```bash
S=.opencode/skills/drive-desktop-cdp/scripts/cdp.mjs
export CDP_URL=http://127.0.0.1:55322

node $S new-session                                 # always start a fresh session first
node $S send "Claude Opus 5.5" "Say hello"          # pick the model by its picker name, then send
node $S wait-idle 180                               # until the Run task button is back
node $S shot /tmp/after.png                         # screenshot of the whole page
node $S eval 'document.querySelector("main")?.innerText.slice(-500)'
```

## Rules

The rest: https://github.com/different-ai/openwork/blob/HEAD/.opencode/skills/drive-desktop-cdp/SKILL.md
