Openwork openwork-docker-chrome-mcp
install
source · Clone the upstream repo
git clone https://github.com/different-ai/openwork
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/different-ai/openwork "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.opencode/skills/openwork-docker-chrome-mcp" ~/.claude/skills/different-ai-openwork-openwork-docker-chrome-mcp && rm -rf "$T"
manifest:
.opencode/skills/openwork-docker-chrome-mcp/SKILL.mdsource content
Quick Usage (Already Configured)
1) Start the dev stack (Docker)
Run from the OpenWork repo root:
packaging/docker/dev-up.sh
This prints:
- Web UI URL (http://localhost:<WEB_PORT>)
- OpenWork server URL (http://localhost:<OPENWORK_PORT>)
- Token file path (
) containingtmp/.dev-env-<id>
+OPENWORK_TOKENOPENWORK_HOST_TOKEN - A
command that stops this stackdocker compose ... down
2) Verify a real UI flow (Chrome MCP)
Minimum gate:
- Open the printed Web UI URL.
- Navigate to the session/chat surface (typically
)./session - Send a message (example:
).smoke: hello from chrome mcp - Confirm a response renders in the UI.
Chrome MCP tool recipe (typical):
(optional: see existing tabs)chrome-devtools_list_pages
with the Web UI URL (orchrome-devtools_new_page
if a page is already open)chrome-devtools_navigate_page
to locate the chat input + Send button uidschrome-devtools_take_snapshot
the chat input uid with your messagechrome-devtools_fill
the Send button uidchrome-devtools_click
a distinctive piece of response text (or re-snapshot until the response appears)chrome-devtools_wait_for
(save tochrome-devtools_take_screenshot
when possible)/tmp/...png- If debugging:
chrome-devtools_list_console_messages
Evidence:
- Take a Chrome MCP screenshot after the response appears.
- If something fails, capture console logs and (optionally) Docker logs.
Verification checklist (copy into PR)
- Started stack with
from repo root.packaging/docker/dev-up.sh - Used the printed Web UI URL (not a guessed port).
- Completed one full user flow in the UI (input -> action -> visible result).
- Captured at least one screenshot for the success state.
- Captured failure evidence when relevant (console and/or Docker logs).
- Stopped stack with the exact printed
command.docker compose -p ... down
Suggested screenshot set for user-facing changes:
- Before action state.
- During action/progress state.
- Success state.
- Failure or recovery state (if applicable).
3) Stop the stack
Use the exact
docker compose -p ... down command printed by dev-up.sh.
If you lost it, you can find the project name via:
docker ps --format '{{.Names}}' | rg '^openwork-dev-'
Then stop it (replace
<project>):
docker compose -p <project> -f packaging/docker/docker-compose.dev.yml down
Required Gate (Non-Negotiable)
- Any user-facing change or change that touches remote behavior must be validated end-to-end in the running UI.
- The change is not "done" until it succeeds via Chrome MCP against the Docker dev stack started by
.packaging/docker/dev-up.sh
Common Gotchas
- Docker is required (and the
CLI must be available on PATH).docker
uses random host ports; do not assumedev-up.sh
/5173
.8787- If the UI looks up but is disconnected, confirm you opened the printed URL and that headless is healthy.