cmux-ref
Skill35 starsChanged 5 months agoMITView on GitHub
Interpret pasted cmux workspace, pane, surface, or window refs and IDs. Use for cmux-ref, cmux-id, workspace_ref, workspace_id, pane_ref, pane_id, surface_ref, surface_id, window_ref, or window_id context blocks.
We split this skill into the rules it gives an agent
13 rules. About 0 are common, 11 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈11
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 8
Use this skill when the user pastes cmux topology identifiers and expects the agent to target that exact workspace, pane, surface, or …
- Distinctive: line 51
If the user provides only bare refs, bind the most specific one as the target:
- Distinctive: line 59
When taking action, say the exact target briefly:
- Distinctive: line 65
If a UUID is present, keep it in your internal target record and include it when useful for disambiguation:
- Distinctive: line 73
Before sending text, closing anything, moving surfaces, changing layout, or reading a screen for a non-current target, verify the target …
- Distinctive: line 75
Use the current cmux CLI and request both refs and UUIDs:
- Very specific: line 83
If a ref is stale but the UUID exists in tree --all, use the current ref associated with that UUID.
- Distinctive: line 87
Do not fall back to the visually focused workspace when the user pasted explicit refs.
- Distinctive: line 98
If the command accepts only one handle, use the most specific relevant handle.
- Distinctive: line 102
Ask one concise question only when the target cannot be inferred safely:
- Distinctive: line 108
Do not ask when one complete block is present.
- Very specific: line 114
Do not change focus just to verify or use a target.
- Distinctive: line 115
Do not close, move, or send input to a target until it has been verified in the current socket.
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
cmux Ref
Use this skill when the user pastes cmux topology identifiers and expects the agent to target that exact workspace, pane, surface, or window. Treat those identifiers as explicit routing context for later instructions.
What To Recognize
Users may paste any mix of these fields, in plain text, Markdown, JSON, YAML, shell-style assignments, or logs:
workspace_ref=workspace:1
workspace_id=D9C23F06-55C8-4EF6-96D2-F2531B3327A8
pane_ref=pane:2
pane_id=60495E4A-56E3-469D-A274-A7877F48B54D
surface_ref=surface:370
surface_id=661B301A-2423-44F1-B789-7AEA1021CFCERecognize these keys:
window_ref,window_idworkspace_ref,workspace_idpane_ref,pane_idsurface_ref,surface_id
Also recognize bare refs near user intent, such as workspace:1, pane:2, or surface:370.
Meaning
*_refvalues are short cmux refs such asworkspace:1,pane:2, andsurface:370. They are convenient for immediate CLI calls in the same cmux instance, but can be renumbered after state changes.*_idvalues are UUIDs for the same objects. Prefer them for identity checks and stale-ref recovery when both forms are available.- The most specific provided object is the default target:
surfacebeatspane,panebeatsworkspace, andworkspacebeatswindow. - A complete block describes a hierarchy. Do not mix a
surface_idfrom one pasted block with aworkspace_reffrom another unless the user clearly says they belong together.
Workflow
Step 1: Parse The Block
Extract keys case-insensitively. Accept = or : separators and ignore quotes, commas, and code fences.
Useful pattern:
\b(window|workspace|pane|surface)_(ref|id)\b\s*[:=]\s*["']?([A-Za-z0-9:-]+)["']?If the user provides only bare refs, bind the most specific one as the target:
workspace:1 pane:2 surface:370Step 2: Announce The Target
When taking action, say the exact target briefly:
I will target surface:370 in pane:2, workspace:1.If a UUID is present, keep it in your internal target record and include it when useful for disambiguation:
I will target surface:370 (661B301A-2423-44F1-B789-7AEA1021CFCE).Step 3: Verify Before Mutating
Before sending text, closing anything, moving surfaces, changing layout, or reading a screen for a non-current target, verify the target exists in the active cmux socket.
Use the current cmux CLI and request both refs and UUIDs:
cmux --json --id-format both tree --all
cmux --json --id-format both identify
cmux --json --id-format both list-pane-surfaces --workspace <workspace_ref_or_id>If a ref is stale but the UUID exists in tree --all, use the current ref associated with that UUID. If neither the ref nor UUID can be found, stop and ask the user for a fresh cmux ref block.
Step 4: Use Explicit Targets
Do not fall back to the visually focused workspace when the user pasted explicit refs. Pass the parsed workspace, pane, and surface to cmux commands.
Examples:
cmux read-screen --workspace workspace:1 --surface surface:370 --scrollback --lines 120
cmux send --workspace workspace:1 --surface surface:370 "npm test\n"
cmux new-surface --workspace workspace:1 --pane pane:2 --type terminal --focus false
cmux open ./report.html --workspace workspace:1 --pane pane:2 --no-focusIf the command accepts only one handle, use the most specific relevant handle. Prefer the UUID when the command accepts UUIDs and you have verified it maps to the intended object.
Ambiguity Rules
Ask one concise question only when the target cannot be inferred safely:
- Multiple unrelated ref blocks are pasted and the instruction says only "use this" or "that one".
- A workspace ref and surface ref are both present but verification shows they belong to different current hierarchies.
- The pasted identifiers are stale and no UUID match exists in
cmux --json --id-format both tree --all.
Do not ask when one complete block is present. Use the most specific target in that block.
Safety Rules
- User-provided cmux refs override caller environment variables and visual focus.
- Preserve both the ref and UUID in notes or scripts when available.
- Do not change focus just to verify or use a target. Prefer non-disruptive commands and
--focus falseor--no-focuswhen supported. - Do not close, move, or send input to a target until it has been verified in the current socket.
- Browser snapshot element refs are separate from cmux topology refs. Use
cmux-browserfor DOM or webview snapshot refs.
In this repository10 other files it gives its agents.
- skills/cmux-artifact/AGENTS.mdAGENTS.md
- skills/cmux-cli/AGENTS.mdAGENTS.md
- cmux-artifactSkill
- cmux-browserSkill
- cmux-cliSkill
- cmux-cloudSkill
- cmux-configSkill
- cmux-freestyleSkill
- cmux-sidebar-builderSkill
- cmux-workspaceSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

