Repository navigation
Expand cmux customization skill surfaces - #4236
Conversation
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
📝 WalkthroughWalkthroughThis PR expands the cmux-customization skill docs, AI agent prompt, and localized strings to cover more end-user customization surfaces (actions, plus-button behavior, tab bar buttons, Dock controls, workspace layouts, sidebar/Command Palette entries, shortcuts, and notification hooks), adds an internal planning doc, and updates the skills install snippet. Changescmux-Customization Skill Documentation and Localization Expansion
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 15 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (15 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Greptile SummaryThis PR expands the
Confidence Score: 5/5Documentation-only PR with no production code changes; safe to merge. All changed files are documentation, copy, and skill metadata. The workspace layout examples now use the correct schema (cwd inside workspace, { pane: { ... } } children) that matches the canonical custom-commands page. The contextMenu/rightClick ambiguity from earlier threads has been resolved. The --all flag removal from the install snippet is a correct fix. No runtime, Swift, or production logic is touched. No files require special attention. Important Files Changed
Reviews (5): Last reviewed commit: "Document Feed customization surface" | Re-trigger Greptile |
| ## What Can Be Customized | ||
|
|
||
| - Custom actions: define reusable `actions` in `cmux.json`. Actions can appear in Cmd+Shift+P, surface tab bars, shortcuts, and the plus-button right-click menu. | ||
| - New workspace button: set `ui.newWorkspace.action` to replace the normal plus-button click, and `ui.newWorkspace.contextMenu` or `rightClick` to control right-click actions. |
There was a problem hiding this comment.
The phrase "contextMenu or rightClick" leaves the field name ambiguous. An agent reading this will not know whether to emit
ui.newWorkspace.contextMenu or ui.newWorkspace.rightClick — and the code example directly below only shows contextMenu, so rightClick appears to be a mistake or informal alias. If both are accepted key names in the schema, say so explicitly; if only one is valid, drop the other.
| - New workspace button: set `ui.newWorkspace.action` to replace the normal plus-button click, and `ui.newWorkspace.contextMenu` or `rightClick` to control right-click actions. | |
| - New workspace button: set `ui.newWorkspace.action` to replace the normal plus-button click, and `ui.newWorkspace.contextMenu` to control right-click actions. |
There was a problem hiding this comment.
Clarified this in the skill. is now the canonical field, and is described only as an accepted alias.
— Claude Code
There was a problem hiding this comment.
Correction: clarified this in the skill. ui.newWorkspace.contextMenu is now the canonical field, and ui.newWorkspace.rightClick is described only as an accepted alias.
— Claude Code
There was a problem hiding this comment.
Fixed earlier in 492a6b5. contextMenu is now documented as the canonical field and rightClick only as an accepted alias.
— Claude Code
|
|
||
| - `actions` in `cmux.json`: reusable action IDs for Command Palette, shortcuts, tab bar buttons, and plus-button menus. | ||
| - `ui.newWorkspace.action`: replaces the plus-button click. | ||
| - `ui.newWorkspace.contextMenu` or `rightClick`: controls the plus-button right-click menu. |
There was a problem hiding this comment.
Same
contextMenu vs rightClick ambiguity present in the planning doc. Since the code example in SKILL.md uses only contextMenu, this entry should either confirm one canonical field name or explain that both are accepted aliases — otherwise this doc and SKILL.md tell agents contradictory things.
| - `ui.newWorkspace.contextMenu` or `rightClick`: controls the plus-button right-click menu. | |
| - `ui.newWorkspace.contextMenu`: controls the plus-button right-click menu. |
There was a problem hiding this comment.
Clarified this in the internal planning doc as well. Public examples should use , with documented only as an accepted alias.
— Claude Code
There was a problem hiding this comment.
Correction: clarified this in the internal planning doc as well. Public examples should use ui.newWorkspace.contextMenu, with ui.newWorkspace.rightClick documented only as an accepted alias.
— Claude Code
There was a problem hiding this comment.
Fixed earlier in 492a6b5. The planning doc now names contextMenu as canonical and rightClick as the alias.
— Claude Code
| { | ||
| "name": "dev", | ||
| "type": "workspace", | ||
| "cwd": ".", | ||
| "layout": { | ||
| "type": "split", | ||
| "direction": "horizontal", | ||
| "children": [ | ||
| { "type": "pane", "surfaces": [{ "type": "terminal", "command": "bun dev" }] }, | ||
| { "type": "pane", "surfaces": [{ "type": "browser", "url": "http://localhost:3000" }] } | ||
| ] | ||
| "workspace": { | ||
| "name": "Dev", | ||
| "layout": { |
There was a problem hiding this comment.
The
cwd field is placed at the command level here, but the canonical schema (confirmed in web/app/[locale]/docs/custom-commands/page.tsx) puts cwd inside the workspace object. A command-level cwd on a workspace command would be silently ignored by the runtime, causing all surfaces in the layout to start in whatever directory the agent happens to be in rather than the project root.
| { | |
| "name": "dev", | |
| "type": "workspace", | |
| "cwd": ".", | |
| "layout": { | |
| "type": "split", | |
| "direction": "horizontal", | |
| "children": [ | |
| { "type": "pane", "surfaces": [{ "type": "terminal", "command": "bun dev" }] }, | |
| { "type": "pane", "surfaces": [{ "type": "browser", "url": "http://localhost:3000" }] } | |
| ] | |
| "workspace": { | |
| "name": "Dev", | |
| "layout": { | |
| { | |
| "name": "dev", | |
| "workspace": { | |
| "name": "Dev", | |
| "cwd": ".", | |
| "layout": { |
There was a problem hiding this comment.
Fixed in eb8f070. Moved cwd under workspace in the project layout example so it matches the documented workspace command schema.
— Claude Code
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@skills/cmux-customization/SKILL.md`:
- Around line 79-103: The example defines an action "worktree-agents" with type
"workspaceCommand" and commandName "Worktree Agents" but never shows the
corresponding workspace command definition; add a short clarifying sentence and
a matching commands array entry (or show a snippet) that defines a command named
"Worktree Agents" (including fields like name, cwd, and workspace/layout) so
readers see how "worktree-agents" maps to the actual workspace command, and
mention that the action references a command defined elsewhere; reference the
action id "worktree-agents", the command name "Worktree Agents", the "commands"
array, and the "newWorkspace" ui key to guide placement.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Run ID: c1b7d5e3-1955-4d5d-a13f-7bb7fabd7114
📒 Files selected for processing (2)
docs/internal/skills-customization-ideas.mdskills/cmux-customization/SKILL.md
| { | ||
| "name": "dev", | ||
| "type": "workspace", | ||
| "cwd": ".", | ||
| "layout": { | ||
| "type": "split", | ||
| "direction": "horizontal", | ||
| "children": [ | ||
| { "type": "pane", "surfaces": [{ "type": "terminal", "command": "bun dev" }] }, | ||
| { "type": "pane", "surfaces": [{ "type": "browser", "url": "http://localhost:3000" }] } | ||
| ] | ||
| "workspace": { | ||
| "name": "Dev", | ||
| "layout": { | ||
| "direction": "horizontal", | ||
| "children": [ | ||
| { "pane": { "surfaces": [{ "type": "terminal", "command": "bun dev" }] } }, | ||
| { "pane": { "surfaces": [{ "type": "browser", "url": "http://localhost:3000" }] } } | ||
| ] | ||
| } | ||
| } | ||
| } |
There was a problem hiding this comment.
The
cwd field is placed at the command level here, but the canonical schema (confirmed in web/app/[locale]/docs/custom-commands/page.tsx) places cwd inside the workspace object. A command-level cwd on a workspace command is not a recognised field and will be silently ignored, so all surfaces in the layout will start in whatever directory the agent happens to be in rather than the project root.
| { | |
| "name": "dev", | |
| "type": "workspace", | |
| "cwd": ".", | |
| "layout": { | |
| "type": "split", | |
| "direction": "horizontal", | |
| "children": [ | |
| { "type": "pane", "surfaces": [{ "type": "terminal", "command": "bun dev" }] }, | |
| { "type": "pane", "surfaces": [{ "type": "browser", "url": "http://localhost:3000" }] } | |
| ] | |
| "workspace": { | |
| "name": "Dev", | |
| "layout": { | |
| "direction": "horizontal", | |
| "children": [ | |
| { "pane": { "surfaces": [{ "type": "terminal", "command": "bun dev" }] } }, | |
| { "pane": { "surfaces": [{ "type": "browser", "url": "http://localhost:3000" }] } } | |
| ] | |
| } | |
| } | |
| } | |
| { | |
| "name": "dev", | |
| "workspace": { | |
| "name": "Dev", | |
| "cwd": ".", | |
| "layout": { | |
| "direction": "horizontal", | |
| "children": [ | |
| { "pane": { "surfaces": [{ "type": "terminal", "command": "bun dev" }] } }, | |
| { "pane": { "surfaces": [{ "type": "browser", "url": "http://localhost:3000" }] } } | |
| ] | |
| } | |
| } | |
| } |
There was a problem hiding this comment.
Fixed in eb8f070. The workspace layout example now places cwd inside the workspace object.
— Claude Code
Summary
Tests
Note
Low Risk
Low risk: changes are documentation/metadata copy updates plus a docs install snippet tweak, with no runtime or security-sensitive logic modified.
Overview
Expands
cmux-customizationdocs with a clearer map of supported customization surfaces and new/updated examples forui.newWorkspace.action/ui.newWorkspace.contextMenu,ui.surfaceTabBar.buttons, workspacecommandslayouts, anddock.json, plus tighter validation guidance.Refreshes skill metadata and docs site copy (EN/JA) to match the broader scope, updates the OpenAI agent prompt/description, and fixes the skills install snippet to use
npx skills add manaflow-ai/cmux -g -y(no--all).Adds an internal planning note (
docs/internal/skills-customization-ideas.md) capturing current customization surfaces, candidate future skills, and distribution guidance.Reviewed by Cursor Bugbot for commit 082bbb6. Bugbot is set up for automated code reviews on this repo. Configure here.
Summary by cubic
Expands the
cmux-customizationskill to cover more UI entry points and Feed customization, adds a “What Can Be Customized” map, clarifies workspace command examples, and strengthens validation. Updates EN/JA copy, the agent prompt, skills distribution guidance, and the docs install snippet.ui.newWorkspace.contextMenu(withrightClickalias),ui.surfaceTabBar.buttons, corrected workspace command format (workspaceobject), Dock controls, and Feed customization (hooks and Feed TUI in Dock). Added validation for Dock JSON parse and runtime reload.skills/cmux-customization/agents/openai.yamlto target replacing the plus-button action and tab bar buttons; refined the short description.web/messages/en.jsonandweb/messages/ja.jsonto include plus-button click/right-click menus, tab bar buttons, Dock controls, Feed hooks, sidebar metadata, and notification hooks; updated the install snippet tonpx skills addmanaflow-ai/cmux-g -y.docs/internal/skills-customization-ideas.mdwith current skills, surfaces, candidates, and distribution guidance.Written for commit 082bbb6. Summary will update on new commits. Review in cubic
Summary by CodeRabbit