.codex/skills/translate/SKILL.md
Add or update i18next translation keys across all language files by spawning translator subagents. Use when the user asks to add a new translation, update existing translations, translate text, or work with i18n keys. Triggers on "translate", "add translation", "translation key", "i18n", "localization".
npx skillsauth add bitsocialnet/bitsocial-web translateInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill orchestrates translation of i18next keys by spawning translator subagents. Each key gets its own subagent so multiple keys can be translated in parallel.
translator subagent per key.scripts/update-translations.js.Identify all translation keys from the user's request. Keys may be provided as:
upload_failed, media_hosting, fileupload_failed"For each key, check if the English value already exists in public/translations/en/default.json. If the user provided new English text, use that instead.
For each key, spawn a translator subagent (using the Task tool with subagent_type: "generalPurpose" and model: "gpt-5.4-mini"). The prompt for each subagent must include:
Example prompt for a subagent:
You are the translator subagent. Translate the following i18next key into all 36 supported languages and apply it using the project's translation script.
Key: upload_failed
English value: "Upload failed"
Make each translation sound natural in its language. Preserve the English meaning, but do not mirror English wording so literally that the result sounds awkward or robotic.
Follow your system prompt for the full workflow (create dictionary file, dry run, apply, clean up).
Parallelism rules:
After all subagents complete, summarize:
For non-translation operations, run the script directly without spawning subagents:
Use only when the string is a technical term, brand name, or placeholder.
node scripts/update-translations.js --key some_key --from en --write
node scripts/update-translations.js --key obsolete_key --delete --write
node scripts/update-translations.js --audit --dry
node scripts/update-translations.js --audit --write
| Flag | Description |
| --------------- | -------------------------------------------------------- |
| --key <name> | Translation key to update/delete |
| --map <file> | JSON file with per-language values |
| --include-en | Include English in updates (required when using --map) |
| --from <lang> | Source language to copy from (default: en) |
| --dry | Preview changes without writing |
| --write | Actually write the files |
| --delete | Delete the key from all languages |
| --audit | Find and remove unused translation keys |
ar, bn, ca, cs, da, de, el, en, es, fa, fi, fil, fr, he, hi, hu, id, it, ja, ko, mr, nl, no, pl, pt, ro, ru, sq, sv, te, th, tr, uk, ur, vi, zh
development
React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.
development
Test and debug Android wrapper features for Bitsocial Web using a local Android emulator or attached device. Manages emulator lifecycle, builds and installs the wrapper when commands are provided, runs focused checks, captures logcat diagnostics, and debugs WebView or TWA behavior. Use when the user asks to test Android, debug WebView behavior, run emulator tests, or says "test-apk".
testing
Review an open GitHub pull request, inspect bot and human feedback, decide which findings are valid, implement fixes on the PR branch, and merge the PR into master when it is ready. Use when the user says "check the PR", "address review comments", "review PR feedback", or "merge this PR".
tools
Update the one-liner release description in scripts/release-body.js by analyzing commit titles since the last git tag. Use when the user asks to update the release description, release notes one-liner, or prepare release body for a new version.