Mmcp.market

localize skill

by Donchitos·Donchitos/Claude-Code-Game-Studios·25k stars·MIT

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

A100/100content scan

Is the localize skill safe?

Clean: nothing in its files matched our rules. We read 1 file in the folder on 2026-09-28.

No findings.

Install the localize skill

A skill is a folder. Copy it into your agent's skills folder and the agent loads it when the task matches its description.

git clone --depth 1 https://github.com/Donchitos/Claude-Code-Game-Studios.git /tmp/Claude-Code-Game-Studios
mkdir -p ~/.claude/skills
cp -r /tmp/Claude-Code-Game-Studios/.claude/skills/localize ~/.claude/skills/localize
available in every project

In the Claude apps, zip the folder and upload it from the Skills settings. The folder on GitHub

The instructions your agent would load

SKILL.md as published, without the frontmatter. Read it on GitHub

!bash "${CLAUDESKILLDIR}/../../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; automationalwaysask 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.healthlabel, dialogue.npc.merchant.greeting, menu.main.playbutton
  • 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]% |

> **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 absent, the whole status output is
> **`NOT ASSESSED — no string table found`**, not a matrix of zeros with a
> confident source row.
| [locale] | [N] | [N] | [N] | [N] | [X]% |

### Issues
- [N] hardcoded strings found in source code (run /localize scan)
- [N] strings exceeding character limits
- [N] placeholder mismatches
- [N] orphaned keys
- [N] strings added after freeze was called (freeze violations)

This mode is read-only — no files are written.

Phase 2E: Brief Mode

Generate a translator context briefing document. This document is sent to the external translation team or localisation vendor alongside the string table export.

Read:

  • design/gdd/ — extract game genre, tone, setting, character names
  • assets/data/strings/strings-en.json — the source string table
  • Any existing lore or narrative documents in design/narrative/

Generate production/localization/translator-brief-[locale]-[date].md:

# Translator Brief — [Game Name] — [Locale]

## Game Overview
[2-3 paragraph summary of the game, genre, tone, and audience]

## Tone and Voice
- **Overall tone**: [e.g., "Darkly comic, not slapstick — think Terry Pratchett, not Looney Tunes"]
- **Player address**: [e.g., "Second person, informal. Never formal 'vous' — always 'tu' for French"]
- **Profanity policy**: [e.g., "Mild — PG-13 equivalent. Match intensity to source, do not soften or escalate"]
- **Humour**: [e.g., "Wordplay exists — if a pun cannot translate, invent an equivalent local joke; do not translate literally"]

## Character Glossary
| Name | Role | Personality | Notes |
|------|------|-------------|-------|
| [Name] | [Role] | [Personality] | [Do not translate / transliterate as X] |

## World Glossary
| Term | Meaning | Notes |
|------|---------|-------|
| [Term] | [What it means] | [Keep in English / translate as X] |

## Do Not Translate List
The following must appear verbatim in all locales:
- [Game name]
- [UI terms that match in-engine labels]
- [Brand or trademark names]

## Placeholder Reference
| Placeholder | What it represents | Example |
|-------------|-------------------|---------|
| `{playerName}` 

Ask: "May I write this translator brief to production/localization/translator-brief-[locale]-[date].md?"

Phase 2F: Cultural Review Mode

Spawn localization-lead via Agent. Ask them to audit the following for cultural sensitivity across the target locales (read from assets/data/strings/ and assets/):

Content Areas to Review

Symbols and gestures

  • Thumbs up, OK hand, peace sign — meanings vary by region
  • Religious or spiritual symbols in art, UI, or audio
  • National flags, map representations, disputed territories

Colours

  • White (mourning in some Asian cultures), green (political associations in some regions), red (luck vs danger)
  • Alert/warning colours that conflict with cultural associations

Numbers

  • 4 (death in Japanese/Chinese), 13, 666 — flag use in UI (room numbers, item counts, prices)

Humour and idioms

  • Idioms that translate as offensive in other locales
  • Toilet/bodily humour that is inappropriate in some markets (notably Japan, Germany, Middle East)
  • Dark humour around topics that are culturally sensitive in specific regions

Violence and content ratings

  • Content that would require ratings changes in DE (Germany), AU (Australia), CN (China), or AE (UAE)
  • Blood colour, gore level, drug references — flag all for region-specific asset variants if needed

Names and representations

  • Character names that are offensive, profane, or carry negative meaning in target locales
  • Stereotyped representation of nationalities, religions, or ethnic groups

Present findings as a table:

BLOCKING = must fix before shipping that locale. ADVISORY = recommend change. NOTE = informational only.

Ask: "May I write this cultural review report to production/localization/cultural-review-[date].md?"

Phase 2G: VO Pipeline Mode

Manage the voice-over localization process. Determine the sub-task from the argument:

  • vo-pipeline scan — identify all dialogue lines that require VO recording
  • vo-pipeline script — generate recording scripts with director notes
  • vo-pipeline validate — check that all recorded VO files are present and correctly named
  • vo-pipeline integrate — verify VO files are correctly referenced in code/assets

VO Pipeline: Scan

Read assets/data/strings/ and design/narrative/. Identify:

  • All dialogue lines (keys matching dialogue.*) with source text
  • Lines already recorded (audio file exists in assets/audio/vo/)
  • Lines not yet recorded

Output a recording manifest:

## VO Recording Manifest — [Date]

| Key | Character | Source Line | Status |
|-----|-----------|-------------|--------|
| dialogue.npc.merchant.greeting | Merchant | "Welcome, traveller." | Recorded |
| dialogue.npc.merchant.haggle | Merchant | "That's my final offer." | Needs recording |

VO Pipeline: Script

More skills from Donchitos/Claude-Code-Game-Studios

  • AadoptBrownfield audit — do existing artifacts actually work? Numbered migration plan. Unlike /project-stage-detect, checks compliance not existence.
  • Aarchitecture-decisionCreate an ADR documenting a technical decision: context, alternatives considered, consequences.
  • Aarchitecture-reviewTraceability matrix mapping GDD requirements to ADRs. Finds gaps, cross-ADR conflicts, engine compatibility. PASS/CONCERNS/NOT ASSESSED/FAIL.
  • Aart-bibleAuthor the Art Bible — visual identity gating asset production. Run before /map-systems.
  • Aasset-auditAudit assets against naming conventions, file size budgets, format standards. Finds orphaned assets, missing references.
  • Aasset-specPer-asset visual specs plus AI generation prompts from GDDs and character profiles. After the art bible.
  • Abalance-checkFind balance outliers, broken progressions, degenerate strategies, economy imbalances in formulas and data. 'Check game balance'.
  • AbrainstormGuided concept ideation using professional studio techniques, player psychology, creative exploration.
  • Abug-reportStructured bug report from a description, or analyze code for potential bugs. Reproduction steps, severity.
  • Abug-triageRe-evaluate open bugs — priority vs severity, assign to sprints, surface systemic trends. Run when the count grows.
  • AchangelogAuto-generate a changelog from git commits and sprint data. Internal and player-facing versions.
  • Acode-reviewArchitectural code review — coding standards, SOLID, testability, performance concerns.

All agent skills → · MCP servers