cmux Debug

SkillDev tools

Lets your agent run a command in a real terminal pane and capture its rendered output to verify how it displays.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the cmux Debug skill

About this capability

Verifies ccusage terminal output in a real cmux pane. Use when changing responsive tables, column widths, progress bars, spinners, or colors, or when a long-running command's output must be captured beyond the visible viewport.

What this skill tells your AI

The instructions your AI receives, as published by ccusage/ccusage in .agents/skills/cmux-debug/SKILL.md and read by ahel’s review.

Piped stdout is not a terminal: width detection, color, progress, and spinners all take a different branch, so a non-interactive run cannot confirm a rendering change. Run the command inside a cmux surface and read the pane back instead.

Pick a target with the listing commands (cmux --help, cmux capabilities --json), then send and capture against that same surface — the capture is only meaningful for the pane the command actually ran in:

cmux send --workspace <workspace> --surface <surface> "printf '\\033c'; cd <cwd>; <command>\n"
cmux capture-pane --workspace <workspace> --surface <surface> --scrollback --lines 120

The leading screen reset keeps the previous run's output out of the capture, and --scrollback is what survives output longer than the viewport; cmux read-screen without it only returns the visible screen.

For a responsive-layout bug, capture the geometry in the same send so the widths are provably the ones the command saw:

cmux send --workspace <workspace> --surface <surface> "printf '\\033c'; stty size; printf 'COLUMNS=%s\n' \"\$COLUMNS\"; cd <cwd>; <command>\n"

Then check the rendered table against that width: no wrapping, and no truncated date, model, or total columns. Repeat at a narrow width — layout regressions show up there first.

If capture-pane or read-screen is missing from cmux capabilities --json, fall back to socket RPC, which takes UUIDs rather than refs:

cmux rpc surface.read_text '{"workspace_id":"<workspace_uuid>","surface_id":"<surface_uuid>","scrollback":true,"lines":120}'

Signals

GitHub stars
19k
Forks
830
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
cmux-debug
Source
github.com/ccusage/ccusage