Agent skill

Translate

by ankit in ankit/stylebot

Translate Stylebot's locale strings — fill in strings that English has and other locales lack, retranslate English strings that changed, or add a whole new locale (e.g.

MITAuto-check passedWriting & Content

Install Translate

skills CLI
$ npx skills add ankit/stylebot --skill translate -a claude-code

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

GitHub CLI
$ gh skill install ankit/stylebot translate --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/ankit/stylebot.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/translate .claude/skills/translate && 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
translate
GitHub stars
1.6k
Token cost
~1.9k tokens
SKILL.md length
1,063 words
Files
1
Skills in repo
5
Repo updated
First seen
Licence
MIT

At a glance

Translate Stylebot's locale strings — fill in strings that English has and other locales lack, retranslate English strings that changed, or add a whole new locale (e.g.

  • Works in 3 steps: Missing strings. Run yarn… → Changed English. A string that changed… → A new locale (/translate add ): create…
  • Improve a language
  • SKILL.md covers The file format, What to translate, Audit a locale and How to translate well, plus 3 more sections
  • Calls yarn and git

What it does

Translate is an agent skill from ankit/stylebot. Translate Stylebot's locale strings — fill in strings that English has and other locales lack, retranslate English strings that changed, or add a whole new locale (e.g. "/translate add vi"). Use after adding or changing any string in src/assets/locales/en.config, when yarn validate-locales reports missing translations, or when the user asks to add or improve a language.

Its SKILL.md is about 1.9k 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 Writing & Content, covering Translation and Internationalization. The repository describes itself as: Change the appearance of the web instantly. The licence is MIT.

When your agent uses it

  • Improve a language
  • Tasks that involve Translation
  • Tasks that involve Internationalization

Example prompts

  • “/translate add vi”
  • “/translate”

Workflow steps

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

  1. Missing strings. Run yarn validate-locales; every "missing
  2. Changed English. A string that changed in en.config on this branch
  3. A new locale (/translate add ): create .config with every

What it can do on your machine

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

    • yarn
    • git

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

  • Network

    No URLs in SKILL.md. Its commands use yarn and git, 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

Translate loads about 1.9k tokens when it runs. Until then it costs about 96 tokens; SKILL.md has 1,063 words of instructions outside code blocks.

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

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 ankit/stylebot at commit 96a61f5, republished under its MIT licence (© ankit). 1,063 words, ~1,900 tokens.

Download SKILL.mdSave it as .claude/skills/translate/SKILL.md (or your agent's skills folder).
name
translate
description
Translate Stylebot's locale strings — fill in strings that English has and other locales lack, retranslate English strings that changed, or add a whole new locale (e.g. "/translate add vi"). Use after adding or changing any string in src/assets/_locales/en.config, when `yarn validate-locales` reports missing translations, or when the user asks to add or improve a language.

Translate Stylebot

Stylebot's UI strings live in src/assets/_locales/<locale>.config, one file per locale; en.config is the source. CI's yarn validate-locales fails while any string English has is missing from another locale, so every string needs every locale. This skill is how they get filled in.

The file format

#==== Section ====

# Theme name in the reader's theme picker.
@light_theme
Light

@restore_add_back_site
Add back $site$
  • @key on its own line, the text on the next line(s), a blank line between entries. Keep keys in the same order as en.config, under the same section headers.
  • # lines are comments, stripped by the build. A # line directly above a key in en.config is a note for translators: read it, and add one when you add a string whose meaning isn't obvious from its words.
  • The text can't contain @ — the parser starts a new string at every @.
  • $NAME$ is a placeholder. Copy it exactly (same name, same case); move it wherever the sentence needs it. The validator fails on mismatches.
  • language_code isn't translated: it's the file's own locale with a hyphen (ja, zh-TW, pt-BR), set as the UI's lang so fonts follow it.
  • store_listing and privacy_policy are multi-paragraph store copy, not UI; translate them too, keeping the paragraphs and bullet characters.

What to translate

  1. Missing strings. Run yarn validate-locales; every "missing translation" error is a string to add.
  2. Changed English. A string that changed in en.config on this branch needs retranslating even though every locale has it: git diff origin/v4 -- src/assets/_locales/en.config (or the branch's base). A renamed key counts as removed and added: rename it in every locale.
  3. A new locale (/translate add <code>): create <code>.config with every section and key of en.config, translated. Use a code Chrome supports (developer.chrome.com/docs/extensions/reference/api/i18n#locales) — nothing else in the repo lists locales.

Audit a locale

For /translate audit <code>: review a whole locale that already passes the validator, as one pass with its own PR.

  1. yarn validate-locales --audit <code> lists what to look at first: strings identical to English (a loanword, or untranslated?), "..." for "…", stray spaces, and short labels much longer than the English.
  2. Read the whole file against en.config, top to bottom, applying "Sound native" below and the locale's per-language note. Fix untranslated strings, calques, typos and grammar, register and terminology drift. Store copy (store_listing, privacy_policy) is the oldest text and usually needs the most.
  3. Look at it in the extension with yarn dev:chrome:locale <code>: the tab row, segmented controls, the shortcuts view, menus and the popup are the tight spots.
  4. In the PR, list every changed string with its English and why it changed, in English, so it can be reviewed without reading the language. Say what still needs a native speaker's eye.

How to translate well

  • Look at where a string is used before translating a short or ambiguous one: grep -rn "'<key>'" src and read the component. "Light" is a theme name in one place and a font weight in another; "Style" may be a noun (a site's CSS) or a verb.
  • UI register: short, plain, the way the platform's own UI says it in that language. Sentence case where the language has case. Buttons and menu items are actions ("Copy CSS"), not descriptions.
  • Length: many strings sit in tight buttons, tabs, segmented controls and menus. Prefer the shorter natural wording; check the component when a translation runs much longer than the English.
  • Punctuation: use the language's own quotes (« », „ “, 「」, “ ”), ellipsis "…", and spacing rules (a space before ? ! : ; in French).
  • Consistency: reuse the wording the locale already uses for the same concept — read neighbouring strings in that locale file before writing.
Show full SKILL.md (480 more words)Show less

Sound native

Write what a native speaker would put in this spot of a well-made app in their language, not the English sentence in other words. Translate the meaning, then let the language's own grammar and word order carry it.

  • Read it back as a native user. If a sentence would only make sense to someone who knows the English behind it, rewrite it.
  • No articles or filler the language doesn't use. English "a/an" becomes nothing in most languages; don't render it as "one" (Vietnamese "một", Chinese "一个") unless something is being counted.
  • Name the subject. English "it" for a feature or "you" in every sentence sounds foreign in many languages. Restructure, or name the thing ("this feature", "AI", "Stylebot").
  • Feature names aren't sentence subjects unless that's natural in the language: "Chat uses your own API key" becomes "this feature uses…", not the tab label used as a noun.
  • Follow the platform's wording. For common actions and settings (save, undo, sign in, dark mode, shortcut), use the terms Chrome and the OS use in that language.
  • Keep one register per locale. Match the formality the file already uses and keep to it.

Per language (what each file already does; when touching a string that breaks it, bring it in line):

  • Vietnamese: "bạn" for the user; drop "một" unless counting; avoid "nó" for features; "Hãy …" is natural for instructions in messages, not on buttons.
  • Japanese: sentences in です/ます; buttons and labels as short nouns or verb stems (保存, 削除); leave out あなた, which a few strings still use.
  • Chinese (Simplified and Traditional): 你, not 您 (a few strings still use 您); leave the pronoun out where context makes it clear. Traditional uses Taiwan's terms (檔案, 網站, 設定), not Mainland ones.
  • Korean: 합니다 in statements, 하세요 in requests; short nouns on buttons; never 당신.
  • German: "Sie" (some strings still use "du"/"dein").
  • French: "vous". Spanish, Italian, Romanian: informal "tú/tu". Portuguese (both): "você".
  • Russian: "вы", lowercase.

Glossary

Never translated: Stylebot, CSS, HTML, URL, Google Drive, Google Fonts, Claude, Gemini, OpenAI, model names (Sonnet 5, GPT-5.6 Luna…), keyboard keys (Esc, Alt, Shift, ⌘).

Keep the meaning, translate the word:

EnglishMeaning in Stylebot
stylethe CSS a user saved for one site (noun)
stylingStylebot's CSS being applied on a page
selectora CSS selector, as in CSS documentation in that language
preseta ready-made set of styles (dark mode, grayscale…)
readability / readerthe reading view that strips a page to its article
panel / editorStylebot's side panel where styles are edited
Light / Dark / Sepia / Systemtheme names, as the OS or browser names its themes
provideran AI company whose API key the user adds

Finish

  1. yarn validate-locales passes with no errors.
  2. For a new locale, read the ten longest translations against their components and shorten any that would crowd their control.
  3. Commit the locale files with the change that needed them.

© ankit, MIT. 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 .agents/skills/translate of ankit/stylebot.

Open the folder on GitHubat commit 96a61f5

Compare with similar skills

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

Translate compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Translate this skillankit/stylebot1.6k—~1.9kAutomated safety check: PassMIT
Translation Diff ExportDevolutions/UniGetUI26k—~1.1kAutomated safety check: PassMIT
Translation Diff TranslateDevolutions/UniGetUI26k—~934Automated safety check: PassMIT
Plane UI Translationmakeplane/plane61k—~16kAutomated safety check: PassAGPL-3.0
Translatetagspaces/tagspaces5.3k—~2.2kAutomated safety check: PassAGPL-3.0
Translation Source SyncDevolutions/UniGetUI26k—~1.2kAutomated safety check: PassMIT

Similar skills

  • Translation Diff Export

    Devolutions/UniGetUI

    Compares UniGetUI JSON locale files against English, identifies untranslated or source-changed keys, and generates patch, reference, and handoff files for a target language.

    26k GitHub stars~1.1k tokensUpdated today
    Writing & ContentAuto-check passed
  • Translation Diff Translate

    Devolutions/UniGetUI

    Translates a sparse UniGetUI JSON language patch, writes completed entries into the working copy, preserves placeholders and terminology, and prepares the patch for merge-back.

    26k GitHub stars~934 tokensUpdated today
    Writing & ContentAuto-check passed
  • Plane UI Translation

    makeplane/plane

    Sets the rules for translating and updating Plane's UI strings across locales: do-not-translate terms, plural forms, placeholders and AI translation review.

    61k GitHub stars~16k tokensUpdated today
    Writing & ContentAuto-check passed
  • Translate

    tagspaces/tagspaces

    Translate new or untranslated i18n strings from the English locale files (core.json + peri.json) into all other locales, maintaining consistency with each language's existing translations.

    5.3k GitHub stars~2.2k tokensUpdated yesterday
    Writing & ContentAuto-check passed
  • Translation Source Sync

    Devolutions/UniGetUI

    Synchronizes the UniGetUI English language file with source-code usage, identifies missing translation keys, removes unused entries, reports localization drift, and can reorder locale files to match…

    26k GitHub stars~1.2k tokensUpdated today
    Writing & ContentAuto-check passed
  • Translate or audit the values in a Video.js locale pack. An agent skill from videojs/video.js.

    40k GitHub stars~723 tokensUpdated today
    Writing & ContentAuto-check passed

More from ankit/stylebot

  • Eval Chat

    ankit/stylebot

    Measure whether a change makes Chat's styling replies better, with yarn eval:chat — it runs styling requests on recorded real pages for two versions of Stylebot and measures on the page whether each…

    1.6k GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Release

    ankit/stylebot

    Cut a Stylebot release — CHANGELOG entry, version bump, release PR, tag, and store zips.

    1.6k GitHub stars~897 tokensUpdated today
    Auto-check passed
  • Validate Stylebot

    ankit/stylebot

    Launch Stylebot in a real, headed Chrome window (via yarn dev:chrome) so the user can manually eyeball a change — in whatever checkout the current session is in, worktree or main.

    1.6k GitHub stars~780 tokensUpdated today
    Auto-check passed
  • Stylebot

    ankit/stylebot

    Restyle websites in the user's browser with the Stylebot extension's stylebot CLI — dark modes, themes, fonts, bigger text, hiding clutter, fixing a layout, or editing and managing the CSS and…

    1.6k GitHub stars~2.8k tokensUpdated today
    Auto-check passed

Questions about Translate

What does Translate do?

Translate Stylebot's locale strings — fill in strings that English has and other locales lack, retranslate English strings that changed, or add a whole new locale (e.g. Translate is an agent skill from ankit/stylebot.g.

When should I use Translate?

Translate fits situations like: improve a language; tasks that involve Translation; tasks that involve Internationalization.

How do I install Translate in Claude Code?

Run `npx skills add ankit/stylebot --skill translate -a claude-code`. Or copy the skill folder (.agents/skills/translate in ankit/stylebot) into .claude/skills/translate in your project. Claude Code loads it when a task matches its description.

How do I install Translate in Codex?

Run `npx skills add ankit/stylebot --skill translate -a codex`. Or copy the skill folder (.agents/skills/translate in ankit/stylebot) into .agents/skills/translate in your project. Codex loads it when a task matches its description.

Can I use Translate 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 ankit/stylebot --skill translate -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/translate, .gemini/skills/translate, .github/skills/translate and .opencode/skills/translate in your project.

What does Translate need to run?

Going by SKILL.md and its folder, Translate needs the command-line tools its instructions call (yarn and git).

Does Translate access the network?

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

Is Translate 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 Translate use?

Translate 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 Translate use?

About 1.9k tokens (SKILL.md is roughly 7.6k 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 Translate?

Skills that share tags, products or a category with Translate: Translation Diff Export (Devolutions/UniGetUI, 26k stars), Translation Diff Translate (Devolutions/UniGetUI, 26k stars), Plane UI Translation (makeplane/plane, 61k stars) and Translate (tagspaces/tagspaces, 5.3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Translate?

ankit (a GitHub user) maintains it in ankit/stylebot, which has 1,647 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 8, 2026.

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