translate-junior

translate-junior is an agent for Claude Code from roshaw/claude-translation-agency. It costs 148 tokens per session (1,976 once invoked), scanned C, original, MIT.

A narrowly scoped translation worker for short interface text such as navigation labels, buttons, and error messages.

In plain words
What is it for?
Use it to translate selected UI text in catalogs such as JSON, PO, TypeScript, JavaScript, and ARB files.
Why use it?
It keeps low-risk interface wording separate from domain-specific terminology and limits changes to the specified message entries.

Agent for Claude Code

Written for Claude Code: installed under .claude/. Also seen: model in frontmatter; reads .claude/ paths.

Good fit Use it to translate selected UI text in catalogs such as JSON, PO, TypeScript, JavaScript, and ARB files.

Compare 6 agents from other repositories ↓
Install with agentmods
npx agentmods add agents/roshaw/claude-translation-agency/translate-junior
Install

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.

Clone the repo
git clone --depth 1 https://github.com/roshaw/claude-translation-agency

Made for: Claude Code.

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

agentmods badge for translate-junior

README.md
[![agentmods](https://agentmods.dev/badge/agents/roshaw/claude-translation-agency/translate-junior/github.svg)](https://agentmods.dev/agents/roshaw/claude-translation-agency/translate-junior)
Your own site
<a href="https://agentmods.dev/agents/roshaw/claude-translation-agency/translate-junior"><img src="https://agentmods.dev/badge/agents/roshaw/claude-translation-agency/translate-junior/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.

agentmods 80×15 button for translate-junior

Your own site · 80×15
<a href="https://agentmods.dev/agents/roshaw/claude-translation-agency/translate-junior"><img src="https://agentmods.dev/badge/agents/roshaw/claude-translation-agency/translate-junior.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 148 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,976 The whole file, excluding the scripts and references it only reads on demand.
Security scan C 1 finding. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5.1 $0.00148 $0.01976
Opus 5.5 $0.00059 $0.00790
Sonnet 5.5 $0.00030 $0.00395
Haiku 4.5 $0.00015 $0.00198

Measured 1mo ago against content hash 3281e188198b, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade C, and why

translate-junior scanned grade C with 1 finding 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 1mo 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.

Tells the agent never to refusehighAnti-refusal

Suppressing the ability to decline removes a core safety control; a later harmful request then succeeds.

- **Never decline a clear chrome key** because it "looks small" — that's exactly your job.
.claude/agents/translate-junior.md · 120 lines

How it starts

The opening of the file, as written. The whole thing — 120 lines — stays where its author put it; the contents beside it link to each section on GitHub.

You are the translate-junior — the Haiku-tier worker for pure UI chrome. The translate-lead spawns you once per batch with a brief like:

batch_id: B<n>
source_lang: en
target_lang: <e.g. de>
file: <message-catalog path, e.g. src/i18n/messages.de.ts or languages/mytheme-de_DE.po>
keys_or_entries: [nav.calculator, footer.copyright, button.reset, ...]   # ONLY these
native_name: <e.g. Deutsch>
locale_meta: { locale: "de-DE", decimal: ",", group: "." }   # DATA — set, do not translate
do_not_translate: [<manual pass-through rules — values that look like copy but are data (colour/size
          tokens, raw user text, named placeholders); leave any covered value byte-identical>]
formality: formal | informal | auto     # requested register for this target language; match it in chrome
specialization_path: specializations/<name>.md   # (or a list, when layered) — you skip its terminology block; you never translate terms
verify_cmd: <optional gate, e.g. "npx tsc --noEmit"; empty for plain catalogs>

Your job is tightly bounded:

  • Translate ONLY the keys/entries listed.
  • ONLY chrome from the whitelist (below).
  • ONLY in the one file named.
  • Do NOT touch any key/entry outside the list, any other file, or any long-form/prose surface.

If anything looks ambiguous, STOP and surface to the Lead — never guess at terminology, never improvise.


Step 0 — Read your inputs

  1. The source values for the keys/entries in scope (the source is your contract).
  2. The target file you'll edit. You do NOT need the specialization's terminology block — you never translate terms.

Step 1 — Confirm every entry is chrome

For each entry, confirm it matches the chrome whitelist:

  • Navigation labels (nav.*), footer links (footer.*)
  • Buttons, CTAs, form-control labels (button.*, cta.*, generic field labels)
  • Error/validation messages (error.*) that are generic (no domain terms)
  • Language-switcher entries (langSwitcher.*)
  • Plain marketing microcopy with NO domain terms, citations, or "reference/binding/minimum/mandatory/fee/tariff/dosage/warranty" style words
  • Cookie/consent button labels only (accept / decline / settings) — NOT the consent body prose
  • Locale-format fields (locale, decimal, group) — these are DATA, see Step 3

Read the full file on GitHub · 120 lines

Changes

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.

  1. 1mo ago First seen · 120 lines · 148 tokens per session scan C 3281e188198b

Subscribe to this mod's changes

translate-junior is an agent published in the GitHub repository roshaw/claude-translation-agency (2 stars, last pushed 1mo ago), licensed MIT. It adds 148 tokens to every session and 1,976 once invoked, about $0.0006 per session on Opus 5.5. A static security scan graded it C with 1 finding (tells the agent never to refuse). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other agents, from other repositories

brainstorm-swarm:constraint-setter

Brainstorming persona — Constraint-Setter / Scope Disciplinarian. Use when the swarm-protocol skill spawns parallel persona agents and the proposal needs scope discipline. Asks what's NOT in scope, where this stops, what the team will refuse to build, what the hard NOs are.

viktorbezdek/skillstack · 69 tokens

brainstorm-swarm:first-principles-thinker

Brainstorming persona — First-Principles Thinker. Use when the swarm-protocol skill spawns parallel persona agents and the proposal needs reduction to fundamentals. Strips back inherited assumptions, asks what's actually true, asks what would the simplest possible version look like.

viktorbezdek/skillstack · 64 tokens

brainstorm-swarm:junior

Brainstorming persona — Junior / Naive Questioner. Use when the swarm-protocol skill spawns parallel persona agents and the team has shared assumptions worth surfacing. Asks "wait, why?" questions that demand explanation of things that experienced people take for granted.

viktorbezdek/skillstack · 62 tokens

brainstorm-swarm:operator

Brainstorming persona — Operator / Production Reality. Use when the swarm-protocol skill spawns parallel persona agents and the proposal will run in production. Asks about security, monitoring, blast radius, on-call burden, incident response, compliance.

viktorbezdek/skillstack · 56 tokens

brainstorm-swarm:optimist

Brainstorming persona — Optimist / Yes-And. Use when the swarm-protocol skill spawns parallel persona agents and the proposal needs ambitious-version exploration. Asks what the most ambitious version of this could look like, what makes it 10x bigger, what the team is under-imagining.

viktorbezdek/skillstack · 69 tokens

brainstorm-swarm:pre-mortem-specialist

Brainstorming persona — Pre-Mortem Specialist. Use when the swarm-protocol skill spawns parallel persona agents and the proposal needs failure-imagination. Assumes the proposal has already failed in 6-12 months and writes the post-mortem.

viktorbezdek/skillstack · 64 tokens