Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add mgiovani/cc-arsenal --skill i18n-checkgit clone --depth 1 https://github.com/mgiovani/cc-arsenalWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/mgiovani/cc-arsenal/i18n-check)<a href="https://agentmods.dev/skills/mgiovani/cc-arsenal/i18n-check"><img src="https://agentmods.dev/badge/skills/mgiovani/cc-arsenal/i18n-check/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/mgiovani/cc-arsenal/i18n-check"><img src="https://agentmods.dev/badge/skills/mgiovani/cc-arsenal/i18n-check.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00225 | $0.01724 |
| Opus 5 | $0.00112 | $0.00862 |
| Sonnet 5 | $0.00045 | $0.00345 |
| Haiku 4.5 | $0.00022 | $0.00172 |
Grade A, and why
i18n-check scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 10d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 135 lines — stays where its author put it; the contents beside it link to each section on GitHub.
i18n Check
Finds the three ways translations silently rot: a key added to the default locale but never copied to the others (missing), a key copied but never translated (still reads identical to the source), and a key left behind in one locale after being renamed or removed from the default (orphan). Also catches new UI copy that was hardcoded instead of routed through the i18n layer in the first place: the most common way a translation key never gets created.
Step 1: Detect the framework
Look for these signals, in order, and stop at the first match:
| Signal | Framework | Locale file layout |
|---|---|---|
package.json has next-intl; i18n.ts/i18n/request.ts |
next-intl | messages/<locale>.json, nested |
package.json has i18next/react-i18next |
i18next | public/locales/<lang>/<ns>.json or src/locales/<lang>.json, nested |
package.json has react-intl |
react-intl | lang/<locale>.json, flat, or inline defineMessages (no files) |
package.json has vue-i18n |
vue-i18n | src/locales/<lang>.json/.yaml, or <i18n> SFC blocks |
manage.py + locale/<lang>/LC_MESSAGES/*.po |
Django gettext | .po catalogs, source strings live in code |
Gemfile + config/locales/*.yml |
Rails I18n | YAML keyed by locale at the top level |
If two signals match (e.g. a monorepo with a Rails API and a Vue frontend), run this skill once per app, not once for the whole repo: their locale files don't overlap.
Read references/frameworks.md for the exact default-locale detection and the
flatten/diff one-liner for whichever framework you found. Every framework's diff
reduces to the same three sets (missing / untranslated / orphan) even though the file
format differs.
Step 2: Diff every locale against the default
For each non-default locale file, flatten both it and the default locale to key -> value pairs and compute:
- Missing: key exists in the default locale, absent here.
- Untranslated: key exists in both, and the value is byte-identical to the default locale's value.
- Orphan: key exists here, absent from the default locale (usually a rename or deletion that didn't propagate).
What ships with it
4 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 10d ago First seen · 135 lines · 225 tokens per session scan A 489a4dd4c473
i18n-check is a skill published in the GitHub repository mgiovani/cc-arsenal (8 stars, last pushed yesterday), licensed MIT. It adds 225 tokens to every session and 1,724 once invoked, about $0.0011 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
vs-item-onboarding
Match the language of the user's most recent message in every line of prose you write — confirmation prompts, status notes, hand-off summaries, questions, error explanations, and any internal thinking / reasoning / planning output that the host may surface (e.g. blocks, "thinking" panels, scratchpad notes, todo…
format-time
Convert UTC timestamps to the user's timezone before showing them in chat, charts, Telegram, or any user-facing output. Use this helper whenever you would otherwise write a raw strftime("%H:%M") of a UTC datetime in something the user reads.
gitlab
Agent-callable GitLab tools — manage issues and merge requests, review diffs, commit files, run pipelines, and search. Use when the user mentions GitLab or wants to review or merge an MR, commit code, run CI, or manage issues — even if they don't name GitLab explicitly.
alpaca
Agent-callable Alpaca trading tools — place and manage stock, crypto, and options orders, read account balances, positions, and portfolio history, look up assets and market hours, and read watchlists. Use when the user mentions Alpaca or wants to trade or inspect a brokerage account, even if they don't name Alpaca…
dataforseo
Agent-callable DataForSEO tools — Google SERP results, keyword and domain analytics, backlinks, Google Maps business data, on-page audits, and AI-search visibility (LLM answers + brand mentions). Use when the user wants SEO or AI-search data, even if they don't name DataForSEO.
discord
Agent-callable Discord tools — send and manage messages, start threads and forum posts, manage channels, members, and roles, and post via webhooks. Use when the user mentions Discord or wants to post, read, or manage Discord servers, channels, or members, even if they don't name Discord explicitly.