Chatbox i18n Translator
chatboxai/chatbox
Translates new or changed i18n keys from a Chatbox Pro diff, staged changes or a commit range, writing the locale JSON files directly with a built-in glossary.
Review pending AIRI translations on Crowdin in a batch, then sync them into the repository.
$ npx skills add moeru-ai/airi --skill enforce-rules-for-i18n -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install moeru-ai/airi enforce-rules-for-i18n --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/moeru-ai/airi.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/enforce-rules-for-i18n .claude/skills/enforce-rules-for-i18n && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "enforce-rules-for-i18n" agent skill from https://github.com/moeru-ai/airi/tree/main/.agents/skills/enforce-rules-for-i18n into .claude/skills/enforce-rules-for-i18n/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "enforce-rules-for-i18n", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/moeru-ai/airi/tree/main/.agents/skills/enforce-rules-for-i18nType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add moeru-ai/airi --skill enforce-rules-for-i18n -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install moeru-ai/airi enforce-rules-for-i18n --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/moeru-ai/airi.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/enforce-rules-for-i18n .agents/skills/enforce-rules-for-i18n && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "enforce-rules-for-i18n" agent skill from https://github.com/moeru-ai/airi/tree/main/.agents/skills/enforce-rules-for-i18n into .agents/skills/enforce-rules-for-i18n/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "enforce-rules-for-i18n", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add moeru-ai/airi --skill enforce-rules-for-i18n -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install moeru-ai/airi enforce-rules-for-i18n --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/moeru-ai/airi.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/enforce-rules-for-i18n .cursor/skills/enforce-rules-for-i18n && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "enforce-rules-for-i18n" agent skill from https://github.com/moeru-ai/airi/tree/main/.agents/skills/enforce-rules-for-i18n into .cursor/skills/enforce-rules-for-i18n/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "enforce-rules-for-i18n", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/moeru-ai/airi.git --path .agents/skills/enforce-rules-for-i18n--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add moeru-ai/airi --skill enforce-rules-for-i18n -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install moeru-ai/airi enforce-rules-for-i18n --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/moeru-ai/airi.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/enforce-rules-for-i18n .gemini/skills/enforce-rules-for-i18n && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "enforce-rules-for-i18n" agent skill from https://github.com/moeru-ai/airi/tree/main/.agents/skills/enforce-rules-for-i18n into .gemini/skills/enforce-rules-for-i18n/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "enforce-rules-for-i18n", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install moeru-ai/airi enforce-rules-for-i18nInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add moeru-ai/airi --skill enforce-rules-for-i18n -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/moeru-ai/airi.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/enforce-rules-for-i18n .github/skills/enforce-rules-for-i18n && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "enforce-rules-for-i18n" agent skill from https://github.com/moeru-ai/airi/tree/main/.agents/skills/enforce-rules-for-i18n into .github/skills/enforce-rules-for-i18n/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "enforce-rules-for-i18n", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add moeru-ai/airi --skill enforce-rules-for-i18n -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install moeru-ai/airi enforce-rules-for-i18n --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/moeru-ai/airi.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/enforce-rules-for-i18n .opencode/skills/enforce-rules-for-i18n && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "enforce-rules-for-i18n" agent skill from https://github.com/moeru-ai/airi/tree/main/.agents/skills/enforce-rules-for-i18n into .opencode/skills/enforce-rules-for-i18n/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "enforce-rules-for-i18n", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
enforce-rules-for-i18nReview pending AIRI translations on Crowdin in a batch, then sync them into the repository.
Enforce Rules For I18n is an agent skill from moeru-ai/airi. Review pending AIRI translations on Crowdin in a batch, then sync them into the repository. Use when Crowdin has translations that wait for approval, when translations have not reached the repository for days, or when the user pastes output of pending-review.mjs.
Its SKILL.md is about 1.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including scripts (for example `agents/openai.yaml`).
It sits in Frontend & Design, covering Translation and Internationalization. The repository describes itself as: 💖🧸 Self hosted, you-owned Grok Companion, a container of souls of waifu, cyber livings to bring them into our worlds, wishing to achieve Neuro-sama's altitude. Capable of… The licence is MIT.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit ec682e2. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 2 files in scripts/ (JavaScript), which the agent can run.
Shell commands in SKILL.md call:
nodepnpmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use pnpm, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
CROWDIN_PERSONAL_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Enforce Rules For I18n loads about 1.5k tokens when it runs. Until then it costs about 72 tokens; SKILL.md has 744 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from moeru-ai/airi at commit ec682e2, republished under its MIT licence (© moeru-ai). 744 words, ~1,453 tokens.
.claude/skills/enforce-rules-for-i18n/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.This skill reviews the translations that wait for approval on the AIRI Crowdin project. An agent judges each translation. A person applies the result with their own token.
pnpm install in this repository. The check script imports the placeholder rule from .github/scripts/check-locales.ts.816610, the id in crowdin.yml of moeru-ai/airi. To use another project, set CROWDIN_PROJECT_ID.read -rs "CROWDIN_PERSONAL_TOKEN?Crowdin token: " && export CROWDIN_PERSONAL_TOKENThe command above is for zsh. In bash, use read -rsp "Crowdin token: " CROWDIN_PERSONAL_TOKEN && export CROWDIN_PERSONAL_TOKEN.
The scripts read and write their files in the current directory. Run them from a work directory outside the repository, so the review files stay out of Git. <repo> is the root of this repository.
Check (person runs). This step is read-only.
node <repo>/.agents/skills/enforce-rules-for-i18n/scripts/pending-review.mjsIt prints a table for each language. It writes crowdin-pending-review.json with all pending translations. It writes crowdin-pending-review.md with the flagged ones only: placeholder mismatch, same as English, and bad whitespace.
If the table shows 0 pending, there is nothing to review. Go to step 5.
Review (agent). Read crowdin-pending-review.json and judge every entry with the policy below. Write crowdin-review-decisions.json:
{
"approve": [{ "languageId": "es-ES", "file": "stage.yaml", "key": "a.b", "text": "..." }],
"reject": [{ "languageId": "es-ES", "file": "stage.yaml", "key": "a.b", "text": "...", "reason": "..." }]
}Generate this file from the JSON with a script. Do not type file, key, or text by hand. The apply script matches the exact text.
Dry run (person runs).
node <repo>/.agents/skills/enforce-rules-for-i18n/scripts/apply-review.mjsThe output must end with All matched. If one entry does not match, the script stops and changes nothing.
Apply (person runs).
node <repo>/.agents/skills/enforce-rules-for-i18n/scripts/apply-review.mjs --approve --delete-rejectedBefore it deletes, the script writes a backup to crowdin-rejected-backup-<timestamp>.json.
Then run step 1 again. A deleted translation can uncover an older suggestion for the same string. Review the new entries until pending is 0.
Sync. The crowdin-cron-sync.yml workflow exports approved translations once a day. To sync now, run it manually from GitHub Actions. It updates the chore(i18n): update translations pull request.
Reject a translation when:
OK, Error, or a brand name. AIRI shows the English text for a string without a translation. Crowdin does not import a translation that is the same as the source.{name}, {0}, or @:key.\n where the English text has a line break.Approve a translation when its meaning is correct, even if it has small style problems. List those problems in the report, so a translator can fix them on Crowdin. Do not reject a translation only for style.
Compare terms with the existing translations in packages/i18n/src/locales/<locale>/. Some Crowdin language ids differ from the folder names:
| Crowdin | Folder |
|---|---|
es-ES | es |
zh-CN | zh-Hans |
zh-TW | zh-Hant |
Language notes:
The report to the person has three parts: the counts, a table of rejected translations with the reasons, and a short list of approved translations that have style problems.
<other key>, whose English has no word in common" is a heuristic. It checks only strings that changed against main. After the pull request merges, the warning does not come back. Do not add an allowlist.main has the wrong translation, fix that key on Crowdin.error: 'Error:', Crowdin adds quotes to the translation too. The value does not change.The batch scripts handle pending translations only. When an approved translation is wrong, write a small script for that string:
--apply, print all translations of the string in that language and their approval state.--apply, write a backup, add and approve the correct text, and delete the other translations of the string in that language.© moeru-ai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 3 other files (scripts) in .agents/skills/enforce-rules-for-i18n of moeru-ai/airi.
Open the folder on GitHubat commit ec682e2
Enforce Rules For I18n next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Enforce Rules For I18n this skillmoeru-ai/airi | 50k | — | ~1.5k | Automated safety check: Pass | MIT | |
| Chatbox i18n Translatorchatboxai/chatbox | 42k | — | ~508 | Automated safety check: Pass | GPL-3.0 | |
| Translation ReviewDevolutions/UniGetUI | 26k | — | ~1.3k | Automated safety check: Pass | MIT | |
| Lingui Best PracticesB0und/WikiSpeedrun | 133 | 2 repos | ~4.2k | Automated safety check: Pass | MIT | |
| Ok Script I18nAliceJump/ok-end-field | 555 | — | ~828 | Automated safety check: Pass | AGPL-3.0 | |
| I18next Localizationi18next/i18next-cli | 241 | — | ~1.6k | Automated safety check: Pass | MIT |
chatboxai/chatbox
Translates new or changed i18n keys from a Chatbox Pro diff, staged changes or a commit range, writing the locale JSON files directly with a built-in glossary.
Devolutions/UniGetUI
Reviews UniGetUI .json language files for localization quality, detects parity issues, English-equal entries, wrong-script content, and cross-language outliers, then generates a dataset for…
B0und/WikiSpeedrun
Implement internationalization with Lingui in React and JavaScript applications.
AliceJump/ok-end-field
Maintain gettext translations for ok-script task UI and runtime messages.
i18next/i18next-cli
Takes an app from hardcoded strings to a localized, continuously translated one with i18next (Locize optional): stack detection, config, wrapping strings in t(), key extraction, Locize sync, and AI…
ckanner/jta
Translate JSON i18n files to multiple languages with AI-powered quality optimization.
moeru-ai/airi
Write or rewrite technical text with the rules of ASD-STE100 Simplified Technical English so it is clear, unambiguous, and free of AI slop.
moeru-ai/airi
Upload a local image or file to GitHub's user-attachments storage and return a URL suitable for issue, pull request, discussion, or comment Markdown.
moeru-ai/airi
Prepare and create an AIRI pull request with verifiable change context, architecture evidence, and required visual evidence.
moeru-ai/airi
Test AIRI display-model imports with agent-browser across stage-tamagotchi Electron, stage-web, and stage-pocket mobile web layouts.
moeru-ai/airi
A skill your agent uses when Codex needs to inspect, debug, or automate an Electron app through agent-browser and Chrome DevTools Protocol, especially when the app has multiple BrowserWindow…
moeru-ai/airi
Read and analyze AIRI IO traces that Tamagotchi saved to local files.
Categories
Review pending AIRI translations on Crowdin in a batch, then sync them into the repository. Enforce Rules For I18n is an agent skill from moeru-ai/airi. Review pending AIRI translations on Crowdin in a batch, then sync them into the repository.
Enforce Rules For I18n fits situations like: crowdin has translations that wait for approval; translations have not reached the repository for days; the user pastes output of pending-review.mjs.
Run `npx skills add moeru-ai/airi --skill enforce-rules-for-i18n -a claude-code`. Or copy the skill folder (.agents/skills/enforce-rules-for-i18n in moeru-ai/airi) into .claude/skills/enforce-rules-for-i18n in your project. Claude Code loads it when a task matches its description.
Run `npx skills add moeru-ai/airi --skill enforce-rules-for-i18n -a codex`. Or copy the skill folder (.agents/skills/enforce-rules-for-i18n in moeru-ai/airi) into .agents/skills/enforce-rules-for-i18n in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add moeru-ai/airi --skill enforce-rules-for-i18n -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/enforce-rules-for-i18n, .gemini/skills/enforce-rules-for-i18n, .github/skills/enforce-rules-for-i18n and .opencode/skills/enforce-rules-for-i18n in your project.
Going by SKILL.md and its folder, Enforce Rules For I18n needs JavaScript for the scripts in its folder, the command-line tools its instructions call (node and pnpm) and credentials named CROWDIN_PERSONAL_TOKEN. Our summary lists: Node.js; A credential in CROWDIN_PERSONAL_TOKEN.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Enforce Rules For I18n is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.5k tokens (SKILL.md is roughly 5.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Enforce Rules For I18n: Chatbox i18n Translator (chatboxai/chatbox, 42k stars), Translation Review (Devolutions/UniGetUI, 26k stars), Lingui Best Practices (B0und/WikiSpeedrun, 133 stars) and Ok Script I18n (AliceJump/ok-end-field, 555 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
moeru-ai (a GitHub organization) maintains it in moeru-ai/airi, which has 50,267 GitHub stars. The repository holds 24 skills in this directory. The repository was last updated on October 11, 2026.
Source: moeru-ai/airi on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.