Agent skill

cmux Browser Automation

by disler in disler/learning-cmux-with-agents

Drives browser surfaces inside cmux from the command line: open sites, snapshot elements, act on refs, wait for state changes and extract data.

MITAuto-check passedProductivity & Automation

Install cmux Browser Automation

skills CLI
$ npx skills add disler/learning-cmux-with-agents --skill cmux-browser -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install disler/learning-cmux-with-agents cmux-browser --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/disler/learning-cmux-with-agents.git skills-src && mkdir -p .claude/skills && cp -r skills-src/ai_docs/cmux-skills/cmux-browser .claude/skills/cmux-browser && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
cmux-browser
GitHub stars
115
Token cost
~1.3k tokens
SKILL.md length
316 words
Files
11 (incl. references)
Skills in repo
5
Repo updated
First seen
Licence
MIT

At a glance

Drives browser surfaces inside cmux from the command line: open sites, snapshot elements, act on refs, wait for state changes and extract data.

  • Works in 6 steps: Open or target a browser surface. → Verify navigation with get url before… → Snapshot (--interactive) to get fresh… → …
  • Automating a site inside a cmux browser pane instead of an external browser
  • SKILL.md covers Core Workflow, Surface Targeting, Wait Support and Common Flows, plus 4 more sections
  • Runs Shell scripts from its folder

What it does

The workflow is to open or target a browser surface, confirm navigation with get url, take an interactive snapshot to obtain fresh element refs, act with those refs (click, fill, type, select, press), wait for the page to change and snapshot again after any DOM or navigation change. Surfaces are addressed with short refs such as surface:N, found with cmux identify, and one surface should be kept per task. If get url returns an empty value or about:blank, the agent navigates first instead of waiting on load state.

Wait commands can target a selector, visible text, a URL fragment or a load state, each with a timeout. Example flows cover form submission, clearing an input and a stable loop of navigate, verify, wait, snapshot, act and snapshot. Reference notes cover commands, snapshot refs, authentication and saved state, proxy support, session management and video recording, and templates for authenticated sessions, capture workflows and form automation are provided.

When your agent uses it

  • Automating a site inside a cmux browser pane instead of an external browser
  • Filling and submitting a web form from the command line
  • Waiting for a page element, text or URL change before extracting data

Example prompts

  • “Open example.com/signup in a cmux browser surface and fill in the form.”
  • “Wait until the dashboard URL loads, then take a snapshot and list the buttons.”
  • “Save the authenticated state after I log in, so the next session skips the login.”
  • “Extract the table on this page and record a video of the session.”

Requirements

  • cmux with browser surfaces available

Workflow steps

6 steps, taken from the first numbered list in SKILL.md.

  1. Open or target a browser surface.
  2. Verify navigation with get url before waiting or snapshotting.
  3. Snapshot (--interactive) to get fresh element refs.
  4. Act with refs (click, fill, type, select, press).
  5. Wait for state changes.
  6. Re-snapshot after DOM/navigation changes.

What it can do on your machine

Read from SKILL.md and the folder at commit 6eaacab. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships script files (Shell), which the agent can run.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

cmux Browser Automation loads about 1.3k tokens when it runs, and up to ~4.9k if it reads all its reference files. Until then it costs about 44 tokens; SKILL.md has 316 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~44
When it runs · the whole SKILL.md, loaded when a task matches
~1.3k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~4.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from disler/learning-cmux-with-agents at commit 6eaacab, republished under its MIT licence (© disler). 316 words, ~1,336 tokens.

Download SKILL.mdSave it as .claude/skills/cmux-browser/SKILL.md (or your agent's skills folder). This skill also uses 10 other files; get the full folder from GitHub.
name
cmux-browser
description
End-user browser automation with cmux. Use when you need to open sites, interact with pages, wait for state changes, and extract data from cmux browser surfaces.

Browser Automation with cmux

Use this skill for browser tasks inside cmux webviews.

Core Workflow

  1. Open or target a browser surface.
  2. Verify navigation with get url before waiting or snapshotting.
  3. Snapshot (--interactive) to get fresh element refs.
  4. Act with refs (click, fill, type, select, press).
  5. Wait for state changes.
  6. Re-snapshot after DOM/navigation changes.
bash
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

Surface Targeting

bash
# 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:

  • CLI output defaults to short refs (surface:N, pane:N, workspace:N, window:N).
  • UUIDs are still accepted on input; only request UUID output when needed (--id-format uuids|both).
  • Keep using one surface:N per task unless you intentionally switch.

Wait Support

cmux supports wait patterns similar to agent-browser:

bash
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

Common Flows

Form Submit
bash
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
Clear an Input
bash
cmux browser surface:7 fill e11 "" --snapshot-after --json
cmux browser surface:7 get value e11 --json
bash
# 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.

Deep-Dive References

ReferenceWhen to Use
references/commands.mdFull browser command mapping and quick syntax
references/snapshot-refs.mdRef lifecycle and stale-ref troubleshooting
references/authentication.mdLogin/OAuth/2FA patterns and state save/load
references/authentication.md#saving-authentication-stateSave authenticated state right after login
references/session-management.mdMulti-surface isolation and state persistence patterns
references/video-recording.mdCurrent recording status and practical alternatives
references/proxy-support.mdProxy behavior in WKWebView and workarounds

Ready-to-Use Templates

TemplateDescription
templates/form-automation.shSnapshot/ref form fill loop
templates/authenticated-session.shLogin once, save/load state
templates/capture-workflow.shNavigate + capture snapshots/screenshots

Limits (WKWebView)

These commands currently return not_supported because they rely on Chrome/CDP-only APIs not exposed by WKWebView:

  • viewport emulation
  • offline emulation
  • trace/screencast recording
  • network route interception/mocking
  • low-level raw input injection

Use supported high-level commands (click, fill, press, scroll, wait, snapshot) instead.

Troubleshooting

js_error on snapshot --interactive or eval

Some complex pages can reject or break the JavaScript used for rich snapshots and ad-hoc evaluation.

Recovery steps:

bash
cmux browser surface:7 get url
cmux browser surface:7 get text body
cmux browser surface:7 get html body
  • Use get url first so you know whether the page actually navigated.
  • Fall back to get text body or get html body when snapshot --interactive or eval returns js_error.
  • If the page is still failing, navigate to a simpler intermediate page, then retry the task from there.

© disler, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 10 other files (references) in ai_docs/cmux-skills/cmux-browser of disler/learning-cmux-with-agents.

  • SKILL.md
  • agents/openai.yaml
  • references/authentication.md
  • references/commands.md
  • references/proxy-support.md
  • references/session-management.md
  • references/snapshot-refs.md
  • references/video-recording.md
  • templates/authenticated-session.sh
  • templates/capture-workflow.sh
  • templates/form-automation.sh

Open the folder on GitHubat commit 6eaacab

Compare with similar skills

cmux Browser Automation next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

cmux Browser Automation compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
cmux Browser Automation this skilldisler/learning-cmux-with-agents115—~1.3kAutomated safety check: PassMIT
Agent Browser CLIvercel-labs/agent-browser44k24 repos~864Automated safety check: PassApache-2.0
Agent Browserquran/quran.com-frontend-next1.9k40 repos~3.3kAutomated safety check: PassNone
Web Access via Browser CDPeze-is/web-access9.1k4 repos~2.2kAutomated safety check: PassMIT
Dev Browser AutomationMemTensor/MemOS12k3 repos~1.7kAutomated safety check: PassApache-2.0
Electron App Automationvercel-labs/agent-browser44k5 repos~1.7kAutomated safety check: PassApache-2.0

Similar skills

  • Agent Browser CLI

    vercel-labs/agent-browser

    Official

    Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking…

    44k GitHub starsUsed in 24 repos~864 tokens
    Productivity & AutomationAuto-check passed
  • Agent Browser

    quran/quran.com-frontend-next

    Automates browser interactions for web testing, form filling, screenshots, and data extraction.

    1.9k GitHub starsUsed in 40 repos~3.3k tokens
    Productivity & AutomationAuto-check passed
  • Routes every web task, from searching to logged-in browsing, through a tiered choice of search, fetch, curl or a real Chrome or Edge session driven over CDP.

    9.1k GitHub starsUsed in 4 repos~2.2k tokens
    Productivity & AutomationAuto-check passed
  • Dev Browser Automation

    MemTensor/MemOS

    Automates a real browser through short TypeScript scripts that keep page state between runs, for navigating, filling forms, taking screenshots and extracting data.

    12k GitHub starsUsed in 3 repos~1.7k tokens
    Productivity & AutomationAuto-check passed
  • Electron App Automation

    vercel-labs/agent-browser

    Official

    Automates Electron desktop apps such as VS Code, Slack or Discord by connecting agent-browser to their Chrome DevTools Protocol port.

    44k GitHub starsUsed in 5 repos~1.7k tokens
    Productivity & AutomationAuto-check passed
  • Next Dev Loop

    vercel/next.js

    Official

    Verify Next.js runtime behavior after editing app code. An agent skill from vercel/next.js.

    143k GitHub starsUsed in 9 repos~2.3k tokens
    Productivity & AutomationAuto-check passed

More from disler/learning-cmux-with-agents

  • cmux Customization

    disler/learning-cmux-with-agents

    Customizes cmux for a user by editing cmux.json actions, workspace layouts, dock controls, tab bar buttons, settings and Ghostty terminal preferences.

    115 GitHub stars~2.4k tokensUpdated 3 mo ago
    Auto-check passed
  • cmux Contributor Dev Workflow

    disler/learning-cmux-with-agents

    Contributor rules for the cmux repo: tagged Debug builds through reload.sh, first-time setup, Xcode project normalization and per-tag sidebar extension points.

    115 GitHub stars~1.5k tokensUpdated 3 mo ago
    Auto-check passed
  • cmux Agent Surface Control

    disler/learning-cmux-with-agents

    Drives the cmux terminal multiplexer from natural language to open, inspect, prompt, read and close windows, workspaces, panes, surfaces and agent sessions.

    115 GitHub stars~2.6k tokensUpdated 3 mo ago
    Auto-check: notes
  • cmux Testing Rules

    disler/learning-cmux-with-agents

    Testing rules for the cmux Swift codebase: Swift Testing as the default framework, a two-commit regression policy, and tests that check runtime behavior, not source text.

    115 GitHub stars~1.2k tokensUpdated 3 mo ago
    Auto-check passed

Questions about cmux Browser Automation

What does cmux Browser Automation do?

Drives browser surfaces inside cmux from the command line: open sites, snapshot elements, act on refs, wait for state changes and extract data. The workflow is to open or target a browser surface, confirm navigation with get url, take an interactive snapshot to obtain fresh element refs, act with those refs (click, fill, type, select, press), wait for the page to change and snapshot again after any DOM or navigation change. Surfaces are addressed with short refs such as surface:N, found with cmux identify, and one surface should be kept per task.

When should I use cmux Browser Automation?

cmux Browser Automation fits situations like: automating a site inside a cmux browser pane instead of an external browser; filling and submitting a web form from the command line; waiting for a page element, text or URL change before extracting data.

How do I install cmux Browser Automation in Claude Code?

Run `npx skills add disler/learning-cmux-with-agents --skill cmux-browser -a claude-code`. Or copy the skill folder (ai_docs/cmux-skills/cmux-browser in disler/learning-cmux-with-agents) into .claude/skills/cmux-browser in your project. Claude Code loads it when a task matches its description.

How do I install cmux Browser Automation in Codex?

Run `npx skills add disler/learning-cmux-with-agents --skill cmux-browser -a codex`. Or copy the skill folder (ai_docs/cmux-skills/cmux-browser in disler/learning-cmux-with-agents) into .agents/skills/cmux-browser in your project. Codex loads it when a task matches its description.

Can I use cmux Browser Automation in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add disler/learning-cmux-with-agents --skill cmux-browser -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/cmux-browser, .gemini/skills/cmux-browser, .github/skills/cmux-browser and .opencode/skills/cmux-browser in your project.

What does cmux Browser Automation need to run?

Going by SKILL.md and its folder, cmux Browser Automation needs a shell for the scripts in its folder. Our summary lists: cmux with browser surfaces available.

Does cmux Browser Automation access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is cmux Browser Automation safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does cmux Browser Automation use?

cmux Browser Automation is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does cmux Browser Automation use?

About 1.3k tokens (SKILL.md is roughly 5.3k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 3.5k tokens, read only when the agent opens those files.

What are the alternatives to cmux Browser Automation?

Skills that share tags, products or a category with cmux Browser Automation: Agent Browser CLI (vercel-labs/agent-browser, 44k stars), Agent Browser (quran/quran.com-frontend-next, 1.9k stars), Web Access via Browser CDP (eze-is/web-access, 9.1k stars) and Dev Browser Automation (MemTensor/MemOS, 12k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains cmux Browser Automation?

disler (a GitHub user) maintains it in disler/learning-cmux-with-agents, which has 115 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on June 29, 2026.

Source: disler/learning-cmux-with-agents on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.