Back to Skills

cmux-customization

Customize cmux for an end user. Use when changing cmux.json actions, custom commands, workspace layouts, plus-button behavior, surface tab bar buttons, Command Palette entries, Dock controls, sidebar and app settings, shortcuts, notifications, browser routing, examples-library presets, or Ghostty-backed terminal preferences.

22,859stars1,793forksUpdated 6/25/2026

Security Assessment

Safe(100/100)
Security Score100/100

About cmux-customization

An end-user customization skill for cmux that edits the application's configuration safely. It covers a broad surface: custom actions in cmux.json (which can appear in the Cmd+Shift+P Command Palette, surface tab bars, shortcuts, and the plus-button right-click menu), the new-workspace plus-button behavior (ui.newWorkspace.action and ui.newWorkspace.contextMenu), surface tab bar buttons, workspace layouts and workflows built from commands, Dock controls in .cmux/dock.json, sidebar and app settings, notifications and feed hooks, workspace metadata, team presets, and Ghostty-backed terminal preferences. Its guiding principles are to keep the user's config intact, prefer schema-backed edits, and validate before reporting completion.

Choosing the right surface is a central concern. App preferences such as appearance, sidebar, notifications, browser routing, automation, and shortcuts are managed through the cmux-settings helper against the global ~/.config/cmux/cmux.json. Actions, UI wiring, workspace layouts, tab bar buttons, plus-button behavior, and Command Palette entries are edited in the global cmux.json or a project-local .cmux/cmux.json, where project-local entries override global ones with the same ID or name. Dock controls live in dock.json, and terminal rendering and terminal keybindings (fonts, cursor style, copy-on-select, shell integration, themes) belong in the Ghostty config rather than invented cmux UI settings.

The workflow is deliberately careful: inspect the existing config first, pick global or project-local scope, back up the target file with a timestamped copy before editing, apply the smallest diff while preserving unrelated sections such as vault, rightSidebar, commands, actions, ui, and notifications, then run cmux reload-config and verify the configured entrypoint exists. A reusable examples library covers worktree agents, full-stack dev layouts, SSH devboxes, PR review workspaces, and CI watches.

FAQ

When should I use a project-local config instead of the global one?

Use project-local .cmux/cmux.json for repo-specific actions, commands, UI wiring, and notification hooks so they travel with the repo; project-local entries override global ones with the same ID or name. Use the global ~/.config/cmux/cmux.json for app preferences.

What should I edit for terminal fonts, themes, or keybindings?

Those belong in the Ghostty config, usually ~/.config/ghostty/config — covering fonts, cursor style, copy-on-select, shell integration, themes, and terminal keybindings. If a request can be handled by Ghostty config, the skill uses that instead of inventing cmux UI settings.

Does it back up my configuration before making changes?

Yes. Before editing an existing file it makes a timestamped .bak copy, and it only backs up files that already exist. It also preserves unrelated sections such as vault, rightSidebar, commands, actions, ui, and notifications.

How are app settings and shortcuts changed?

Through the cmux-settings helper script, which can list supported settings, set values, and validate. The script lives under ~/.agents/skills/cmux-settings/scripts or ~/.codex/skills/... depending on how cmux was installed.

How do I apply changes after editing the config?

Run cmux reload-config after successful edits, then verify the configured entrypoint exists — read back shortcut bindings and confirm action IDs and where they should appear.

All Files

3 files
agents/openai.yaml0.2 KB
View
SKILL.md9.6 KB
View
references/examples.md8.1 KB
View

Install cmux-customization

Download and extract the skill files to your .claude/skills/ directory.

Quick Setup:

  1. Copy the skill folder to .claude/skills/
  2. Claude will automatically detect and use the skill