Agent skill

Enforce Rules For I18n

by moeru-ai in moeru-ai/airi

Review pending AIRI translations on Crowdin in a batch, then sync them into the repository.

MITAuto-check passedFrontend & Design

Install Enforce Rules For I18n

skills CLI
$ npx skills add moeru-ai/airi --skill enforce-rules-for-i18n -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install moeru-ai/airi enforce-rules-for-i18n --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ 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-src

Use ~/.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/

Facts

Skill name
enforce-rules-for-i18n
GitHub stars
50k
Token cost
~1.5k tokens
SKILL.md length
744 words
Files
4 (incl. scripts)
Skills in repo
24
Repo updated
First seen
Licence
MIT

At a glance

Review pending AIRI translations on Crowdin in a batch, then sync them into the repository.

  • Works in 5 steps: Check (person runs). This step is… → Review (agent). Read… → Dry run (person runs). → …
  • Crowdin has translations that wait for approval
  • SKILL.md covers Requirements, Token rules, Workflow and Review policy, plus 2 more sections
  • Runs JavaScript scripts from its folder; calls node and pnpm; needs CROWDIN_PERSONAL_TOKEN

What it does

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.

When your agent uses it

  • Crowdin has translations that wait for approval
  • Translations have not reached the repository for days
  • The user pastes output of pending-review.mjs

Example prompts

  • “/enforce-rules-for-i18n”

Requirements

  • Node.js
  • A credential in CROWDIN_PERSONAL_TOKEN

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Check (person runs). This step is read-only.
  2. Review (agent). Read crowdin-pending-review.json and judge every entry with the policy below. Write crowdin-review-decisions.json
  3. Dry run (person runs).
  4. Apply (person runs).
  5. Sync. The crowdin-cron-sync.yml workflow exports approved translations once a day. To sync now, run it manually from GitHub Actions. It…

What it can do on your machine

Read from SKILL.md and the folder at commit ec682e2. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Ships 2 files in scripts/ (JavaScript), which the agent can run.

    Shell commands in SKILL.md call:

    • node
    • pnpm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    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.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • CROWDIN_PERSONAL_TOKEN

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

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.

Always · name and description, kept in context so the agent knows when to use it
~72
When it runs · the whole SKILL.md, loaded when a task matches
~1.5k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from moeru-ai/airi at commit ec682e2, republished under its MIT licence (© moeru-ai). 744 words, ~1,453 tokens.

Download SKILL.mdSave it as .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.
name
enforce-rules-for-i18n
description
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.

Crowdin batch review for AIRI

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.

Requirements

  • Node.js 24 or later, and pnpm install in this repository. The check script imports the placeholder rule from .github/scripts/check-locales.ts.
  • A Crowdin personal access token with proofreader or manager access to the AIRI project. Create it in Crowdin: Account Settings > API > Personal Access Tokens.
  • The project id defaults to 816610, the id in crowdin.yml of moeru-ai/airi. To use another project, set CROWDIN_PROJECT_ID.

Token rules

  • The person sets the token in their own terminal. The agent never asks for, reads, prints, or passes the token.
  • Set the token for the current terminal only. Do not write it into a shell profile.
bash
read -rs "CROWDIN_PERSONAL_TOKEN?Crowdin token: " && export CROWDIN_PERSONAL_TOKEN

The command above is for zsh. In bash, use read -rsp "Crowdin token: " CROWDIN_PERSONAL_TOKEN && export CROWDIN_PERSONAL_TOKEN.

Workflow

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.

  1. Check (person runs). This step is read-only.

    bash
    node <repo>/.agents/skills/enforce-rules-for-i18n/scripts/pending-review.mjs

    It 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.

  2. Review (agent). Read crowdin-pending-review.json and judge every entry with the policy below. Write crowdin-review-decisions.json:

    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.

  3. Dry run (person runs).

    bash
    node <repo>/.agents/skills/enforce-rules-for-i18n/scripts/apply-review.mjs

    The output must end with All matched. If one entry does not match, the script stops and changes nothing.

  4. Apply (person runs).

    bash
    node <repo>/.agents/skills/enforce-rules-for-i18n/scripts/apply-review.mjs --approve --delete-rejected

    Before 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.

  5. 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.

Show full SKILL.md (375 more words)Show less

Review policy

Reject a translation when:

  • It is the same as the English text, even when the word is correct in that language, for example 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.
  • It has the wrong meaning or the wrong part of speech, for example a noun label translated as a verb phrase.
  • Its placeholders differ from the English text: {name}, {0}, or @:key.
  • It contains a literal \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:

CrowdinFolder
es-ESes
zh-CNzh-Hans
zh-TWzh-Hant

Language notes:

  • Spanish uses "tú", not "usted". Spanish titles use sentence case.

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.

Warnings in the sync pull request

  • "Same translation as <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.
  • Synonyms cause false positives, for example "Settings" and "Configuration". If the older key on main has the wrong translation, fix that key on Crowdin.
  • New quotes around a translation come from Crowdin. When the English source string has quotes, for example error: 'Error:', Crowdin adds quotes to the translation too. The value does not change.

Fixing one approved translation

The batch scripts handle pending translations only. When an approved translation is wrong, write a small script for that string:

  1. Find the string by its file and key.
  2. Without --apply, print all translations of the string in that language and their approval state.
  3. With --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

Files

SKILL.md and 3 other files (scripts) in .agents/skills/enforce-rules-for-i18n of moeru-ai/airi.

  • SKILL.md
  • agents/openai.yaml
  • scripts/apply-review.mjs
  • scripts/pending-review.mjs

Open the folder on GitHubat commit ec682e2

Compare with similar skills

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.

Enforce Rules For I18n compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Enforce Rules For I18n this skillmoeru-ai/airi50k—~1.5kAutomated safety check: PassMIT
Chatbox i18n Translatorchatboxai/chatbox42k—~508Automated safety check: PassGPL-3.0
Translation ReviewDevolutions/UniGetUI26k—~1.3kAutomated safety check: PassMIT
Lingui Best PracticesB0und/WikiSpeedrun1332 repos~4.2kAutomated safety check: PassMIT
Ok Script I18nAliceJump/ok-end-field555—~828Automated safety check: PassAGPL-3.0
I18next Localizationi18next/i18next-cli241—~1.6kAutomated safety check: PassMIT

Similar skills

  • 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.

    42k GitHub stars~508 tokensUpdated 16 days ago
    Frontend & DesignAuto-check passed
  • Translation Review

    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…

    26k GitHub stars~1.3k tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Lingui Best Practices

    B0und/WikiSpeedrun

    Implement internationalization with Lingui in React and JavaScript applications.

    133 GitHub starsUsed in 2 repos~4.2k tokens
    Frontend & DesignAuto-check passed
  • Ok Script I18n

    AliceJump/ok-end-field

    Maintain gettext translations for ok-script task UI and runtime messages.

    555 GitHub stars~828 tokensUpdated today
    Frontend & DesignAuto-check passed
  • I18next Localization

    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…

    241 GitHub stars~1.6k tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Jta

    ckanner/jta

    Translate JSON i18n files to multiple languages with AI-powered quality optimization.

    133 GitHub stars~2.4k tokensUpdated 11 mo ago
    Frontend & DesignAuto-check: notes

More from moeru-ai/airi

All 24 skills in this repo
  • Simple English

    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.

    50k GitHub starsUsed in 2 repos~4.6k tokens
    Auto-check passed
  • 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.

    50k GitHub stars~554 tokensUpdated today
    Auto-check passed
  • Create PR

    moeru-ai/airi

    Prepare and create an AIRI pull request with verifiable change context, architecture evidence, and required visual evidence.

    50k GitHub stars~2.3k tokensUpdated today
    Auto-check passed
  • Test AIRI display-model imports with agent-browser across stage-tamagotchi Electron, stage-web, and stage-pocket mobile web layouts.

    50k GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • 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…

    50k GitHub stars~3.1k tokensUpdated today
    Auto-check passed
  • Analyze Io Traces

    moeru-ai/airi

    Read and analyze AIRI IO traces that Tamagotchi saved to local files.

    50k GitHub stars~542 tokensUpdated today
    Auto-check passed

Questions about Enforce Rules For I18n

What does Enforce Rules For I18n do?

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.

When should I use Enforce Rules For I18n?

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.

How do I install Enforce Rules For I18n in Claude Code?

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.

How do I install Enforce Rules For I18n in Codex?

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.

Can I use Enforce Rules For I18n in Cursor, Gemini CLI or GitHub Copilot?

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.

What does Enforce Rules For I18n need to run?

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.

Does Enforce Rules For I18n access the network?

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.

Is Enforce Rules For I18n safe to install?

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.

What licence does Enforce Rules For I18n use?

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.

How many tokens does Enforce Rules For I18n use?

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.

What are the alternatives to Enforce Rules For I18n?

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.

Who maintains Enforce Rules For I18n?

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.