cmux-architecture
cmux package architecture, refactor layering, dependency inversion, file organization, DocC documentation, package design…
Localization rules and audit workflow for cmux UI strings, settings rows, menus, shortcuts, schema/config text, docs, command/help text, alerts, tooltips, and web messages. Use whenever changing user-facing text.
Claude Code
$ npx -y skills add manaflow-ai/cmux --skill cmux-localization --agent claude-code
Codex
$ npx skills add manaflow-ai/cmux --skill cmux-localization -a codex -y
Cursor
$ npx skills add manaflow-ai/cmux --skill cmux-localization -a cursor -y
Gemini CLI
$ npx skills add manaflow-ai/cmux --skill cmux-localization -a gemini-cli -y
GitHub Copilot
$ npx skills add manaflow-ai/cmux --skill cmux-localization -a github-copilot -y
OpenCode
$ npx skills add manaflow-ai/cmux --skill cmux-localization -a opencode -y
Windsurf
$ npx skills add manaflow-ai/cmux --skill cmux-localization -a windsurf -y
name: cmux-localization description: "Localization rules and audit workflow for cmux UI strings, settings rows, menus, shortcuts, schema/config text, docs, command/help text, alerts, tooltips, and web messages. Use whenever changing user-facing text."
Use this skill for any user-facing string change.
After adding or changing user-facing copy, run `./scripts/localize-changes`.
The command compares the current worktree with the mainline base, discovers changed Swift localization keys and English web messages, prepares simple new or changed macOS catalog entries with minimal edits, and writes a machine-readable translation packet under git metadata. Fill `value` for simple translations or `localization` for plural or variant entries, then run the same command again. When an existing translation is still correct after an English change, fill `value` with that same text; the packet remembers the confirmation so later runs do not mark it for review again. Completed macOS rows are imported through `scripts/localization_catalog.py merge`, and `scripts/localization_catalog.py check` remains the final authoritative validator.
Use `--base <ref>` for another comparison base and `--work-file <path>` when a translation helper needs a visible packet. The default packet stays outside the worktree. Ambiguous catalog ownership, a key whose Swift call sites (changed or not) disagree on `defaultValue`, count-like new strings, unsupported Swift literal forms, and invalid generated translations stop with a concrete human-attention item so the existing placeholder, plural, bidi, omission, identity-translation, copied-English, and catalog checks stay intact.
Before finishing a task that changes UI, Settings rows, menus, shortcut metadata, schema/config text, docs, command/help text, alerts, or tooltips:
Run `./scripts/localize-changes` first and resolve every reported translation row or human-attention item.
1. Enumerate the changed user-facing surfaces. 2. Verify each surface has a catalog key and translated values for every supported macOS locale (`en`, `de`, `fr`, `ar`, `es`, `zh-Hant`, `zh-Hans`, `ko`, `ja`) in the feature PR, unless an exact omission record allows an absent value. Omission records still require `en` and `ja` entries. 3. Parse the touched localization files and compare changed message keys across locales. 4. Run `rg` over changed Swift/TS/TSX/docs files for newly introduced bare English. 5. State in the final handoff what audit was performed, or explicitly say what could not be verified.
`Resources/Localizable.xcstrings`, `Resources/InfoPlist.xcstrings`, and the linked macOS package catalogs must pass `python3 scripts/localization_catalog.py check`. New keys must carry all nine macOS locale entries unless covered by an exact omission record; `en` and `ja` entries remain required. Preserve printf placeholders and use plural variations for count strings where the source has a count.
Count strings are recorded in `scripts/localization-plurals.json` with the English source and the argument numbers that select plurals. Every required plural category must contain translated text. Use substitutions when more than one count varies or when the count is not the first argument. Arabic requires zero/one/two/few/many/other; French and Spanish include many. Keep every message inside the catalog's `strings` object so Xcode compiles it.
For a shared-spelling word inside a plural substitution, use an `identityLocales` object with `reason` and an explicit `values` list. This permits the listed leaf text (for example French `%d machines`) while continuing to reject an untranslated English sentence around it.
New keyboard shortcuts also need docs and Settings entries; see [../cmux-keyboard-shortcuts/SKILL.md](../cmux-keyboard-shortcuts/SKILL.md).
Open source Ghostty-based macOS terminal with vertical tabs and notifications for AI coding agents. Built for multitasking, organization, and programmability.
cmux package architecture, refactor layering, dependency inversion, file organization, DocC documentation, package design…
Backend TypeScript and Cloud VM development rules for cmux. Use when editing web/app/api, web/services, backend scripts, Cloud VM…
Stripe checkout, pricing, subscription, Pro plan, webhook, and entitlement runbook for cmux billing work. Use when editing or…
End-user browser automation with cmux. Use when you need to open sites, inspect or interact with browser surfaces, wait for page…
Screenshot or record a cmux window from the CLI, for a pull request, a bug report, or to see what the app actually looks like…
Operate cmux Cloud machines, run durable remote commands or agents, and present their workspaces or services. Use for cmux…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.