Add, rename, or remove user-facing strings in src/locales. An agent skill from Touch-N-Stars/Touch-N-Stars.

GPL-3.0Auto-check passedFrontend & Design

Install I18n

skills CLI
$ npx skills add Touch-N-Stars/Touch-N-Stars --skill i18n -a claude-code

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

GitHub CLI
$ gh skill install Touch-N-Stars/Touch-N-Stars 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/Touch-N-Stars/Touch-N-Stars.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/i18n .claude/skills/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
i18n
GitHub stars
124
Token cost
~1.1k tokens
SKILL.md length
562 words
Files
1
Skills in repo
7
Repo updated
First seen
Licence
GPL-3.0

At a glance

Add, rename, or remove user-facing strings in src/locales. An agent skill from Touch-N-Stars/Touch-N-Stars.

  • Works in 4 steps: English first. While implementing a… → npm run i18n:check will now fail with… → Ask the user before generating… → …
  • A change introduces
  • SKILL.md covers Working order (do not shortcut), Key naming, What check-i18n.mjs actually… and Editing: by hand vs. helper…, plus 2 more sections
  • Calls npm

What it does

I18n is an agent skill from Touch-N-Stars/Touch-N-Stars. Add, rename, or remove user-facing strings in src/locales. Use whenever a change introduces or touches a translated string, when npm run i18n:check fails, or when English-only keys need to be mirrored into the other 13 locales.

Its SKILL.md is about 1.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Frontend & Design, covering Internationalization. It works with npm. The repository describes itself as: a WebApp to controll NINA. The licence is GPL-3.0.

When your agent uses it

  • A change introduces
  • Touches a translated string
  • Npm run i18n:check fails
  • English-only keys need to be mirrored into the other 13 locales

Example prompts

  • “/i18n”

Requirements

  • Node.js

Workflow steps

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

  1. English first. While implementing a feature, add the new keys to
  2. npm run i18n:check will now fail with missing (N) for all 13 locales.
  3. Ask the user before generating translations. Do not silently write the
  4. After mirroring: npm run i18n:check must pass, then npm run format:check.

What it can do on your machine

Read from SKILL.md and the folder at commit c7af082. 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

    Shell commands in SKILL.md call:

    • npm

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

  • Network

    No URLs in SKILL.md. Its commands use npm, 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 no API keys, tokens, secrets or passwords.

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

Context cost

I18n loads about 1.1k tokens when it runs. Until then it costs about 59 tokens; SKILL.md has 562 words of instructions outside code blocks.

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

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); files beside SKILL.md are not scanned.

SKILL.md

The full file from Touch-N-Stars/Touch-N-Stars at commit c7af082, republished under its GPL-3.0 licence (© Touch-N-Stars). 562 words, ~1,106 tokens.

Download SKILL.mdSave it as .claude/skills/i18n/SKILL.md (or your agent's skills folder).
name
i18n
description
Add, rename, or remove user-facing strings in src/locales. Use whenever a change introduces or touches a translated string, when `npm run i18n:check` fails, or when English-only keys need to be mirrored into the other 13 locales.

i18n keys in Touch'N'Stars

src/locales/ holds 14 files. en.json is the base locale; the other 13 (ca cn cz de es fr it ja ko nl pl pt uk) must mirror it exactly — same key set, same placeholders, same plural forms. npm run i18n:check gates this and runs in ci:verify.

Working order (do not shortcut)

  1. English first. While implementing a feature, add the new keys to src/locales/en.json only. Leave the other 13 alone.
  2. npm run i18n:check will now fail with missing (N) for all 13 locales. That is the expected mid-work state — not a regression to chase.
  3. Ask the user before generating translations. Do not silently write the other 13 locales. Ask once, listing the keys, then generate them in one pass.
  4. After mirroring: npm run i18n:check must pass, then npm run format:check.

Step 3 is a standing rule from the user: translations are produced deliberately, in one batch, right before the commit — never scattered through the work.

Key naming

Top-level namespaces in en.json: common general pages app whatsnew updates setup components plugins pinsDevices dialogs loading observationPlaner nightsummary indi nav

  • UI component strings go under components.<componentName>.<key>.
  • Plugin strings go under plugins.<pluginId>.<key> (see src/plugins/plugins.md).
  • Reuse common.* for generic words (OK, cancel, close) instead of adding a component-local duplicate.

What check-i18n.mjs actually enforces

Per locale, against en.json:

RuleFailure text
Every base key presentmissing (N)
No keys absent from baseextra (N)
No empty / whitespace-only valuesempty (N)
Identical {placeholder} set per keyplaceholder mismatches
Identical plural suffix set per group (zero one two few many other)plural mismatches
No duplicate keys in the same objectduplicate keys
Valid JSONinvalid JSON

Placeholders are compared as a set of names, so {count} must survive translation verbatim — a translator writing {Anzahl} fails the check. Plural groups are detected purely by the last path segment, so a legitimate key ending in .one or .other will be treated as a plural form.

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

Editing: by hand vs. helper scripts

For a block of related keys, edit the JSON files directly — one edit per file beats 10 script invocations, and it keeps the keys grouped in the right object.

Helper scripts exist for one-off keys:

bash
npm run locale:entry -- de components.foo.bar "Wert"   # one locale
npm run locale:entry:all -- components.foo.bar "Value" # all 14, same value
npm run locale:find-missing-keys                       # en vs. de only

Trap: both locale:entry scripts rewrite the file with JSON.stringify(obj, null, 2) and no trailing newline, which fails format:check. Always run npm run format (or npx prettier --write src/locales) after using them. They also write LF into CRLF files; git normalizes that, so the diff stays clean, but do not be surprised by the LF will be replaced by CRLF warning.

locale:find-missing-keys only compares en against de — it is not a substitute for i18n:check.

Translation quality

  • Keep strings short: they render on narrow mobile viewports next to 48 px touch targets. A German string ~30% longer than English will wrap or clip.
  • Keep astronomy/N.I.N.A. domain terms untranslated where the community uses the English term (e.g. Framing, Flat, Dither, Meridian Flip).
  • Match the register of the surrounding keys. de.json is mixed: newer areas (setup wizard, PINS, tooltips) use informal "du", older error dialogs still use "Sie". Prefer "du" for new strings, but stay consistent within one screen — read the neighbouring keys before writing.
  • Never translate {placeholder} names or the | separators of plural forms.

Removing / renaming keys

Remove the key from all 14 files in the same change, otherwise the 13 locales fail with extra (N). Grep for the key before deleting:

bash
grep -rn "components.foo.bar" src --include=*.vue --include=*.js

© Touch-N-Stars, GPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/i18n of Touch-N-Stars/Touch-N-Stars.

Open the folder on GitHubat commit c7af082

Compare with similar skills

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.

I18n compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
I18n this skillTouch-N-Stars/Touch-N-Stars124—~1.1kAutomated safety check: PassGPL-3.0
Create Docsvictorgarciaesgi/nuxt-typed-router4132 repos~2.8kAutomated safety check: PassMIT
Frontend Build Timing Auditopenops-cloud/openops1.1k—~2.3kAutomated safety check: PassCustom licence
Command UIforcedotcom/salesforcedx-vscode1k—~1.4kAutomated safety check: PassBSD-3-Clause
Igniteui Angular BuildIgniteUI/igniteui-angular599—~898Automated safety check: PassCustom licence
Createliriliri/licia2.4k—~879Automated safety check: PassMIT

Similar skills

  • Create Docs

    victorgarciaesgi/nuxt-typed-router

    Create complete documentation sites for projects. An agent skill from victorgarciaesgi/nuxt-typed-router.

    413 GitHub starsUsed in 2 repos~2.8k tokens
    Frontend & DesignAuto-check passed
  • Frontend Build Timing Audit

    openops-cloud/openops

    Detects and diagnoses chunk-evaluation timing bugs in the Vite/rolldown production build of react-ui (works-in-dev / broken-in-build i18n regressions, missing UI labels, module-scope t()…

    1.1k GitHub stars~2.3k tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Command UI

    forcedotcom/salesforcedx-vscode

    Command palette, CodeLens, context menus, package.nls titles, and NotificationModeService.

    1k GitHub stars~1.4k tokensUpdated today
    Frontend & DesignAuto-check passed
  • Igniteui Angular Build

    IgniteUI/igniteui-angular

    Quick-reference for building the core Ignite UI for Angular library and related packages.

    599 GitHub stars~898 tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Create

    liriliri/licia

    Create a new Licia utility module following project conventions.

    2.4k GitHub stars~879 tokensUpdated 7 days ago
    Frontend & DesignAuto-check passed
  • Managing MCP Index

    Comfy-Org/workflow_templates

    Builds and maintains templates/index.mcp.json for Comfy Cloud MCP tools.

    1.3k GitHub stars~1.9k tokensUpdated today
    Frontend & DesignAuto-check: notes

More from Touch-N-Stars/Touch-N-Stars

  • API Endpoint

    Touch-N-Stars/Touch-N-Stars

    Add or change an API call between the app and its backends — the Touch'N'Stars plugin server (C), the NINA Advanced API, or the PINS daemon.

    124 GitHub stars~1.3k tokensUpdated yesterday
    Auto-check passed
  • Changelog

    Touch-N-Stars/Touch-N-Stars

    Write or fix a CHANGELOG.md release entry. An agent skill from Touch-N-Stars/Touch-N-Stars.

    124 GitHub stars~725 tokensUpdated yesterday
    Auto-check passed
  • Equipment

    Touch-N-Stars/Touch-N-Stars

    Work on equipment devices — INDI driver selection, device lists, connect/disconnect, and the NINA profile values behind them (camera, mount, focuser, filter wheel, rotator, switch, weather, flat…

    124 GitHub stars~1.5k tokensUpdated yesterday
    Auto-check passed
  • Feature Kickoff

    Touch-N-Stars/Touch-N-Stars

    Turn a rough feature idea into a written goal and testable acceptance criteria before any code is written.

    124 GitHub stars~2k tokensUpdated yesterday
    Auto-check passed
  • Setup Wizard

    Touch-N-Stars/Touch-N-Stars

    Work on the first-run / equipment setup wizard (src/components/setupWizard/) or on location and coordinate handling.

    124 GitHub stars~1.2k tokensUpdated yesterday
    Auto-check passed
  • Tns Review

    Touch-N-Stars/Touch-N-Stars

    Review changed Touch'N'Stars code with three parallel agents, one each for functionality, UI and maintainability, against this project's own rules (NINA/PINS dual mode, polling contract…

    124 GitHub stars~1.7k tokensUpdated yesterday
    Auto-check passed

Works with

Questions about I18n

What does I18n do?

Add, rename, or remove user-facing strings in src/locales. An agent skill from Touch-N-Stars/Touch-N-Stars. I18n is an agent skill from Touch-N-Stars/Touch-N-Stars. Add, rename, or remove user-facing strings in src/locales.

When should I use I18n?

I18n fits situations like: A change introduces; touches a translated string; npm run i18n:check fails; english-only keys need to be mirrored into the other 13 locales.

How do I install I18n in Claude Code?

Run `npx skills add Touch-N-Stars/Touch-N-Stars --skill i18n -a claude-code`. Or copy the skill folder (.claude/skills/i18n in Touch-N-Stars/Touch-N-Stars) into .claude/skills/i18n in your project. Claude Code loads it when a task matches its description.

How do I install I18n in Codex?

Run `npx skills add Touch-N-Stars/Touch-N-Stars --skill i18n -a codex`. Or copy the skill folder (.claude/skills/i18n in Touch-N-Stars/Touch-N-Stars) into .agents/skills/i18n in your project. Codex loads it when a task matches its description.

Can I use 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 Touch-N-Stars/Touch-N-Stars --skill 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/i18n, .gemini/skills/i18n, .github/skills/i18n and .opencode/skills/i18n in your project.

What does I18n need to run?

Going by SKILL.md and its folder, I18n needs the command-line tools its instructions call (npm). Our summary lists: Node.js.

Does I18n access the network?

SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is 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. Review the folder before installing.

What licence does I18n use?

I18n is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does I18n use?

About 1.1k tokens (SKILL.md is roughly 4.4k 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 I18n?

Skills that share tags, products or a category with I18n: Create Docs (victorgarciaesgi/nuxt-typed-router, 413 stars), Frontend Build Timing Audit (openops-cloud/openops, 1.1k stars), Command UI (forcedotcom/salesforcedx-vscode, 1k stars) and Igniteui Angular Build (IgniteUI/igniteui-angular, 599 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains I18n?

Touch-N-Stars (a GitHub organization) maintains it in Touch-N-Stars/Touch-N-Stars, which has 124 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on October 10, 2026.

Source: Touch-N-Stars/Touch-N-Stars on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.