Skip to content

Expand cmux customization skill surfaces - #4236

Merged
lawrencecchen merged 5 commits into
mainfrom
task-customization-surface-docs
May 16, 2026
Merged

lawrencecchen merged 5 commits into
mainfrom
task-customization-surface-docs

Conversation

@lawrencecchen

@lawrencecchen lawrencecchen commented May 16, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • expand cmux-customization with a clear map of customizable surfaces
  • add plus-button click and right-click menu examples, tab bar button guidance, Dock controls, sidebar metadata, Feed, notifications, and Ghostty boundaries
  • add an internal planning doc for future skill and customization ideas
  • update skills docs copy for EN/JA

Tests

  • jq empty web/messages/en.json web/messages/ja.json
  • npx -y markdownlint-cli2 --config /tmp/cmux-mdlint.json skills/cmux-customization/SKILL.md docs/internal/skills-customization-ideas.md
  • npx -y skills@latest add /Users/lawrence/fun/cmuxterm-hq/worktrees/task-customization-surface-docs --list
  • HOME=$(mktemp -d) npx -y skills@latest add /Users/lawrence/fun/cmuxterm-hq/worktrees/task-customization-surface-docs --skill cmux-customization -g -y
  • git diff --check
  • ./skills.sh --list
  • bun test tests/docs-search-utils.test.ts
  • SKIP_ENV_VALIDATION=1 bun run build

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-customization docs with a clearer map of supported customization surfaces and new/updated examples for ui.newWorkspace.action/ui.newWorkspace.contextMenu, ui.surfaceTabBar.buttons, workspace commands layouts, and dock.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-customization skill 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.

  • New Features
    • Extended SKILL with a customization map; examples for plus-button click and ui.newWorkspace.contextMenu (with rightClick alias), ui.surfaceTabBar.buttons, corrected workspace command format (workspace object), Dock controls, and Feed customization (hooks and Feed TUI in Dock). Added validation for Dock JSON parse and runtime reload.
    • Updated skills/cmux-customization/agents/openai.yaml to target replacing the plus-button action and tab bar buttons; refined the short description.
    • Refreshed web/messages/en.json and web/messages/ja.json to include plus-button click/right-click menus, tab bar buttons, Dock controls, Feed hooks, sidebar metadata, and notification hooks; updated the install snippet to npx skills add manaflow-ai/cmux -g -y.
    • Added docs/internal/skills-customization-ideas.md with current skills, surfaces, candidates, and distribution guidance.

Written for commit 082bbb6. Summary will update on new commits. Review in cubic

Summary by CodeRabbit

  • Documentation
    • Added an internal planning doc listing skill candidates, customization idea categories, distribution guidance, and promotion rules for workflows.
    • Expanded cmux customization docs with clearer guidance and new examples for actions, plus-button/right-click behavior, tab bar buttons, Dock controls, Command Palette entries, shortcuts, and JSON/JSONC editing patterns.
    • Added a validation checklist (including Dock JSON parsing) and updated localized skill descriptions.
    • Updated the install snippet to use the current npx command.

Review Change Stack

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

@vercel

vercel Bot commented May 16, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
cmux Ready Ready Preview, Comment May 16, 2026 2:27am
cmux-staging Building Building Preview, Comment May 16, 2026 2:27am

@coderabbitai

coderabbitai Bot commented May 16, 2026 •

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

This 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.

Changes

cmux-Customization Skill Documentation and Localization Expansion

Layer / File(s) Summary
Internal planning document and promotion rules
docs/internal/skills-customization-ideas.md
New internal documentation page enumerating current public cmux skills, customization surfaces, candidate skills, distribution/install guidance, product customization idea categories, and a promotion rule for when to publish workflows as end-user skills.
User-facing skill documentation and examples
skills/cmux-customization/SKILL.md
Rewrote front description and updated "What Can Be Customized" and "Choose the Right Surface"; replaced plus-button example with a workspace command wired via ui.newWorkspace.action and contextMenu; added workspace layout example, Dock controls example, JSONC editing guidance, and Dock JSON validation requirement.
AI agent prompt alignment
skills/cmux-customization/agents/openai.yaml
Updated default_prompt to instruct replacing plus-button actions and tab bar buttons via $cmux-customization and to validate the cmux configuration.
Localized UI strings and skill messaging
web/messages/en.json, web/messages/ja.json
Expanded English and Japanese localization strings to list additional customization surfaces, example use cases (worktree agents, SSH sessions, dev tools), scope boundaries (global vs project-local, click vs right-click), reload/validation steps, and safety/validation notes.
Skills install snippet update
web/app/[locale]/docs/skills/page.tsx
Replaced the "install all cmux skills" command with npx skills add manaflow-ai/cmux -g -y (removed previous --all flag).

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • manaflow-ai/cmux#4222: Earlier refinement of the same cmux-customization skill docs and OpenAI agent prompt with related EN/JA localization strings.
  • manaflow-ai/cmux#3402: Related Skills docs and install/snippet UI work touching the docs page and translations.

Poem

🐰 I hopped through docs with tidy cheer,
Plus-buttons, docks, and tabs appear.
Prompts aligned and locales sing,
Install commands now trimmed and clean.
A little rabbit's joyful tweak.

🚥 Pre-merge checks | ✅ 15 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (15 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely summarizes the main change: expanding the cmux customization skill to cover additional UI surfaces and customization options.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Cmux Swift Actor Isolation ✅ Passed No Swift code changes in this PR. All changes are documentation, configuration, and TypeScript/JSON files. The custom check for Swift actor isolation is not applicable.
Cmux Swift Blocking Runtime ✅ Passed No Swift code changes in this PR. All modifications are documentation, configuration, and localization only. Check not applicable.
Cmux No Hacky Sleeps ✅ Passed PR contains documentation, localization, and React UI components. No TypeScript/JavaScript/shell runtime code changes introduce sleeps, timers, or polling. No violations detected.
Cmux Swift Concurrency ✅ Passed PR contains no Swift code changes. The check applies only to cmux-owned Swift code. This PR modifies only documentation, configuration, localization, and web components.
Cmux Swift @Concurrent ✅ Passed PR contains no Swift files. Changes are documentation (Markdown), configuration (YAML), localization (JSON), and UI code (TypeScript/React). Swift @concurrent annotation check is not applicable.
Cmux Swift File And Package Boundaries ✅ Passed No Swift files or SwiftPM packages were modified in this PR. Changes are documentation (Markdown), configuration (YAML/JSON), and web/TypeScript only. The check does not apply.
Cmux Swift Logging ✅ Passed No Swift files were modified in this PR. All changes are documentation (Markdown, YAML, JSON) and TypeScript. Swift logging rules only apply to Swift code changes.
Cmux User-Facing Error Privacy ✅ Passed PR contains only documentation, localization strings, and agent prompts. No user-facing error messages, alerts, or recovery copy that could violate privacy rules. No sensitive data exposed.
Cmux Swiftui State Layout ✅ Passed PR contains no SwiftUI changes. Modified files are Markdown docs, YAML config, JSON localization, and TypeScript. Check is not applicable.
Cmux Architecture Rethink ✅ Passed Custom check not applicable. PR contains only documentation, configuration, localization, and web frontend changes (Markdown, YAML, JSON, TypeScript/React). No Swift code changes present.
Cmux Swift Auxiliary Window Close Shortcuts ✅ Passed PR contains no Swift code changes. Custom check for Swift auxiliary window close shortcuts is not applicable—only documentation, localization, config, and React code modified.
Description check ✅ Passed The PR description is comprehensive and addresses all major template sections including summary of changes, testing verification, and a detailed checklist confirming local testing, documentation updates, and bot review requests.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch task-customization-surface-docs

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@greptile-apps

greptile-apps Bot commented May 16, 2026 •

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR expands the cmux-customization skill documentation with a clearer map of customizable surfaces, new code examples, and updated EN/JA copy — all documentation-only changes with no production code modifications.

  • SKILL.md gains a "What Can Be Customized" section, plus patterns for plus-button wiring (ui.newWorkspace.action / ui.newWorkspace.contextMenu), surface tab bar replacement, Dock controls (dock.json), and a corrected workspace-command schema that puts cwd inside the workspace object and uses the { \"pane\": { ... } } layout format, both of which now match the canonical custom-commands page schema.
  • Install snippet drops the incorrect --all flag (which means "install to every supported agent", not "install all skills"), replacing it with npx skills add manaflow-ai/cmux -g -y as documented in the new internal planning doc.
  • EN/JA messages are updated to list the new surfaces and a new internal planning doc (docs/internal/skills-customization-ideas.md) captures candidate skills and distribution guidance.

Confidence Score: 5/5

Documentation-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

Filename Overview
skills/cmux-customization/SKILL.md Adds new customization surface map and correct workspace/layout examples; cwd placement and layout child format now match the canonical custom-commands schema.
docs/internal/skills-customization-ideas.md New internal planning doc listing current skills, customization surfaces, skill candidates, and distribution notes; contextMenu/rightClick ambiguity is resolved correctly.
web/app/[locale]/docs/skills/page.tsx Removes erroneous --all flag from install snippet, aligning the docs with the skills CLI's actual semantics.
web/messages/en.json Updated description, scope, and references strings for cmux-customization to reflect new surfaces; copy is consistent with the expanded SKILL.md.
web/messages/ja.json JA translations updated in parallel with EN; surface list and references mirror en.json accurately.
skills/cmux-customization/agents/openai.yaml Short description and default prompt updated to reflect the expanded skill scope; minor copy-only change.

Reviews (5): Last reviewed commit: "Document Feed customization surface" | Re-trigger Greptile

Comment thread skills/cmux-customization/SKILL.md Outdated
## 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.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 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.

Suggested change
- 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.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Clarified this in the skill. is now the canonical field, and is described only as an accepted alias.

— Claude Code

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 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.

Suggested change
- `ui.newWorkspace.contextMenu` or `rightClick`: controls the plus-button right-click menu.
- `ui.newWorkspace.contextMenu`: controls the plus-button right-click menu.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Clarified this in the internal planning doc as well. Public examples should use , with documented only as an accepted alias.

— Claude Code

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed earlier in 492a6b5. The planning doc now names contextMenu as canonical and rightClick as the alias.

— Claude Code

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 5 files

Re-trigger cubic

Comment on lines 110 to +115
{
"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": {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 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.

Suggested change
{
"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": {

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in eb8f070. Moved cwd under workspace in the project layout example so it matches the documented workspace command schema.

— Claude Code

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between 754db11 and 492a6b5.

📒 Files selected for processing (2)
  • docs/internal/skills-customization-ideas.md
  • skills/cmux-customization/SKILL.md

Comment thread skills/cmux-customization/SKILL.md Outdated
Comment on lines 110 to 123
{
"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" }] } }
]
}
}
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 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.

Suggested change
{
"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" }] } }
]
}
}
}

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in eb8f070. The workspace layout example now places cwd inside the workspace object.

— Claude Code

@lawrencecchen
lawrencecchen merged commit bbb4730 into main May 16, 2026
25 checks passed
@lawrencecchen
lawrencecchen deleted the task-customization-surface-docs branch May 16, 2026 02:28

This branch was successfully deployed

1 active deployment
Preview – cmux — 082bbb68 Deployed May 16, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant