Skip to content

Make the shortcut reference list every action the schema accepts - #13911

Merged
teamleaderleo merged 1 commit into
mainfrom
chore/skills-reference-drift
Sep 23, 2026
Merged

teamleaderleo merged 1 commit into
mainfrom
chore/skills-reference-drift

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Sep 23, 2026 •

Copy link
Copy Markdown
Collaborator

skills/cmux-keyboard-shortcuts/SKILL.md tells agents "Do not invent action IDs. Validate against the schema or shortcut-actions.md." The reference listed 119 of the schema's 154 ids, so an agent binding openDiffViewer, openTeamPicker, newCloudMachine, markWorkspaceDone, sendCtrlFToTerminal, any of the 11 diffViewer* ids, or any of the four resize-pane-* ids was told it had invented a valid action. The file claimed to be auto-generated and was not.

Resulting behavior

The 36 missing ids are listed under their existing groups, plus one new ## Markdown and diff viewer group. tests/test_cmux_settings_supported_paths.py now asserts the reference and shortcuts.bindings.propertyNames.enum agree in both directions — a missing id and an id the schema rejects both fail.

cmux-skill-contract.yml already triggers on web/data/cmux.schema.json, so the guard runs on the change that introduces drift rather than at the next audit. No workflow change needed.

Tradeoffs

  • The file stays hand-maintained rather than generated. Adding an action now requires a second edit, and the test says so when you forget. Generating it would remove that step but needs a stable group assignment for new ids, which the schema does not carry.
  • all-keys.md had the same false "Auto-generated" header and also lags the schema. I corrected the header to state what is true rather than half-fix the content: regenerating it needs type, default, and description extraction, and hand-patching ~20 table rows would mean inventing descriptions. Left as follow-up.

Two unrelated fixes in the same surface

  • skills/cmux-workspace/SKILL.md hand-set CMUX_SOCKET_PATH and invoked the ambient cmux binary — the exact path CLAUDE.md routes around because it "can target the user's main app socket". It now uses scripts/cmux-debug-cli.sh, which scrubs ambient terminal context.
  • skills/cmux-review/SKILL.md referred to a vocabulary "already exercised by Cultist". That word appeared exactly once in the repository, so no reader could resolve it.

Validation

python3 -m unittest tests.test_cmux_settings_supported_paths is 7/7 green. The new assertion was confirmed to bite: deleting openDiffViewer from the reference fails with "shortcut-actions.md is missing action ids the schema accepts", and restoring it passes. ./scripts/sync-test-wiring --check reports ok across 1038 test files. Linux only — nothing here touches Swift or needs a macOS lane.

🤖 Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.


Summary by cubic

The shortcut action reference now lists every action accepted by the schema, preventing valid action IDs from being rejected as invented. A bidirectional test catches both missing and unsupported IDs, while related skill documentation now uses the debug CLI and removes an unresolvable repository reference.

  • Corrects the inaccurate “Auto-generated” notice in all-keys.md.
  • Adds the missing Markdown, diff viewer, workspace, browser, terminal, and pane actions.
  • Verifies the updated test wiring and settings-path test suite.

Written for commit be7c2a1. Summary will update on new commits.

Review in cubic

skills/cmux-keyboard-shortcuts/SKILL.md tells agents "Do not invent action
IDs. Validate against the schema or shortcut-actions.md." The reference listed
119 of the schema's 154 ids, so an agent binding openDiffViewer, openTeamPicker,
newCloudMachine, markWorkspaceDone, sendCtrlFToTerminal, any of the 11
diffViewer* ids, or any of the four resize-pane-* ids was told it had invented a
valid action.

The file claimed to be auto-generated and was not. The 36 missing ids are added
under their existing groups, plus one new "Markdown and diff viewer" group, and
tests/test_cmux_settings_supported_paths.py now asserts the file and the schema
enum agree in both directions. cmux-skill-contract.yml already triggers on
web/data/cmux.schema.json, so the guard fires on the change that introduces
drift rather than at the next audit.

all-keys.md carried the same false "Auto-generated" header and also lags the
schema. Its header now says what is true. Generating it properly needs type,
default, and description extraction and is left as follow-up.

Two unrelated fixes in the same surface:

- skills/cmux-workspace/SKILL.md hand-set CMUX_SOCKET_PATH and invoked the
  ambient cmux binary, the exact path CLAUDE.md routes around because it "can
  target the user's main app socket". It now uses the scrubbed helper.
- skills/cmux-review/SKILL.md referred to a vocabulary "already exercised by
  Cultist". That word appeared exactly once in the repository, so no reader
  could resolve it.

Verified: the new assertion fails when an id is removed from the reference and
passes when restored; the full file is 7/7 green; sync-test-wiring --check is ok
across 1038 test files.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Sep 23, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 14 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 10 included reviews currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Repository: manaflow-ai/cmux/.coderabbit.yaml

Review profile: ASSERTIVE

Plan: Advanced

Run ID: a3937d2e-d892-4c45-b261-5e31fb2f4400

📥 Commits

Reviewing files that changed from the base of the PR and between af221f0 and be7c2a1.

📒 Files selected for processing (5)
  • skills/cmux-review/SKILL.md
  • skills/cmux-settings/references/all-keys.md
  • skills/cmux-settings/references/shortcut-actions.md
  • skills/cmux-workspace/SKILL.md
  • tests/test_cmux_settings_supported_paths.py

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.

@github-actions

Copy link
Copy Markdown
Contributor

All contributors have signed the CLA ✍️ ✅
Posted by the CLA Assistant Lite bot.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review — holds up, merging

Docs plus one guard test, all checks green, CLEAN. Read the full diff.

The reason this is worth landing rather than just correcting by hand: ShortcutActionReferenceTests.test_reference_lists_every_schema_action asserts drift in both directions — set(enum) - listed catches an id the schema accepts but the reference omits (the bug being fixed, where an agent binding openDiffViewer or any of the 11 diffViewer* ids was told it had invented an action), and listed - set(enum) catches the reverse, an id the reference advertises that the schema would reject. The second direction is the one a hand-fix would have missed, and it's what stops this file rotting again the next time an action is renamed or removed.

Reading the enum through properties.shortcuts.properties.bindings.propertyNames.enum means the schema stays the single source of truth, so the reference can't drift without a red test. That matches what skills/cmux-keyboard-shortcuts/SKILL.md already promises agents — "Do not invent action IDs. Validate against the schema or shortcut-actions.md" — which was false for 35 of 154 ids until now.

Scope is contained: four skills markdown files and one existing test file. No product code, no workflow files, and no new tests/ file, so the test-execution registry needs no update.

Non-blocking: the file previously claimed to be auto-generated and wasn't. The test now enforces the invariant that claim implied, which is the more useful half, but a generator would still be cheaper than hand-maintaining 154 entries the next time a group is added. Worth doing only if this drifts again.

Enabling auto-merge; required checks remain the gate.

— Zarathustra g1 🌱
Run: run_cmux_mainred_triage_20260923_c6

@teamleaderleo
teamleaderleo merged commit 78e0d83 into main Sep 23, 2026
50 of 51 checks passed
rustybret pushed a commit to rustybret/bmux that referenced this pull request Sep 23, 2026
ca867b7 ci(ios): bound the xcodebuild test invocation so a teardown wedge fails fast (manaflow-ai#13927)
9ffbb6a ci: compile the E2E test product once, in its own job (manaflow-ai#13908)
827f614 ci: let the macOS 15 and 26 pools share one Swift package cache (manaflow-ai#13925)
b79a83b Price GPT-6 models in coderouter API-equivalent estimates (manaflow-ai#13892)
ff20a22 Expose in-flight drag intent to custom JavaScript sidebars (manaflow-ai#13841)
3344583 Capture Cloud Desktop click destinations before queued opens (manaflow-ai#13897)
ac041c1 test(ios): assert the letterbox a daemon-push shrink actually produces (manaflow-ai#13920)
ce1c55c Catch guard-group drift between ci.yml and GROUPS (manaflow-ai#13924)
3466781 ci: keep leading whitespace in workload profile git output (manaflow-ai#13883)
78e0d83 Make the shortcut reference list every action the schema accepts (manaflow-ai#13911)
94fc7e8 ci: stop buying a universal Release build for CI janitors and reporters (manaflow-ai#13912)
b91fff1 fix(ios): restore the package conventions lint to green on main (manaflow-ai#13904)
6defb93 ci: skip the nightly publish when no changed path reaches the app (manaflow-ai#13899)
c57b001 ci: let E2E runs seed the compilation cache from any revision on main (manaflow-ai#13900)

# Conflicts:
#	.github/workflows/nightly.yml
#	.github/workflows/perf-activation.yml
#	.github/workflows/test-depot.yml
#	.github/workflows/test-e2e.yml
#	.github/workflows/test-ios.yml
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