i18n-architecture — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited i18n-architecture (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Any task involving multi-language support, locale handling, message catalogs, RTL layouts, number/date formatting, or translation infrastructure.
Why ICU:
Examples:
{count, plural,
=0 {No items}
one {# item}
other {# items}
}
{gender, select,
male {He liked your post}
female {She liked your post}
other {They liked your post}
}Critical rule: NEVER concatenate strings for messages.
"Hello " + name + ", you have " + count + " messages""Hello {name}, you have {count, plural, one {# message} other {# messages}}"One file per locale, namespaced by feature:
locales/
en/
common.json
auth.json
dashboard.json
fr/
common.json
auth.json
dashboard.jsonRules:
auth.loginButton not "Log in").Lazy-load per route/namespace:
Implementation:
// Load only when needed
const messages = await import(`./locales/${locale}/${namespace}.json`);Fallback chain:
Priority order:
Rules:
CSS logical properties (mandatory):
margin-inline-start not margin-left.padding-inline-end not padding-right.inset-inline-start not left.border-inline-start not border-left.HTML:
dir="rtl" on the <html> element based on locale.dir="auto" on user-generated content.Icons and images:
Always use Intl APIs:
// Numbers
new Intl.NumberFormat(locale, { style: 'currency', currency: 'USD' }).format(amount);
// Dates
new Intl.DateTimeFormat(locale, { dateStyle: 'long', timeStyle: 'short' }).format(date);
// Relative time
new Intl.RelativeTimeFormat(locale, { numeric: 'auto' }).format(-1, 'day');Rules:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.