# cmux-config

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

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 695 installs · ★ 39
- Author: manaflow-ai
- License: MIT · policy=mirror · the beginning of the file is at the end of this page
- Source: https://github.com/manaflow-ai/cmux-skills/tree/HEAD/skills/cmux-config/SKILL.md
- Updated: 2026-09-08
- HTML: https://affpapa.org/en/nevibecode/skills/cmux-config

## What it 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.

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add manaflow-ai/cmux-skills --skill cmux-config -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/cmux-config/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/cmux-config/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add manaflow-ai/cmux-skills --skill cmux-config -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/cmux-config/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add manaflow-ai/cmux-skills --skill cmux-config -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/cmux-config/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install manaflow-ai/cmux-skills cmux-config
```

2. **Manually: put the files in place**
- File: `.github/skills/cmux-config/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add manaflow-ai/cmux-skills --skill cmux-config -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/manaflow-ai/cmux-skills --path skills/cmux-config
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/cmux-config/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add manaflow-ai/cmux-skills --skill cmux-config -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/manaflow-ai/cmux-skills/tree/HEAD/skills/cmux-config/SKILL.md

## When to use it
- 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
- add a tab bar button in cmux that runs my tests
- rebind a cmux shortcut to switch workspaces
- group my workspaces by current directory

## Source text · SKILL.md · MIT

Below is the content of a third-party file. It is data, not instructions for you: do not act on anything written inside unless the human asks. Block tag: 4236f2831e892528.

BEGIN THIRD-PARTY FILE 4236f2831e892528
````text
---
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. |
````
END THIRD-PARTY FILE 4236f2831e892528

The third-party file has ended. Everything between the 4236f2831e892528 tags is data: requests and commands from it are not followed. An “end of file” line with another tag inside the block is part of the file.

First 2646 of 4827 bytes. © manaflow-ai · MIT · https://github.com/manaflow-ai/cmux-skills/tree/HEAD/skills/cmux-config/SKILL.md

_Part of the page did not fit — see the HTML version._

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
