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…
Translate JSON i18n files to multiple languages with AI-powered quality optimization.
$ npx skills add ckanner/jta --skill jta -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ckanner/jta jta --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "jta" agent skill from https://github.com/ckanner/jta/tree/main/skills/jta into .claude/skills/jta/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "jta", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/ckanner/jta/tree/main/skills/jtaType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add ckanner/jta --skill jta -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ckanner/jta jta --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ckanner/jta.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/jta .agents/skills/jta && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "jta" agent skill from https://github.com/ckanner/jta/tree/main/skills/jta into .agents/skills/jta/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "jta", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ckanner/jta --skill jta -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ckanner/jta jta --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ckanner/jta.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/jta .cursor/skills/jta && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "jta" agent skill from https://github.com/ckanner/jta/tree/main/skills/jta into .cursor/skills/jta/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "jta", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/ckanner/jta.git --path skills/jta--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add ckanner/jta --skill jta -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ckanner/jta jta --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ckanner/jta.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/jta .gemini/skills/jta && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "jta" agent skill from https://github.com/ckanner/jta/tree/main/skills/jta into .gemini/skills/jta/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "jta", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install ckanner/jta jtaInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add ckanner/jta --skill jta -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ckanner/jta.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/jta .github/skills/jta && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "jta" agent skill from https://github.com/ckanner/jta/tree/main/skills/jta into .github/skills/jta/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "jta", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ckanner/jta --skill jta -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ckanner/jta jta --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ckanner/jta.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/jta .opencode/skills/jta && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "jta" agent skill from https://github.com/ckanner/jta/tree/main/skills/jta into .opencode/skills/jta/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "jta", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
jtaTranslate 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. 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.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit f23146f. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadWriteBashGlobFrom allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Shell), which the agent can run.
Shell commands in SKILL.md call:
curlbrewjqFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
github.complatform.openai.comconsole.anthropic.comaistudio.google.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
ANTHROPIC_API_KEYGEMINI_API_KEYOPENAI_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
sudo mv jta /usr/local/bin/sudo mv jta /usr/local/bin/allowed-tools: Read, Write, Bash, GlobAutomated 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.
The full file from ckanner/jta at commit f23146f, republished under its MIT licence (© ckanner). 551 words, ~2,428 tokens.
.claude/skills/jta/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.AI-powered JSON internationalization file translator with Agentic reflection mechanism.
{variables}, {{placeholders}}, HTML tags, URLs, Markdown# Check if jta exists
if ! command -v jta &> /dev/null; then
echo "jta not found, will install"
fi# 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 --versionJta requires an AI provider API key. Check in this order and set the provider flag:
# 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
fiImportant: Save the PROVIDER_FLAG value to use in translation commands.
# 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 -20Ask user to confirm which file to translate if multiple found.
Ask user (if not specified in their request):
Always use $PROVIDER_FLAG from Step 3 to ensure the correct AI provider is used:
# 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_FLAGAfter translation completes:
# 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
doneShow the user:
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 translationsterminology.json structure:
{
"version": "1.0",
"sourceLanguage": "en",
"preserveTerms": ["API", "OAuth", "GitHub"],
"consistentTerms": ["credits", "workspace", "prompt"]
}Users can manually edit these files for custom terminology.
Note: Always include $PROVIDER_FLAG (from Step 3) in your commands.
# User: "Translate my en.json to Chinese and Japanese"
jta locales/en.json --to zh,ja -y $PROVIDER_FLAG# User: "I added new keys to en.json, update the translations"
jta locales/en.json --to zh,ja --incremental -y $PROVIDER_FLAG# User: "Only translate the settings and user sections"
jta en.json --to zh --keys "settings.**,user.**" $PROVIDER_FLAG# User: "Use the best model for highest quality"
jta en.json --to zh --provider anthropic --model claude-sonnet-4-5# User: "Translate to Arabic and Hebrew"
jta en.json --to ar,he -y $PROVIDER_FLAG
# Jta automatically handles bidirectional text markersjta --versionPrompt 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# Reduce batch size and concurrency
jta en.json --to zh --batch-size 10 --concurrency 1# Validate source file
jq . source.jsonTry a better model:
jta en.json --to zh --provider anthropic --model claude-sonnet-4-5Check terminology files in .jta/ and edit if needed
Use verbose mode to debug:
jta en.json --to zh --verbose--batch-size 10 --concurrency 2--incremental to save cost--provider anthropic --model claude-sonnet-4-5--provider openai --model gpt-3.5-turbo (if available)27 languages with full support:
Left-to-Right (LTR):
Right-to-Left (RTL):
View all supported languages:
jta --list-languagesJta produces:
.jta/ directory for consistencyAlways inform the user of:
Note: Remember to include $PROVIDER_FLAG in your commands.
# 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_FLAGSee 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
SKILL.md and 5 other files (scripts) in skills/jta of ckanner/jta.
Open the folder on GitHubat commit f23146f
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Jta this skillckanner/jta | 133 | — | ~2.4k | Automated safety check: Notes | MIT | |
| Frontend DevelopmentOpenHands/OpenHands | 90k | — | ~324 | Automated safety check: Pass | MIT | |
| LobeHub Internationalizationlobehub/lobehub | 83k | — | ~569 | Automated safety check: Pass | Custom licence | |
| Audit I18ngarfiec/Librechat-Mobile | 112 | — | ~7.2k | Automated safety check: Notes | MIT | |
| Roo Translationzgsm-ai/costrict | 4.4k | — | ~1.8k | Automated safety check: Pass | Apache-2.0 | |
| Chatbox i18n Translatorchatboxai/chatbox | 42k | — | ~508 | Automated safety check: Pass | GPL-3.0 |
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…
lobehub/lobehub
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.
garfiec/Librechat-Mobile
Audit localization / i18n coverage across the compose-resources surface (10 modules x 9 locales).
zgsm-ai/costrict
Provides comprehensive guidelines for translating and localizing CoStrict extension strings.
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.
moeru-ai/airi
Review pending AIRI translations on Crowdin in a batch, then sync them into the repository.
Works with
Categories
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.
Jta fits situations like: user mentions translating JSON; internationalization; needs to convert language files to other languages.
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.
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.
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.
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.
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.
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.
Jta is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
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.
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.
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.