Skip to content
Agent Orchestration
Skill

/localize

Localization pipeline — find hardcoded strings, extract string tables, cultural review, VO, RTL, enforce string freeze.

From plugin
claude-code-game-studios
39k78 skills49 agents

Claude Code

$ npx -y skills add Donchitos/Claude-Code-Game-Studios --skill localize --agent claude-code

SKILL.md

localize.SKILL.md
name: localize
description: "Localization pipeline — find hardcoded strings, extract string tables, cultural review, VO, RTL, enforce string freeze."
argument-hint: "[scan|extract|validate|status|brief|cultural-review|vo-pipeline|rtl-check|freeze|qa]"
user-invocable: true
allowed-tools: Read, Glob, Grep, Write, Edit, Agent, AskUserQuestion, Bash(bash "*/.claude/skills/localize/../../hooks/yaml-helper.sh" resolve_config *)
model: sonnet

!`bash "${CLAUDE_SKILL_DIR}/../../hooks/yaml-helper.sh" resolve_config --keys automation`

Localization Pipeline

Localization is not just translation — it is the full process of making a game feel native in every language and region. Poor localization breaks immersion, confuses players, and blocks platform certification. This skill covers the complete pipeline from string extraction through cultural review, VO recording, RTL layout testing, and localization QA sign-off.

**Modes:**

  • `scan` — Find hardcoded strings and localization anti-patterns (read-only)
  • `extract` — Extract strings and generate translation-ready tables
  • `validate` — Check translations for completeness, placeholders, and length
  • `status` — Coverage matrix across all locales
  • `brief` — Generate translator context briefing document for an external team
  • `cultural-review` — Flag culturally sensitive content, symbols, colours, idioms
  • `vo-pipeline` — Manage voice-over localization: scripts, recording specs, integration
  • `rtl-check` — Validate RTL language layout, mirroring, and font support
  • `freeze` — Enforce string freeze; lock source strings before translation begins
  • `qa` — Run the full localization QA cycle before release

If no subcommand is provided, output usage and stop. Verdict: **FAIL** — missing required subcommand.

---

Every `AskUserQuestion` call follows `.claude/docs/automation-modes.md` (collaborative asks always · guided major-only · autonomous logs and proceeds; `automation_always_ask` categories always prompt).

Phase 2A: Scan Mode

Search the **code root** (resolve per `.claude/docs/code-root-resolution.md`) for hardcoded user-facing strings. **If the code root is unresolved, report `NOT ASSESSED — code root unresolved` rather than zero hits.** Zero hits from an unresolved root reads as "nothing to localize", which is the failure this guards:

  • String literals in UI code not wrapped in a localization function (`tr()`, `Tr()`, `NSLocalizedString`, `GetText`, etc.)
  • Concatenated strings that should be parameterized
  • Strings with positional placeholders (`%s`, `%d`) instead of named ones (`{playerName}`)
  • Format strings that mix locale-sensitive data (numbers, dates, currencies) without locale-aware formatting

Search for localization anti-patterns:

  • Date/time formatting not using locale-aware functions
  • Number formatting without locale awareness (`1,000` vs `1.000`)
  • Text embedded in images or textures (flag asset files in `assets/`)
  • Strings that assume left-to-right text direction (positional layout, string assembly order)
  • Gender/plurality assumptions baked into string logic (must use plural forms or gender tokens)
  • Hardcoded punctuation (e.g. `"You won!"` — exclamation styles vary by locale)

Report all findings with file paths and line numbers. This mode is read-only — no files are written.

---

Phase 2B: Extract Mode

  • Scan all source files for localized string references
  • Compare against the existing string table in `assets/data/strings/`
  • Generate new entries for strings not yet keyed
  • Suggest key names following the convention: `[category].[subcategory].[description]`
  • Example: `ui.hud.health_label`, `dialogue.npc.merchant.greeting`, `menu.main.play_button`
  • Each new entry must include a `context` field — a translator comment explaining:
  • Where it appears (which screen, which scene)
  • Maximum character length
  • Any placeholder meaning (`{playerName}` = the player's chosen display name)
  • Gender/plurality context if applicable

Output a diff of new strings to add to the string table.

Present the diff to the user. Ask: "May I write these new entries to `assets/data/strings/strings-en.json`?"

If yes, write only the diff (new entries), not a full replacement. Verdict: **COMPLETE** — strings extracted and written.

---

Phase 2C: Validate Mode

Read all string table files in `assets/data/strings/`. For each locale, check:

  • **Completeness** — key exists in source (en) but no translation for this locale
  • **Placeholder mismatches** — source has `{name}` but translation omits it or adds extras
  • **String length violations** — translation exceeds the character limit recorded in the source `context` field
  • **Plural form count** — locale requires N plural forms; translation provides fewer
  • **Orphaned keys** — translation exists but nothing in the code root references the key
  • **Stale translations** — source string changed after translation was written (flag for re-translation)
  • **Encoding** — non-ASCII characters present and font atlas supports them (flag if uncertain)

Report validation results grouped by locale and severity. This mode is read-only — no files are written.

---

Phase 2D: Status Mode

  • Count total localizable strings in the source table
  • Per locale: count translated, untranslated, stale (source changed since translation)
  • Generate a coverage matrix:
## Localization Status
Generated: [Date]
String freeze: [Active / Not yet called / Lifted]

| Locale | Total | Translated | Missing | Stale | Coverage |
|--------|-------|-----------|---------|-------|----------|
| en (source) | [N] | [N] | [N] | [N] | [N]% |
| [locale] | [N] | [N] | [N] | [N] | [X]% |

> **Every cell above is a count you must take from the string table — including
> the source row.** Do not pre-fill the source locale as `100%`: that asserts a
> result before counting, and on a project with no `assets/data/strings/` it
> produces a coverage report for a table that does not exist. If the string table
> is abs
Read more
@donchitos
Ships withclaude-code-game-studios

Turn Claude Code into a full game dev studio — 49 AI agents, 72 workflow skills, and a complete coordination system mirroring real studio hierarchy.

39k78 skills49 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
39.0k
Star history of Donchitos/Claude-Code-Game-Studios on GitHub, a chart by star-history.com

Other skills on claude-code-game-studios.

More skills from other plugins.

1password

1password

Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.

clawdis2w393k
@steipete@steipeteInstall Skill
computer-use

computer-use

Drives the GUI of a visible local app window through `orca computer`: accessibility tree, clicks, typing, menus, dialogs, and…

orca2w111k
@stablyai@stablyaiInstall Skill
agentmail

agentmail

Use your assigned AgentMail inbox to read email tasks, explicitly send or reply, and check delivery. Provided automatically by…

paperclip2w109k
@paperclipai@paperclipaiInstall Skill
adr-create

adr-create

Create a new Architecture Decision Record with sequential numbering and AgentDB registration

@ruvnet@ruvnetInstall Skill

Questions about localize.

Which coding agents can use localize?
localize installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.