Agent skill

Jta

by ckanner in ckanner/jta

Translate JSON i18n files to multiple languages with AI-powered quality optimization.

MITAuto-check: notesFrontend & Design

Install Jta

skills CLI
$ npx skills add ckanner/jta --skill jta -a claude-code

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

GitHub CLI
$ gh skill install ckanner/jta jta --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/ckanner/jta.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/jta .claude/skills/jta && 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
jta
GitHub stars
133
Token cost
~2.4k tokens
SKILL.md length
551 words
Files
6 (incl. scripts)
Skills in repo
1
Repo updated
First seen
Licence
MIT

At a glance

Translate JSON i18n files to multiple languages with AI-powered quality optimization.

  • Works in 8 steps: Check if jta is installed → Install jta if needed → Check for API key and set provider → …
  • User mentions translating JSON
  • SKILL.md covers When to Use This Skill, Core Capabilities, Instructions and Terminology Management, plus 7 more sections
  • Runs Shell scripts from its folder; calls curl, brew and jq; reaches github.com and platform.openai.com; needs ANTHROPIC_API_KEY and GEMINI_API_KEY

What it does

Jta is an agent skill from ckanner/jta. Translate JSON i18n files to multiple languages with AI-powered quality optimization. Use when user mentions translating JSON, i18n files, internationalization, locale files, or needs to convert language files to other languages.

Its SKILL.md is about 2.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 7 other files, including scripts (for example `examples/basic-translation.md`, `examples/ci-cd-integration.md` and `examples/incremental-mode.md`).

It sits in Frontend & Design, covering Internationalization and Translation. It works with Google Gemini, OpenAI and Go. The repository describes itself as: AI-powered JSON translation tool with agentic reflection using OpenAI, Anthropic, and Gemini APIs. The licence is MIT.

When your agent uses it

  • User mentions translating JSON
  • Internationalization
  • Needs to convert language files to other languages

Example prompts

  • “/jta”

Requirements

  • A Bash shell
  • A credential in ANTHROPIC_API_KEY
  • A credential in GEMINI_API_KEY
  • Pre-approved tools (allowed-tools): Read, Write, Bash, Glob

Workflow steps

8 steps, taken from the step headings in SKILL.md.

  1. Check if jta is installed
  2. Install jta if needed
  3. Check for API key and set provider
  4. Identify source file
  5. Determine translation requirements
  6. Execute translation
  7. Verify results
  8. Report to user

What it can do on your machine

Read from SKILL.md and the folder at commit f23146f. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Write
    • Bash
    • Glob

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (Shell), which the agent can run.

    Shell commands in SKILL.md call:

    • curl
    • brew
    • jq

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

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • github.com
    • platform.openai.com
    • console.anthropic.com
    • aistudio.google.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • ANTHROPIC_API_KEY
    • GEMINI_API_KEY
    • OPENAI_API_KEY

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

Context cost

Jta loads about 2.4k tokens when it runs. Until then it costs about 58 tokens; SKILL.md has 551 words of instructions outside code blocks.

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

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: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteRuns commands with sudoSKILL.md:59
    sudo mv jta /usr/local/bin/
  • NoteRuns commands with sudoSKILL.md:65
    sudo mv jta /usr/local/bin/
  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Read, Write, Bash, Glob

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); the scripts in this folder are not scanned.

SKILL.md

The full file from ckanner/jta at commit f23146f, republished under its MIT licence (© ckanner). 551 words, ~2,428 tokens.

Download SKILL.mdSave it as .claude/skills/jta/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.
name
jta
description
Translate JSON i18n files to multiple languages with AI-powered quality optimization. Use when user mentions translating JSON, i18n files, internationalization, locale files, or needs to convert language files to other languages.
allowed-tools
Read, Write, Bash, Glob
version
1.0.0

Jta Translation

AI-powered JSON internationalization file translator with Agentic reflection mechanism.

When to Use This Skill

  • User asks to translate JSON i18n/locale files
  • User mentions "internationalization", "i18n", "l10n", or "locale"
  • User wants to add new languages to their project
  • User needs to update existing translations
  • User mentions specific languages like "translate to Chinese/Japanese/Korean"

Core Capabilities

  1. Agentic Translation: AI translates, evaluates, and improves its own work (3x API calls per batch)
  2. Smart Terminology: Automatically detects and maintains consistent terms (brand names, technical terms)
  3. Format Protection: Preserves {variables}, {{placeholders}}, HTML tags, URLs, Markdown
  4. Incremental Mode: Only translates new/changed content (saves 80-90% API cost on updates)
  5. 27 Languages: Including RTL languages (Arabic, Hebrew, Persian, Urdu)

Instructions

Step 1: Check if jta is installed
bash
# Check if jta exists
if ! command -v jta &> /dev/null; then
  echo "jta not found, will install"
fi
Step 2: Install jta if needed
bash
# Detect OS and install jta
OS="$(uname -s)"
ARCH="$(uname -m)"

if [[ "$OS" == "Darwin"* ]]; then
  # macOS - try Homebrew first
  if command -v brew &> /dev/null; then
    brew tap hikanner/jta
    brew install jta
  else
    # Download binary
    if [[ "$ARCH" == "arm64" ]]; then
      curl -L https://github.com/hikanner/jta/releases/latest/download/jta-darwin-arm64 -o jta
    else
      curl -L https://github.com/hikanner/jta/releases/latest/download/jta-darwin-amd64 -o jta
    fi
    chmod +x jta
    sudo mv jta /usr/local/bin/
  fi
elif [[ "$OS" == "Linux"* ]]; then
  # Linux
  curl -L https://github.com/hikanner/jta/releases/latest/download/jta-linux-amd64 -o jta
  chmod +x jta
  sudo mv jta /usr/local/bin/
fi

# Verify installation
jta --version
Step 3: Check for API key and set provider

Jta requires an AI provider API key. Check in this order and set the provider flag:

bash
# Detect API key and set provider flag
if [[ -n "$ANTHROPIC_API_KEY" ]]; then
  echo "✓ Anthropic API key found"
  PROVIDER_FLAG="--provider anthropic"
elif [[ -n "$GEMINI_API_KEY" ]]; then
  echo "✓ Gemini API key found"
  PROVIDER_FLAG="--provider gemini"
elif [[ -n "$OPENAI_API_KEY" ]]; then
  echo "✓ OpenAI API key found"
  PROVIDER_FLAG=""  # OpenAI is default, no flag needed
else
  echo "✗ No API key found. Please set one of:"
  echo "  export OPENAI_API_KEY=sk-..."
  echo "  export ANTHROPIC_API_KEY=sk-ant-..."
  echo "  export GEMINI_API_KEY=..."
  exit 1
fi

Important: Save the PROVIDER_FLAG value to use in translation commands.

Step 4: Identify source file
bash
# Find JSON files in common i18n/locale directories
find . -type f -name "*.json" \
  \( -path "*/locales/*" -o \
     -path "*/locale/*" -o \
     -path "*/i18n/*" -o \
     -path "*/lang/*" -o \
     -path "*/translations/*" \) \
  | head -20

Ask user to confirm which file to translate if multiple found.

Step 5: Determine translation requirements

Ask user (if not specified in their request):

  • Target languages (e.g., "zh,ja,ko")
  • Whether to use incremental mode (recommended for updates)
  • Output location preference
Step 6: Execute translation

Always use $PROVIDER_FLAG from Step 3 to ensure the correct AI provider is used:

bash
# Basic translation with detected provider
jta <source-file> --to <target-langs> $PROVIDER_FLAG

# Examples:
# Single language
jta en.json --to zh $PROVIDER_FLAG

# Multiple languages
jta en.json --to zh,ja,ko $PROVIDER_FLAG

# Incremental mode (for updates)
jta en.json --to zh --incremental $PROVIDER_FLAG

# With custom output
jta en.json --to zh --output ./locales/zh.json $PROVIDER_FLAG

# Non-interactive mode (for multiple languages)
jta en.json --to zh,ja,ko,es,fr -y $PROVIDER_FLAG

# Override with specific model for quality
jta en.json --to zh --provider anthropic --model claude-sonnet-4-5

# Translate specific keys only
jta en.json --to zh --keys "settings.*,user.*" $PROVIDER_FLAG

# Exclude certain keys
jta en.json --to zh --exclude-keys "admin.*,internal.*" $PROVIDER_FLAG
Step 7: Verify results

After translation completes:

bash
# Check output files exist
ls -lh <output-files>

# Validate JSON structure
for file in <output-files>; do
  if jq empty "$file" 2>/dev/null; then
    echo "✓ $file is valid JSON"
  else
    echo "✗ $file has invalid JSON"
  fi
done
Step 8: Report to user

Show the user:

  • Translation statistics (total items, success rate, API calls, duration)
  • Location of output files
  • Any errors or warnings
  • Cost implications if significant (e.g., "Used 15 API calls, estimated $0.30")

Terminology Management

Jta automatically creates a .jta/ directory to store terminology:

.jta/
├── terminology.json       # Source language terms (preserve + consistent)
├── terminology.zh.json    # Chinese translations
├── terminology.ja.json    # Japanese translations
└── terminology.ko.json    # Korean translations

terminology.json structure:

json
{
  "version": "1.0",
  "sourceLanguage": "en",
  "preserveTerms": ["API", "OAuth", "GitHub"],
  "consistentTerms": ["credits", "workspace", "prompt"]
}

Users can manually edit these files for custom terminology.

Common Patterns

Note: Always include $PROVIDER_FLAG (from Step 3) in your commands.

Pattern 1: First-time translation
bash
# User: "Translate my en.json to Chinese and Japanese"
jta locales/en.json --to zh,ja -y $PROVIDER_FLAG
Pattern 2: Update existing translations
bash
# User: "I added new keys to en.json, update the translations"
jta locales/en.json --to zh,ja --incremental -y $PROVIDER_FLAG
Pattern 3: Translate specific sections
bash
# User: "Only translate the settings and user sections"
jta en.json --to zh --keys "settings.**,user.**" $PROVIDER_FLAG
Pattern 4: High-quality translation
bash
# User: "Use the best model for highest quality"
jta en.json --to zh --provider anthropic --model claude-sonnet-4-5
Pattern 5: RTL languages
bash
# User: "Translate to Arabic and Hebrew"
jta en.json --to ar,he -y $PROVIDER_FLAG
# Jta automatically handles bidirectional text markers

Error Handling

Error: "jta: command not found"
  • Run the installation script from Step 2
  • Verify with jta --version
Show full SKILL.md (221 more words)Show less
Error: "API key not set"

Prompt user:

Jta requires an AI provider API key. Please set one of:

For OpenAI (recommended):
  export OPENAI_API_KEY=sk-...
  Get key at: https://platform.openai.com/api-keys

For Anthropic:
  export ANTHROPIC_API_KEY=sk-ant-...
  Get key at: https://console.anthropic.com/

For Google Gemini:
  export GEMINI_API_KEY=...
  Get key at: https://aistudio.google.com/app/apikey
Error: "Rate limit exceeded"
bash
# Reduce batch size and concurrency
jta en.json --to zh --batch-size 10 --concurrency 1
Error: "Invalid JSON"
bash
# Validate source file
jq . source.json
Error: Translation quality issues
  1. Try a better model:

    bash
    jta en.json --to zh --provider anthropic --model claude-sonnet-4-5
  2. Check terminology files in .jta/ and edit if needed

  3. Use verbose mode to debug:

    bash
    jta en.json --to zh --verbose

Performance Tips

  • Small files (<100 keys): Use default settings
  • Large files (>500 keys): Use --batch-size 10 --concurrency 2
  • Frequent updates: Always use --incremental to save cost
  • Quality priority: Use --provider anthropic --model claude-sonnet-4-5
  • Speed priority: Use --provider openai --model gpt-3.5-turbo (if available)
  • Cost priority: Use incremental mode + larger batch sizes

Supported Languages

27 languages with full support:

Left-to-Right (LTR):

  • European: en, es, fr, de, it, pt, ru, nl, pl, tr
  • Asian: zh, zh-TW, ja, ko, th, vi, id, ms, hi, bn, si, ne, my

Right-to-Left (RTL):

  • Middle Eastern: ar, fa, he, ur

View all supported languages:

bash
jta --list-languages

Output Format

Jta produces:

  1. Translated JSON files: Same structure as source, with translations
  2. Statistics: Printed to console
  3. Terminology files: In .jta/ directory for consistency

Always inform the user of:

  • Number of items translated
  • Success/failure count
  • Output file locations
  • Any errors or warnings
  • API usage and estimated cost (if significant)

Advanced Options

Note: Remember to include $PROVIDER_FLAG in your commands.

bash
# Skip terminology detection (use existing)
jta en.json --to zh --skip-terminology $PROVIDER_FLAG

# Disable terminology management completely
jta en.json --to zh --no-terminology $PROVIDER_FLAG

# Re-detect terminology (when source language changes)
jta en.json --to zh --redetect-terms $PROVIDER_FLAG

# Custom terminology directory (for shared terms)
jta en.json --to zh --terminology-dir ../shared-terms/ $PROVIDER_FLAG

# Specify source language explicitly
jta myfile.json --source-lang en --to zh $PROVIDER_FLAG

# Custom batch size and concurrency
jta en.json --to zh --batch-size 20 --concurrency 3 $PROVIDER_FLAG

# Verbose output for debugging
jta en.json --to zh --verbose $PROVIDER_FLAG

Examples

See examples/ directory for detailed, step-by-step use cases.

© ckanner, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 5 other files (scripts) in skills/jta of ckanner/jta.

  • SKILL.md
  • .gitignore
  • examples/basic-translation.md
  • examples/ci-cd-integration.md
  • examples/incremental-mode.md
  • scripts/install.sh

Open the folder on GitHubat commit f23146f

Compare with similar skills

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

Jta compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Jta this skillckanner/jta133—~2.4kAutomated safety check: NotesMIT
Frontend DevelopmentOpenHands/OpenHands90k—~324Automated safety check: PassMIT
LobeHub Internationalizationlobehub/lobehub83k—~569Automated safety check: PassCustom licence
Audit I18ngarfiec/Librechat-Mobile112—~7.2kAutomated safety check: NotesMIT
Roo Translationzgsm-ai/costrict4.4k—~1.8kAutomated safety check: PassApache-2.0
Chatbox i18n Translatorchatboxai/chatbox42k—~508Automated safety check: PassGPL-3.0

Similar skills

  • Frontend Development

    OpenHands/OpenHands

    This skill should be used when the user asks to "add UI copy", "add a translation", "optimize the frontend bundle", "change onboarding", "change conversation UI", "add a query key", "change MSW…

    90k GitHub stars~324 tokensUpdated today
    Frontend & DesignAuto-check passed
  • Rules for adding and editing LobeHub's user-facing strings with react-i18next: flat dot-notation keys, the default locale folder, namespaces and when to run bun run i18n.

    83k GitHub stars~569 tokensUpdated today
    Frontend & DesignAuto-check passed
  • Audit I18n

    garfiec/Librechat-Mobile

    Audit localization / i18n coverage across the compose-resources surface (10 modules x 9 locales).

    112 GitHub stars~7.2k tokensUpdated today
    Frontend & DesignAuto-check: notes
  • Roo Translation

    zgsm-ai/costrict

    Provides comprehensive guidelines for translating and localizing CoStrict extension strings.

    4.4k GitHub stars~1.8k tokensUpdated 8 days ago
    Writing & ContentAuto-check passed
  • Chatbox i18n Translator

    chatboxai/chatbox

    Translates new or changed i18n keys from a Chatbox Pro diff, staged changes or a commit range, writing the locale JSON files directly with a built-in glossary.

    42k GitHub stars~508 tokensUpdated 14 days ago
    Frontend & DesignAuto-check passed
  • Review pending AIRI translations on Crowdin in a batch, then sync them into the repository.

    50k GitHub stars~1.5k tokensUpdated today
    Frontend & DesignAuto-check passed

Questions about Jta

What does Jta do?

Translate JSON i18n files to multiple languages with AI-powered quality optimization. Jta is an agent skill from ckanner/jta. Translate JSON i18n files to multiple languages with AI-powered quality optimization.

When should I use Jta?

Jta fits situations like: user mentions translating JSON; internationalization; needs to convert language files to other languages.

How do I install Jta in Claude Code?

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

How do I install Jta in Codex?

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

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

What does Jta need to run?

Going by SKILL.md and its folder, Jta needs a shell for the scripts in its folder, the command-line tools its instructions call (curl, brew and jq) and credentials named ANTHROPIC_API_KEY, GEMINI_API_KEY and OPENAI_API_KEY. Our summary lists: A Bash shell; A credential in ANTHROPIC_API_KEY; A credential in GEMINI_API_KEY. Its frontmatter pre-approves these tools: Read, Write, Bash, Glob.

Does Jta access the network?

SKILL.md names 4 domains. In commands or code: github.com, platform.openai.com, console.anthropic.com and aistudio.google.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.

Is Jta safe to install?

Our automated static check of SKILL.md found notes only (runs commands with sudo; pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Jta use?

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

About 2.4k tokens (SKILL.md is roughly 9.7k 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 Jta?

Skills that share tags, products or a category with Jta: Frontend Development (OpenHands/OpenHands, 90k stars), LobeHub Internationalization (lobehub/lobehub, 83k stars), Audit I18n (garfiec/Librechat-Mobile, 112 stars) and Roo Translation (zgsm-ai/costrict, 4.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Jta?

ckanner (a GitHub user) maintains it in ckanner/jta, which has 133 GitHub stars. The repository was last updated on November 12, 2025.

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