Automates browser tasks in cmux embedded webviews: open sites, snapshot elements for refs, click/fill/type/select/press, wait for state changes/URLs/selectors. Needs $CMUX_WORKSPACE_ID.
From claw-muxnpx claudepluginhub leejuoh/claude-code-zero --plugin claw-muxThis skill is limited to using the following tools:
references/authentication.mdreferences/commands.mdreferences/session-management.mdreferences/snapshot-refs.mdtemplates/authenticated-session.shtemplates/capture-workflow.shtemplates/form-automation.shDesigns and optimizes AI agent action spaces, tool definitions, observation formats, error recovery, and context for higher task completion rates.
Implements structured self-debugging workflow for AI agent failures: capture errors, diagnose patterns like loops or context overflow, apply contained recoveries, and generate introspection reports.
Compares coding agents like Claude Code and Aider on custom YAML-defined codebase tasks using git worktrees, measuring pass rate, cost, time, and consistency.
Use this skill for browser tasks inside cmux webviews. Requires cmux environment ($CMUX_WORKSPACE_ID). Outside cmux, this skill's features are unavailable.
get url before waiting or snapshotting.--interactive) to get fresh element refs.click, fill, type, select, press).cmux --json browser open https://example.com
# use returned surface ref, for example: surface:7
cmux browser surface:7 get url
cmux browser surface:7 wait --load-state complete --timeout-ms 15000
cmux browser surface:7 snapshot --interactive
cmux browser surface:7 fill e1 "hello"
cmux --json browser surface:7 click e2 --snapshot-after
cmux browser surface:7 snapshot --interactive
# identify current context
cmux identify --json
# open routed to a specific topology target
cmux browser open https://example.com --workspace workspace:2 --window window:1 --json
Notes:
surface:N, pane:N, workspace:N, window:N).--id-format uuids|both).surface:N per task unless you intentionally switch.cmux browser <surface> wait --selector "#ready" --timeout-ms 10000
cmux browser <surface> wait --text "Success" --timeout-ms 10000
cmux browser <surface> wait --url-contains "/dashboard" --timeout-ms 10000
cmux browser <surface> wait --load-state complete --timeout-ms 15000
cmux browser <surface> wait --function "document.readyState === 'complete'" --timeout-ms 10000
cmux --json browser open https://example.com/signup
cmux browser surface:7 get url
cmux browser surface:7 wait --load-state complete --timeout-ms 15000
cmux browser surface:7 snapshot --interactive
cmux browser surface:7 fill e1 "Jane Doe"
cmux browser surface:7 fill e2 "jane@example.com"
cmux --json browser surface:7 click e3 --snapshot-after
cmux browser surface:7 wait --url-contains "/welcome" --timeout-ms 15000
cmux browser surface:7 snapshot --interactive
cmux browser surface:7 fill e11 "" --snapshot-after --json
cmux browser surface:7 get value e11 --json
# navigate -> verify -> wait -> snapshot -> action -> snapshot
cmux browser surface:7 get url
cmux browser surface:7 wait --load-state complete --timeout-ms 15000
cmux browser surface:7 snapshot --interactive
cmux --json browser surface:7 click e5 --snapshot-after
cmux browser surface:7 snapshot --interactive
If get url is empty or about:blank, navigate first instead of waiting on load state.
| Reference | When to Use |
|---|---|
| Commands | Full browser command mapping and quick syntax |
| Snapshot and Refs | Ref lifecycle and stale-ref troubleshooting |
| Authentication | Login/OAuth/2FA patterns and state save/load |
| Session Management | Multi-surface isolation and state persistence patterns |
| Template | Description |
|---|---|
| Form Automation | Snapshot/ref form fill loop |
| Authenticated Session | Login once, save/load state |
| Capture Workflow | Navigate + capture snapshots/screenshots |
These are not supported in cmux's embedded browser (WKWebView-based):
Use supported high-level commands (click, fill, press, scroll, wait, snapshot) instead.
e1, e2, ...) are invalidated on any DOM change — always re-snapshot after navigation, modal open/close, or mutating actions. Use --snapshot-after on click/fill to combine action + snapshot.snapshot --interactive can return js_error on complex pages — fall back to get text body or get html body for content extraction.browser open targets the workspace of the calling terminal (via $CMUX_WORKSPACE_ID), even if a different workspace is currently focused. Use --workspace to override.goto and navigate are aliases — both work for same-surface navigation.js_error on snapshot --interactive or evalSome complex pages can reject the JavaScript used for rich snapshots.
Recovery:
cmux browser surface:7 get url
cmux browser surface:7 get text body
cmux browser surface:7 get html body
get url first to confirm the page actually navigated.get text body or get html body when snapshot --interactive returns js_error.