What does this skill do, and when should you use it?
cmux-localization is an Agent Skill inside the manaflow-ai/cmux repository (skills/cmux-localization/SKILL.md) that governs all user-facing string changes in the cmux macOS app. It mandates that every UI string go through String(localized:) and .xcstrings catalogs covering nine macOS languages (en, de, fr, ar, es, zh-Hant, zh-Hans, ko, ja), with English and Japanese always required, and sets hard rules for plurals, omission records, and identity-locale exceptions. After any copy change, contributors run ./scripts/localize-changes to generate a machine-readable translation packet, with python3 scripts/localization_catalog.py check as the final authoritative validator. It is scoped to the cmux repository itself, not a general-purpose i18n tool.
- Triggers a uniform localization flow whenever user-facing copy changes: UI, Settings rows, menus, shortcut metadata, schema/config text, docs, command/help text, alerts, tooltips, or web messages
- Runs ./scripts/localize-changes, diffing the worktree against the mainline base to discover changed Swift localization keys and English web messages and produce a machine-readable translation packet
- Has contributors fill value for simple translations or localization for plural/variant entries, then re-run the command; completed macOS rows are imported via scripts/localization_catalog.py merge
- Enforces scripts/localization_catalog.py check as the authoritative validator covering placeholder, plural, bidi, omission, identity-translation, and copied-English checks
- Uses rg over changed Swift/TS/TSX/docs files to catch newly introduced bare English
- Records deliberate invariant literals in scripts/localization-allowed-omissions. and count strings in scripts/localization-plurals.
- A contributor adding a feature (a new Settings row or menu item) who must supply catalog entries in all nine macOS languages and pass the catalog check
- A contributor who changed English copy but wants an existing, still-correct translation kept, filling value with the same text so the packet remembers the confirmation
- An author adding a count-based message who must register it in localization-plurals. and cover Arabic's zero/one/two/few/many/other plus French/Spanish many
- A translator requesting an identityLocales exception for a shared-spelling word (e.g. French %d machines) inside a plural substitution
- A developer resolving ambiguous cases — disagreeing defaultValue call sites, unsupported Swift literal forms, invalid generated translations — surfaced as concrete human-attention items
- Teams wanting a generic localization workflow for their own macOS/iOS projects — the scripts, key structures, and omission lists are all bound to the cmux repository layout
- Environments without a checkout of the cmux macOS project and its Python validation scripts
How do you install this skill?
- The scripts the skill depends on (scripts/localize-changes, localization_catalog.py) are not included in the reviewed evidence; read their source before running.
- The repository uses dual licensing (GPL-3.0-or-later plus BUSL-1.1 for web/ with production-use restrictions); confirm license compliance for enterprise use of this skill and its outputs.
- The publisher is not verified by the FollowSkills registry; identity attribution is unknown.
- zh-Hans/zh-Hant are supported, but translation correctness ultimately depends on contributors; automated checks cannot guarantee translation quality.
- This is a static, non-executed review; no scripts or commands were run.
- Shell / CLI
- Local filesystem
cmux repository checkout (Swift/macOS project)Python 3 (scripts/localization_catalog.py)ripgrep (rg)
The source gives no host-specific install commands. The skill is one of 25 skills bundled in the manaflow-ai/cmux repository at skills/cmux-localization/ and comes with the checkout; how to load it into Claude Code or other hosts is not documented in the README or SKILL.md.
git clone https://github.com/manaflow-ai/cmux
cd cmux/skills/cmux-localizationHow do you use this skill?
Once installed, send your agent any of these to trigger it:
- I added a new Settings toggle description — complete the nine-locale catalog entries per cmux localization rules and run the audit
- This English message now has a count; register it in localization-plurals. and generate full plural translations for Arabic and French
- Rename "Last synced" to "Synced" but keep the German translation; confirm it in the packet so it isn't flagged for review again
- Check every UI surface in my PR for newly introduced bare English strings and write the final audit handoff
The skill's description says to use it for any task that changes user-facing text. The flow: run ./scripts/localize-changes first, resolve every reported translation row or human-attention item, then complete the five-step audit checklist (enumerate changed surfaces, verify nine-locale entries, parse localization files and compare keys, rg for bare English, state what was audited in the handoff). Options: --base <ref> to pick a different comparison base, --work-file <path> to expose the packet to a translation helper (the default packet stays outside the worktree).
./scripts/localize-changes
./scripts/localize-changes --base <ref>
./scripts/localize-changes --work-file <path>
python3 scripts/localization_catalog.py merge
python3 scripts/localization_catalog.py checkWhat are this skill's strengths and limitations?
- Turns localization from a convention into an enforced, scriptable process with an authoritative validator, blocking bare strings and missing translations
- Has explicit rules for the real edge cases: plurals, omission records, identity locales, placeholders, bidi text
- Ambiguous cases stop with a concrete human-attention item rather than failing silently
- Ships with a detailed references/audit-workflow.md and cross-links to the keyboard-shortcuts skill
- Scoped to the cmux repository; scripts, key structure, and omission manifests are not reusable elsewhere as-is
- Requiring every feature PR to carry all nine macOS translations is a heavy burden for solo or small changes
- The repo's GitHub license is NOASSERTION (the README shows a GPL-3.0-or-later plus BUSL-1.1 server split), so verify before reusing code
- No independent test evidence or validation of this skill on other Agent Skills hosts is provided in the source
How does this skill compare with similar options?
Side by side with related skills; every score comes from the same FSRS standard.
| Skill | FS score | Stars | Last updated | License |
|---|---|---|---|---|
| cmux Localization Rules & Audit Skill this page | 56 · Use with care | ★ 28k | 1d ago | NOASSERTION |
| Locale UI Patterns — OpenChamber UI Localization Rules | 61 · Recommended | ★ 11k | 3d ago | MIT |
| i18n Workflow | 53 · Use with care | ★ 33k | 1mo ago | Apache-2.0 |
| Chops Dev Environment Setup Skill | 57 · Use with care | ★ 1.9k | 1mo ago | NOASSERTION |
| cmux Debugging Skill | 56 · Use with care | ★ 28k | 1d ago | NOASSERTION |
The README compares cmux with tmux, but that is an app-level comparison with no bearing on this skill; the source names no direct competitor for the skill itself.
How did FollowSkills review this skill?
Pure documentation workflow: no extra permissions, no external side effects, no sensitive-data handling; translation packet lives in git metadata outside the worktree with disclosed data flow. Deductions: the skill instructs running ./scripts/localize-changes and localization_catalog.py, but these scripts are absent from the evidence, so their behavior, dependencies and rollback path cannot be statically verified; publisher is registry-unverified (no deduction, but attribution incomplete).
Instructions are self-consistent with good failure feedback (ambiguous catalog ownership, defaultValue conflicts, unsupported literals stop with concrete human-attention items). Deductions: the dependent scripts are not in evidence, so the happy path is plausible but not reproducible here; the static cap of 10 applies and no third-party execution evidence exists for this path.
Trigger is precise ('use whenever changing user-facing text'), scope enumeration is detailed, non-fit boundaries (defaultValue, omission records, identityLocales) are explicit; zh-Hans/zh-Hant supported, good for Chinese users. Deductions: no stated environment prerequisites (python3, rg, git), and no guard against false semantic triggers.
Well-layered docs: hard rules in SKILL.md, expanded workflow in references/, cross-skill link, agents/openai.yaml metadata, file-based omission and plural records. Deductions: no skill versioning or changelog; repo license metadata is NOASSERTION (actual dual GPL/BUSL licensing is complex and the skill does not self-declare license or maintenance responsibility).
The audit checklist is concrete and executable, offering clear marginal value over manual review. Deductions: output quality still depends on contributor translations, scripts are not in evidence, and direct usability of final artifacts cannot be verified; static cap of 7 applies.
Auditable primary material exists (rules, checklists, reference files) with traceable cross-links. Deductions: key claims (e.g. 'check is the final authoritative validator') are not independently reproducible; repo CI workflows exist but none shown covers this localization flow, so the static cap of 5 binds well below it.
Open a dimension to read why it scored that way
Evidence confidence:Low — Mostly static review, author material or a limited demo; useful for discovery, not high-risk decisions.
See the full review method →