From using-cmux
Use when Claude Code is running inside a cmux session (CMUX_SOCKET_PATH is set) or the user asks to control cmux workspaces, panes, or surfaces — including sending text, reading screens, splitting and focusing panes, and the implementer-to-reviewer handoff where one pane writes code and another pane (Claude, Codex, Gemini CLI, etc.) reviews it. Trigger on mentions of cmux, "other pane", "review pane", "구현 pane", "리뷰 pane", "다른 pane", surface/workspace ids, or whenever the user starts composing `tmux` commands inside cmux so we can emit the cmux equivalent instead.
npx claudepluginhub giwonn/giwonn-plugins --plugin using-cmuxThis skill uses the workspace's default tool permissions.
Control cmux (manaflow-ai/cmux) workspaces, panes, and surfaces from Claude Code, and coordinate multi-agent workflows across panes using message passing.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Generates original PNG/PDF visual art via design philosophy manifestos for posters, graphics, and static designs on user request.
Control cmux (manaflow-ai/cmux) workspaces, panes, and surfaces from Claude Code, and coordinate multi-agent workflows across panes using message passing.
cmux is a macOS-native Ghostty-based terminal. The cmux CLI (installed at /usr/local/bin/cmux) talks to the running app over a Unix socket.
Before any cmux command, confirm you are inside a cmux session:
echo "${CMUX_SOCKET_PATH:-NOT_IN_CMUX}"
NOT_IN_CMUX or empty: you are outside cmux (plain terminal, SSH, CI). Every cmux command will fail. Tell the user explicitly and stop — do not silently fall back to tmux or guessing.Other context variables cmux injects into each pane:
CMUX_WORKSPACE_ID — UUID of the current workspaceCMUX_SURFACE_ID — UUID of the current surfaceWhen these are set, most cmux commands default to "me" if you omit --workspace / --surface.
Window (the macOS app window)
└─ Workspace (sidebar tab; one project/context per workspace)
└─ Pane (split region within a workspace)
└─ Surface (terminal or browser tab inside a pane)
⌘D (split right) / ⌘⇧D (split down).⌃1..⌃8.Handle formats:
workspace:1, pane:2, surface:3, window:1--id-format uuids (or both)| Purpose | Command |
|---|---|
| My context | cmux identify |
| Full tree | cmux tree |
| List workspaces | cmux list-workspaces |
| Current workspace | cmux current-workspace |
| List panes | cmux list-panes |
| List surfaces | cmux list-panels |
Run cmux tree first whenever you need an id you don't already know. Do not hardcode ids — they change between sessions.
| Purpose | Command |
|---|---|
| New workspace | cmux new-workspace --cwd ~/projects/x --command "npm run dev" |
| Split right | cmux new-split right |
| Split down | cmux new-split down --workspace workspace:1 |
| New surface (tab) | cmux new-surface |
| Focus a pane | cmux focus-pane --pane pane:1 |
| Focus a surface | cmux focus-panel --panel surface:2 |
| Resize pane | cmux resize-pane --pane pane:1 -R 10 |
| Purpose | Command |
|---|---|
| Send text | cmux send --surface surface:2 "git status" |
| Send a key | cmux send-key --surface surface:2 enter |
| Read screen | cmux read-screen --surface surface:2 --lines 100 |
| Include scrollback | cmux read-screen --surface surface:2 --scrollback |
| Clear scrollback | cmux clear-history --surface surface:2 |
Newline caveat: cmux send "foo" only types foo into the input buffer — it does not press Enter. To execute, always call cmux send-key <surface> enter as a separate command. Treat the send + send-key pair as one unit.
| Purpose | Command |
|---|---|
| macOS notification | cmux notify --title "Build done" --body "feature/x succeeded" |
| Sidebar status | cmux set-status build Running --icon clock |
| Progress bar | cmux set-progress 0.75 --label "Deploying" |
| Log line | cmux log "Server up" --level info --source api |
cmux browser open|navigate|click|type|screenshot|eval|snapshot|.... See references/cli-cheatsheet.md for full coverage. Just remember it exists so you don't spawn a separate browser when a surface already hosts one.
| Purpose | Command |
|---|---|
| Check socket | cmux ping |
| Surface health | cmux surface-health |
| Refresh all surfaces | cmux refresh-surfaces — try this first if output looks frozen |
Do not generate tmux commands inside cmux — they will not work.
| tmux | cmux |
|---|---|
tmux split-window -h | cmux new-split right |
tmux split-window -v | cmux new-split down |
tmux send-keys -t 0 "cmd" Enter | cmux send --surface surface:0 "cmd" then cmux send-key --surface surface:0 enter |
tmux capture-pane -p -t 0 | cmux read-screen --surface surface:0 |
tmux select-pane -t 0 | cmux focus-pane --pane pane:0 |
tmux new-session | cmux new-workspace |
tmux list-panes | cmux list-panes |
tmux kill-pane -t 0 | cmux close-surface --surface surface:0 |
CMUX_SOCKET_PATH is unset. Do not fall back — stop and tell the user.send does not press Enter. Always pair with send-key ... enter.cmux tree every time you need an id. Never hardcode.send only "executes" if the target pane is at a shell/agent prompt. If the pane is mid-task, the text sits in the buffer. Read the screen first; use send-key ... ctrl+c if you need to interrupt (only with user consent).CMUX_SURFACE_ID makes --surface optional. When targeting another pane, --surface is required.Coordinate two panes running different AI agents via turn-based message passing. No polling. No automatic loops.
cmux send + cmux send-key enter, then end the turn.리뷰했어. 확인해).read-screen, and present a feedback summary to the developer.Step 4 is a hard stop. The workflow resumes only when the developer explicitly says so ("apply it", "ask for another review", etc.).
For the full protocol — exact wording to put in the request, edge cases, signal conventions — read references/ai-orchestration.md.
| If you need... | Read |
|---|---|
| Full CLI reference (every subcommand and flag) | references/cli-cheatsheet.md |
| Handoff protocol, signal conventions, failure modes | references/ai-orchestration.md |
/cmux-here — summarize where you are (workspace / pane / surface) and list neighboring panes./cmux-ask <surface> <prompt> — inject a prompt into another pane and press Enter, in one step.