Skip to main content
skill CX Codex

cmux-config — Claude Code skill: configure cmux via cmux.json

Edits the cmux config in ~/.config/cmux/cmux.json: appearance, shortcuts, tab bar buttons, workspace groups. Saves apply live, no restart.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add manaflow-ai/cmux-skills --skill cmux-config -a claude-code
Open on GitHub

What cmux-config does

The skill gives your agent a single entry point into cmux configuration. The file is ~/.config/cmux/cmux.json in JSONC, and the app watches it, so saving applies changes right away. The legacy ~/.config/cmux/settings.json is only read as a fallback for keys missing from cmux.json.

All reads and writes go through the bundled ./scripts/cmux-settings helper. It strips JSONC comments, writes atomically and checks keys against the schema. Subcommands include get, set, unset, list-supported, validate, dump and open. Typed preferences live under app, terminal, notifications, sidebar, automation, browser and shortcuts; structural config covers actions, ui.surfaceTabBar.buttons, ui.newWorkspace, commands, rightSidebar and vault.

Here is the trap: validate skips structural sections, so a typo like ui.surfaceTabbar.buttons passes validation while cmux quietly ignores it. Check those keys against references/customize.md and read them back with get. Colors are #RRGGBB, opacities run from 0 to 1, and shortcut action ids must match the schema enum. Workspace groups go through the cmux workspace group CLI rather than hand-editing session JSON.

What it helps with

  • change the theme, font or sidebar opacity in cmux
  • rebind a shortcut to a specific action
  • add a custom tab bar button or context menu item
  • group workspaces into collapsible sections per directory
  • catch unknown config keys before saving

Example prompts for the agent

  • add a tab bar button in cmux that runs my tests
  • rebind a cmux shortcut to switch workspaces
  • group my workspaces by current directory

How to install cmux-config

1Skills CLI (Vercel)

npx skills add manaflow-ai/cmux-skills --skill cmux-config -a claude-code

2Manually: put the files in place

~/.claude/skills/cmux-config/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/cmux-config/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about cmux-config

How do I install cmux-config in Claude?

Run npx skills add manaflow-ai/cmux-skills --skill cmux-config -a claude-code. The skill lands at ~/.claude/skills/cmux-config/SKILL.md.

What does cmux-config do?

It edits ~/.config/cmux/cmux.json: typed settings, structural UI customization and workspace groups. Changes apply on save, with no restart.

Why does validate miss a typo in a customization key?

The validator skips structural sections such as actions, ui, commands, vault and rightSidebar. Check those keys against references/customize.md and read the value back with cmux-settings get.

Source text

SKILL.md · MIT
---
name: cmux-config
description: "Configure cmux through ~/.config/cmux/cmux.json: settings (appearance, sidebar, notifications, automation, browser, shortcuts, set/get/validate by JSON path), customization (tab bar buttons, plus-button click and right-click menus, custom actions/commands/menus, right sidebar), and sidebar workspace groups (anchor workspaces, group CLI/socket ops, per-cwd group config). Triggers: 'cmux config', 'cmux.json', 'change cmux setting', 'set <x> in cmux', 'rebind a cmux shortcut', 'cmux-customize', 'customize cmux', 'tab bar button', 'add cmux action', 'workspace group', 'group sidebar', 'anchor workspace', 'workspaceGroups'."
---

# cmux-config

Single entry point for editing a user's cmux configuration in
`~/.config/cmux/cmux.json` (JSONC). The app watches the file; saving applies
changes immediately, no restart. Legacy `~/.config/cmux/settings.json` is read
only as a fallback for keys absent from `cmux.json`.

Three areas, each with a reference:

- **Settings** — typed preferences under `app`, `terminal`, `notifications`,
  `sidebar`, `sidebarAppearance`, `workspaceColors`, `automation`, `browser`,
  `shortcuts`. See the helper below and [references/all-keys.md](references/all-keys.md) /
  [references/shortcut-actions.md](references/shortcut-actions.md).
- **Customization** — structural config: `actions`, `ui.surfaceTabBar.buttons`,
  `ui.newWorkspace` (plus-button click + context menu), `commands`, `rightSidebar`,
  `vault`. See [references/customize.md](references/customize.md).
- **Workspace groups** — collapsible anchor-owned sidebar sections via the `cmux
  workspace group` CLI / socket API and `workspaceGroups` config. See
  [references/groups.md](references/groups.md).

## Helper script

Use the bundled helper for every settings/customize read and write. It strips
JSONC comments, writes atomically, and validates keys against the schema. From the
installed skill directory:

```bash
./scripts/cmux-settings <subcommand>
```

For brevity below, assume it is on `$PATH` as `cmux-settings` (e.g.
`export PATH="$HOME/.claude/skills/cmux-config/scripts:$PATH"`).

| Command | What it does |
|---|---|
| `cmux-settings path` | Print the config path. |
| `cmux-settings dump [--no-comments]` | Print the raw file (or parsed JSON). |
| `cmux-settings get <a.b.c>` | Print value at dotted JSON path. |
| `cmux-settings set <a.b.c> <value>` | Set value (`<value>` parsed as JSON; bare words stored as strings). |
| `cmux-settings unset <a.b.c>` | Delete key, reverting to the in-app default. |
| `cmux-settings list-supported` | List every settings JSON path the app recognizes. |
| `cmux-settings validate` | Parse the file and flag unknown settings keys. |
| `cmux-settings open` | Open `cmux.json` in `$EDITOR` / VS Code / Cursor / TextEdit. |

`--file <path>` overrides the target file (use for the legacy `settings.json`).

Schema: `https://raw.githubusercontent.com/manaflow-ai/cmux/main/web/data/cmux.schema.json`.

## Workflow

1. If the user named a setting in plain English, look it up first:
   `cmux-settings list-supported | rg -i '<keywords>'`.
2. Make the smallest edit (settings/customize via the helper; groups via the
   `cmux workspace group` CLI in [references/groups.md](references/groups.md)).
3. Verify by surface:
   - **Typed settings:** read back (`cmux-settings get <path>`) and `cmux-settings validate`.
   - **Customization** (`actions`, `ui.*`, `commands`, `vault`, `rightSidebar`): read back the
     exact key (`cmux-settings get <path>`) and confirm the file still parses
     (`cmux-settings dump --no-comments`). Do NOT rely on `validate` here: it skips structural
     sections, so a typo like `ui.surfaceTabbar.buttons` passes validation yet cmux ignores it.
     Check the key against [references/customize.md](references/customize.md).
   - **Groups:** `cmux workspace group list` (the settings validator does not recognize
     `workspaceGroups`).
4. Tell the user it auto-reloaded on save. No app restart. Revert with
   `cmux-settings unset <key>`.

## Rules

- Only edit `cmux.json`. Never edit `settings.json` unless asked; it is legacy.
- Never tell the user to restart cmux to apply a change; the watcher reloads on save.
- Do not blindly overwrite top-level structural sections (`actions`, `ui`,
  `commands`, `vault`, `rightSidebar`); they hold hand-tuned non-settings config.
- Color values are `#RRGGBB`; opacities are `0..1`.
- Shortcut action ids must match the schema enum; look them up in
  [references/shortcut-actions.md](references/shortcut-actions.md) before binding.
- Do not run a tagged app reload for config-only or skill-only changes.
- For workspace groups prefer CLI/socket operations over editing session JSON, and
  preserve anchor semantics (see [references/groups.md](references/groups.md)).

© manaflow-ai · MIT · manaflow-ai/cmux-skills

Similar skills

All skills for Agent setup: memory, context, orchestration →

From the same set5

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor