npx skills add ...
npx skills add reason-machines/trending-skills --skill cmux-terminal-multiplexer
AI-native terminal multiplexer with programmable socket API, full Playwright-equivalent browser automation, and agent team coordination — built for Claude Code and autonomous agent workflows
npx skills add reason-machines/trending-skills --skill cmux-terminal-multiplexer
Skill by ara.so — Daily 2026 Skills collection
cmux is a terminal multiplexer with a programmable socket API designed for AI coding agents. It provides full Playwright-equivalent browser automation, real-time terminal split management, sidebar status reporting, and agent team coordination — all via a simple CLI.
Environment variables set automatically:
$CMUX_SURFACE_ID — your current surface ref$CMUX_WORKSPACE_ID — your current workspace refHandles use short refs: surface:N, pane:N, workspace:N, window:N.
Always capture the returned surface_ref:
Golden rule: never steal focus. Always use --surface targeting.
cmux embeds a full headless Chromium engine with a Playwright-style API. No external Chrome required. Every command targets a browser surface by ref.
Capture the surface ref:
Instead of CSS selectors, snapshot to get stable element refs (e1, e2, ...):
Refs are invalidated after DOM mutations — always re-snapshot after navigation or clicks. Use --snapshot-after to auto-get a fresh snapshot:
Show live status to the user without interrupting their flow:
Use cmux splits to give each agent teammate a visible workspace. Coordinate via SendMessage and task lists — never via reading each other's terminal output.
cmux send-surfacecmux set-status and cmux logThen in each teammate's prompt:
claude -p in splits — use the Agent tool with team_name insteadcmux close-surface --surface <ref> when done| Task | Command |
|---|---|
| Where am I? | cmux identify --json |
| Split right | cmux --json new-split right |
| Split down | cmux --json new-split down |
| Send command | cmux send-surface --surface <ref> "cmd\n" |
| Read output | cmux capture-pane --surface <ref> |
| Open browser | cmux --json browser open <url> |
| Page snapshot | cmux browser <ref> snapshot --interactive |
| Click element | cmux browser <ref> click e1 |
| Fill input | cmux browser <ref> fill e1 "text" |
| Wait for load | cmux browser <ref> wait --load-state complete --timeout-ms 15000 |
| Read page text | cmux browser <ref> get text body |
| Evaluate JS | cmux browser <ref> eval "expression" |
| Find by role | cmux browser <ref> find role button |
| Save auth | cmux browser <ref> state save ./auth.json |
| Load auth | cmux browser <ref> state load ./auth.json |
| Set status | cmux set-status <key> "text" --icon <name> |
| Progress bar | cmux set-progress 0.5 --label "Working..." |
| Log message | cmux log "message" |
| Notify | cmux notify --title "T" --body "B" |
| Close split | cmux close-surface --surface <ref> |
| Screenshot | cmux browser <ref> screenshot |