Genshin Text
SkillDev toolsApply when showing any of Genshin Impact's own words in the app, a Genshin package or the persona plugin, adding a GameTextKey, choosing a reader's game language, or touching packages/genshin-text, scripts/src/services/genshinText, or the persona's src/generated copy. Esposter's game text, the game's strings in its fifteen languages, referenced by the game's own text id and never translated by hand, generated from a dump kept outside the repository.
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; ahel provides instructions and does not run this skill.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the Genshin Text skill
What this skill tells your AI
The instructions your AI receives, as published by esposter/esposter in .agents/skills/genshin-text/SKILL.md and read by ahel’s review.
How it works, from the dump to a lookup, is apps/web/content/docs/genshin/game-text.md; this skill is the rules a change that shows the game's words follows.
Settled — do not re-propose
- Translating a string the game already says, or an i18n library for it. The game ships its own translation in fifteen languages; a consumer's own words go in its own typed module — the persona's are
apps/web/content/docs/infra/claude-interface/persona-plugin.md's, which also records why a keyed library lost to a typed function per string. - Shipping a whole text map, or loading one at run time. It runs to tens of megabytes per language, and neither a browser nor a stranger's plugin install has the dump; the referenced subset is the only shippable shape.
genshin-textas a dependency of the persona plugin. The plugin's frozen npm lockfile would disagree with every release that moves the range; the modules it runs are a generated copy (apps/web/content/docs/infra/claude-interface/persona-plugin.md).- A
t(key)function over the lookup. The lookup is indexing a loaded chunk,gameText[GameTextKey.X], and syntax is never wrapped (theover-engineeringskill,references/syntax-extraction.md).
Rules
- A word the game says is
gameText[GameTextKey.X], never a literal — search the text map withfindbefore deciding the game does not say it: nearly all of what the opening shows before the client loads is there, some of it worded per platform or per gender. What the account kit shows as the player signs in is in the kit's own strings, whichwritereads beside the text map by the kit's key. - A label only a screen reader says is a word too: an
aria-labeland a glyph button'slabelare read from the game text like any drawn word, so a reader hears their own language; a brand's name or a number stays as it is. - A screen that shows a word takes
gameTextas a required prop from the host that resolved the language, never by injection and never with English as a default, so a host that forgets it fails to compile; a fixture passesENGLISH_GAME_TEXT. - A key's value is the game's own id — the manual text map's name for an interface string, else the raw hash — found with
pnpm -C scripts genshin:text find "<pattern>"and written withpnpm -C scripts genshin:text write; a key is one line inpackages/genshin-text/src/models/GameTextKey.tsand nothing else lists it. src/generated/is the writer's alone, in both packages. Its output is never formatted (oxfmt.config.tsignores**/generated/**), andscripts/src/services/genshinText/getPersonaModuleSource.test.tsfails the day the persona's copy and its source disagree, so a change to a copied module is followed by awrite.- A module the persona copies imports only from its own package, since the copy re-aims
#src/and the plugin's install carries nothing else;matchGameLanguagestays out ofPersonaCopiedModulesfor that reason (scripts/src/services/genshinText/constants.ts). - A reader's language comes from
matchGameLanguage, and a language's tag fromGameLanguageTagMap— never a locale table of a consumer's own. - A language is never a location. Nothing but text is chosen by the reader's language: whether a third party works for them is asked of their network, never guessed from the language they read.
- A persona string the game already says comes from the game text, and a localization module holds only phrasing the game never says.
Signals
- GitHub stars
- 23
- Forks
- 3
- Last commit
- Oct 2026
Advanced
- Item type
- skill
- Key
genshin-text- Source
- github.com/esposter/esposter