PluginBench
Skill
Pass
Audit score 90

cmux-localization

manaflow-ai/cmux

Localization rules and audit workflow for cmux UI strings across all user-facing surfaces.

What is cmux-localization?

Ensures all user-facing text in cmux (UI strings, menus, alerts, docs, help text) is properly localized to supported languages. Use this skill whenever changing any user-visible text to verify localization completeness and follow cmux's hard rules for string management.

  • Enforces localization of UI strings, settings, menus, shortcuts, schema/config text, docs, command/help text, alerts, tooltips, and web messages
  • Requires all strings use `String(localized:defaultValue:)` pattern in Swift/AppKit/SwiftUI code
  • Maintains message catalogs in `Resources/Localizable.xcstrings` and `web/messages/{en,ja}.json` for all supported locales
  • Provides audit checklist to verify every user-facing change has entries in all supported languages
  • Detects bare English string literals in code via regex search to catch missed localizations

How to install cmux-localization

npx skills add null --skill cmux-localization
Prerequisites
  • Familiarity with cmux codebase structure and supported locales (English and Japanese)
  • Access to `Resources/Localizable.xcstrings` and `web/messages/` directory
  • Understanding of Swift `String(localized:)` API and JSON message catalog format
Claude Code
Cursor
Windsurf
Cline

How to use cmux-localization

  1. 1.Identify all user-facing text surfaces affected by your change (UI strings, menus, alerts, docs, etc.)
  2. 2.Add or update entries in `Resources/Localizable.xcstrings` with keys and translations for all supported languages
  3. 3.For web/docs content, update both `web/messages/en.json` and `web/messages/ja.json`
  4. 4.Replace bare string literals with `String(localized:"key.name", defaultValue:"English text")` in Swift code
  5. 5.Run `rg` regex search over changed files to find any remaining bare English strings
  6. 6.Complete the audit checklist: enumerate surfaces, verify all locales have entries, parse localization files, compare keys across languages
  7. 7.Document the localization audit in your final handoff, noting any surfaces that could not be verified

Use cases

Good for
  • Adding or modifying any UI text, button label, menu item, or dialog in cmux
  • Updating help text, command descriptions, or documentation that users see
  • Changing alert messages, tooltips, or status messages
  • Adding new keyboard shortcuts that need user-visible names and descriptions
  • Reviewing pull requests that touch user-facing surfaces to ensure localization compliance
Who it's for
  • Swift/SwiftUI developers working on cmux UI
  • Full-stack developers maintaining cmux web or docs content
  • Code reviewers checking localization completeness
  • Anyone adding user-visible strings to cmux

cmux-localization FAQ

What counts as a user-facing string that must be localized?

UI text, button labels, menu items, shortcuts, schema/config descriptions, docs, command/help text, alerts, tooltips, and web messages. Bare `defaultValue` text, English fallback, or copied English strings do not count as localization.

What languages must I localize to?

Currently English and Japanese. All entries in `Resources/Localizable.xcstrings` and web message catalogs must have translations for both locales.

How do I add a new keyboard shortcut?

Add it to `KeyboardShortcutSettings`, make it visible/editable in Settings, support it in `~/.config/cmux/cmux.json`, and document it in keyboard shortcut and configuration docs. The shortcut metadata itself must also be localized.

What should I do if I cannot verify localization for a surface?

Explicitly state in your final handoff what could not be verified and why, rather than silently skipping the audit.

Where is the detailed audit process documented?

See `references/audit-workflow.md` in the skill for deeper audit steps, common false positives, and examples of surfaces that count as user-facing.

Full instructions (SKILL.md)

Source of truth, from manaflow-ai/cmux.


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

cmux Localization

Use this skill for any user-facing string change.

Hard rules

  • All user-facing strings must be localized.
  • Use String(localized: "key.name", defaultValue: "English text") for Swift/AppKit/SwiftUI strings.
  • Keys go in Resources/Localizable.xcstrings with translations for all supported languages, currently English and Japanese.
  • Never use bare string literals in SwiftUI Text(), Button(), alert titles, tooltips, menus, or dialogs.
  • Localization audit is required for every user-facing change.
  • defaultValue, English fallback text, schema descriptions, or copied English strings do not count as localization.
  • For localized web/docs content, update every supported message catalog, currently web/messages/en.json and web/messages/ja.json, plus any localized data structures carrying inline translations.

Audit checklist

Before finishing a task that changes UI, Settings rows, menus, shortcut metadata, schema/config text, docs, command/help text, alerts, or tooltips:

  1. Enumerate the changed user-facing surfaces.
  2. Verify each surface has entries for every supported locale.
  3. Parse touched localization files.
  4. Compare changed message keys across locales.
  5. Use rg over changed Swift/TS/TSX/docs files for newly introduced bare English.
  6. State the localization audit in the final handoff, or explicitly say what could not be verified.

Related shortcut rule

Every new cmux-owned keyboard shortcut must be added to KeyboardShortcutSettings, visible/editable in Settings, supported in ~/.config/cmux/cmux.json, and documented in the keyboard shortcut and configuration docs.

Detailed reference

  • Read references/audit-workflow.md for a deeper audit process, common false positives, and examples of surfaces that count as user-facing.