A Claude Code skill for managing cmux panels during software development — open files in Neovim, view git diffs with delta, and run commands in split panes, all by talking to Claude.
Say things like:
| You say | What happens |
|---|---|
| "open the code" | Claude finds the relevant file and opens it in nvim in a right panel |
| "show me the diff" | Opens git diff in a bottom panel (rendered by delta) |
| "run the tests in a new pane" | Runs your test command in a split panel |
| "start the dev server" | Opens a right panel with your dev server running |
| "open both files side by side" | Two nvim panels side by side |
curl -fsSL https://raw.githubusercontent.com/jhta/cmux-skill/main/install.sh | bash && source ~/.zshrcThis will:
- Install Neovim and delta via Homebrew (if not already installed)
- Symlink the cmux CLI
- Clone the skill into
~/.claude/skills/cmux - Add helper functions to your
~/.zshrc/~/.bashrc - Configure git to use delta with side-by-side, line numbers, and dark mode
- Wire up Claude Code hooks so cmux gets notified when Claude starts, stops, or sends a notification
- Reload your shell so helpers are immediately available
Step-by-step
- cmux (native macOS terminal)
- Neovim —
brew install neovim - delta —
brew install git-delta - Claude Code running inside a cmux workspace
git clone https://github.com/jhta/cmux-skill ~/.claude/skills/cmuxsudo ln -sf "/Applications/cmux.app/Contents/Resources/bin/cmux" /usr/local/bin/cmuxAdd to ~/.zshrc or ~/.bashrc:
source ~/.claude/skills/cmux/scripts/cmux-helpers.shgit config --global core.pager delta
git config --global interactive.diffFilter "delta --color-only"
git config --global delta.navigate true
git config --global delta.dark true
git config --global delta.side-by-side true
git config --global delta.line-numbers true
git config --global merge.conflictstyle diff3
git config --global diff.colorMoved defaultcmux Settings → Security → Socket API → "cmux processes only" (default).
Once sourced, you can also use these directly in your terminal:
cmux-split right "nvim src/index.ts" # open file in right panel
cmux-vim src/components/Button.tsx # shorthand for nvim in right panel
cmux-diff # git diff in bottom panel
cmux-diff-staged # staged diff
cmux-show abc1234 # show a commit
cmux-run "npm test" # run command, keep panel open after
cmux-tail logs/app.log # tail a log file
cmux-done "Build complete" # send a macOS notificationcmux CLI pattern (two steps):
# 1. Create the split — returns "OK surface:3 workspace:1"
cmux new-split right
# 2. Send a command to that surface (trailing newline executes it)
cmux send --surface surface:3 "nvim src/index.ts
"The cmux-split helper wraps both steps into one call.
cmux/
├── SKILL.md # Main skill definition (auto-loaded by Claude Code)
├── references/
│ └── socket-api.md # Full cmux socket API reference
└── scripts/
└── cmux-helpers.sh # Bash helper functions