Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add rgomezcasas/dotfiles --skill cmux-browsergit clone --depth 1 https://github.com/rgomezcasas/dotfilesWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/rgomezcasas/dotfiles/cmux-browser)<a href="https://agentmods.dev/skills/rgomezcasas/dotfiles/cmux-browser"><img src="https://agentmods.dev/badge/skills/rgomezcasas/dotfiles/cmux-browser/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/rgomezcasas/dotfiles/cmux-browser"><img src="https://agentmods.dev/badge/skills/rgomezcasas/dotfiles/cmux-browser.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00039 | $0.02480 |
| Opus 5.5 | $0.00016 | $0.00992 |
| Sonnet 5.5 | $0.00008 | $0.00496 |
| Haiku 4.5 | $0.00004 | $0.00248 |
Grade A, and why
cmux-browser scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 22d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 237 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Browser Automation with cmux
Read the CLI contract first
Check the binary that will actually run before giving an exact command:
cmux browser --help
cmux --version
There are two deliberately different command shapes:
- Create a browser surface with
open,open-split, ornew. These commands may be workspace-scoped and do not need a surface handle. - Use an existing surface with every surface-bound navigation, inspection, interaction, tab, state, or diagnostic command. Pass the handle explicitly with
--surface <handle>or as the first positional token.
Prefer the flag form in scripts because it makes the target unmissable:
SURFACE="surface:7" # use a ref returned by discovery; do not guess an index
cmux browser --surface "$SURFACE" get url
cmux browser --surface "$SURFACE" get-url # accepted alias
cmux browser --surface "$SURFACE" snapshot --interactive
cmux browser --surface "$SURFACE" snapshot -i # accepted alias
cmux browser --surface "$SURFACE" url # accepted alias
cmux browser --surface "$SURFACE" tab list
cmux browser --surface "$SURFACE" click e1 --snapshot-after
The positional form is equivalent (cmux browser "$SURFACE" get url). url and
get-url are accepted URL aliases, and the short interactive snapshot flag is
accepted when a surface is already present; use get url and
snapshot --interactive in new documentation so the target and operation are
clear. Surface-bound operations have no unscoped form. The current CLI's
explicitly global browser verbs (open, open-split, new, identify,
import, profile, profiles, react-grab, reactgrab, devtools,
dev-tools, focus-mode, design-mode, zoom, and history) may omit the
handle and use caller/workspace routing; do not infer a target from visible
focus for any other verb.
Find an existing browser surface without changing focus
identify, tree, and list commands are read-only and do not select a
workspace, pane, or browser. Do not infer that the visually focused surface is
the one the user wants.
What ships with it
12 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- AGENTS.md 821 B
- agents/openai.yaml 442 B
- references/authentication.md 4.9 KB
- references/commands.md 7.0 KB
- references/proxy-support.md 800 B
- references/session-management.md 2.4 KB
- references/snapshot-refs.md 1.2 KB
- references/surface-discovery.md 4.0 KB
- references/video-recording.md 995 B
- templates/authenticated-session.sh 733 B runs code
- templates/capture-workflow.sh 491 B runs code
- templates/form-automation.sh 468 B runs code
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 22d ago First seen · 237 lines · 39 tokens per session scan A 450564b0079a
cmux-browser is a skill published in the GitHub repository rgomezcasas/dotfiles (363 stars, last pushed 9d ago), licensed MIT. It adds 39 tokens to every session and 2,480 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-24.
Other skills, from other repositories
walkthrough
Generate a hands-on browser walkthrough of a PR's user-facing changes to exercise before review; --publish posts the final version to the PR for QA.
prd-view
Render a PRD Markdown file as a rich, self-contained HTML reading view (Dashboard style) and open it in the browser. The Markdown stays authoritative; the HTML is a derived, ephemeral presentation.
playwriter
Control the user own Chrome browser via Playwriter extension with Playwright code snippets in a stateful local js sandbox via playwriter cli. Use this over other Playwright MCPs to automate the browser — it connects to the user's existing Chrome instead of launching a new one. Use this for JS-heavy websites…
userscripts
Use when writing Tampermonkey/Violentmonkey/Greasemonkey userscripts, modifying website behavior or appearance, or working with .user.js files.
chrome-cdp
Interact with local Chrome browser session (only on explicit user approval after being asked to inspect, debug, or interact with a page open in Chrome). Requires Node.js 22+ and a local Chromium-family browser with remote debugging enabled — check node --version before relying on this skill.
web-access
A web-access workflow for searching websites, reading pages, handling logged-in sites, and automating browser interactions.