Skip to content
cccskills
FreePublished on GitHub

fill-translations

Fill missing translations in Reactive Resume’s web and mobile locale catalogs, then check that entries are synchronized and complete. It preserves existing translations and verifies catalog gaps separately from compilation and other project checks.

OriginalShow the original description

Fill missing Reactive Resume translations across all configured web and mobile locales using parallel subagents, then prove catalog completeness. Use for “fill translations”, “complete translations”, missing locale strings, or a request to ensure translations are complete before release. Cover existing gaps unrelated to the current task unless the user explicitly narrows scope. Do not activate for ordinary prose translation or a read-only audit that forbids edits.

Run score Not tested

See how to install

Good for

  • Complete missing translations before a release
  • Fill gaps across configured web and mobile locales
  • Check catalog completeness after translation work

Files included (3)

  • SKILL.md9.4 KB
  • agents/openai.yaml298 B
  • evals/evals.json2.5 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Fill translations

Finish every active catalog entry, including older gaps outside the current feature. Preserve existing translations and unrelated work. Technical completeness and linguistic quality are separate claims.

Run from the Reactive Resume checkout root. Follow its AGENTS.md, command wrappers, and current package scripts. Commands below match its Lingui 6 workflow; inspect installed --help if flags change. Use existing dependencies; no translation service or new dependency is required.

Establish the baseline

  1. Read GLOSSARY.md, both apps' lingui.config.ts, relevant package scripts, and apps/mobile/scripts/seed-locales.mjs. Derive locales, source locale, and pseudo-locale from current config rather than a fixed locale count. Currently zu-ZA is a generated pseudo-locale, not Zulu translation work.

  2. Capture git status --short and the initial diff. Save copies of catalog bytes outside the checkout so preservation checks compare against current work, not HEAD. Record pre-existing compiled locale files too. Keep staged/unstaged changes intact; no reset, checkout, clean, commit, push, or release unless separately requested.

  3. Extract all source strings in both apps, sequentially, before dispatching workers:

    pnpm --filter web lingui:extract
    pnpm --filter mobile lingui:extract
    

    The root lingui:extract currently covers web only. Web's script cleans obsolete entries and overwrites the source locale from source messages; mobile's script also seeds empty entries from web. These extraction changes are expected. Compare preservation of active nonempty target translations against the post-extraction baseline.

  4. Run both missing checks, capturing each exit code and verbose findings even when one fails:

    pnpm --filter web exec lingui check missing --mode catalog --verbose
    pnpm --filter mobile exec lingui check missing --mode catalog --verbose
    

    Inventory all missing entries by app and locale. Use installed @lingui/format-po through the owning workspace for structured inventory/edits; empty-line regexes misread multiline messages, headers, contexts, and obsolete entries. Keep msgid, context, translator comments, and source references with each work item. If no entries are missing, continue to verification without spawning translation workers.

Translate in parallel

Complete web first, seed mobile again, then translate only remaining mobile gaps. This reuses shared strings and avoids duplicate or inconsistent work.

Assign disjoint whole locale files to workers. Keep a small bounded pool within available concurrency; balance by missing-entry count, group related locales where useful, and refill slots as workers finish. Never assign two writers to the same file, even for different messages. Give workers only missing messages plus relevant existing examples and source context instead of whole catalogs when possible.

Use the environment's delegated-task tools. In T3 Code, inspect orchestrator_capabilities and use delegate_task when inherited model options require it; preserve the current provider/model/options unless the user requests another selection. Use shared-checkout tasks for disjoint files: worktrees start from committed state and can omit current uncommitted source/catalog changes. Use native subagents where supported and appropriate. If delegation is unavailable, complete the same inventory sequentially and disclose that limitation. Do not create ordinary top-level conversations.

Give each worker this brief, substituting exact paths and entries:

Fill only empty active target translations in these owned files: [paths]. Work from this post-extraction inventory: [entries/counts]. Read GLOSSARY.md, existing locale terminology, comments, and referenced UI when meaning is ambiguous. Translate natural interface language for each locale. Preserve IDs, contexts, source messages, existing nonempty translations, headers, references, and unrelated edits. Preserve named placeholders, ICU variable names/types, select keys, exact-number branches, other branches, plural #, numbered rich-text tag indexes/pairing, literal URLs/config identifiers, and brands. Adapt plural categories to the target language. Keep tags attached to their corresponding meaning when word order changes. Use the installed PO parser/serializer; review round-trip diffs. English copying is acceptable only for genuine shared words, brands, and literals, never to conceal a gap. You own translation edits only: no extraction, seeding, global formatting, compilation, commits, or cleanup. Other workers share this checkout. Return paths, filled counts, unresolved IDs, uncertainties, and checks actually run. Finish every assigned entry or identify the blocker; do not claim global completion.

The parent tracks completion against the inventory, reviews returned diffs/counts, and resolves failures. Worker summaries alone are insufficient evidence. Retry only failed files/entries; do not rerun successful batches.

After every web worker finishes, seed once from the parent:

pnpm --filter mobile exec node scripts/seed-locales.mjs
pnpm --filter mobile exec lingui check missing --mode catalog --verbose

Partition remaining mobile gaps into disjoint files and apply the same workflow. Existing nonempty mobile translations remain authoritative. Finish all workers before shared commands run.

Verify completion

First compare parsed catalog changes with the post-extraction baseline: active IDs/contexts/source messages stay intact, existing nonempty target translations stay intact, and only missing translations are filled. Review newly added messages against original source. Compare placeholder and numbered-tag structure for every filled entry using parsed ICU/message structure, not brace regexes. Inspect installed Lingui parser utilities before using them; locale plural categories may legitimately differ. A syntactically valid message can still omit a variable, so compilation alone is insufficient. Review glossary-sensitive wording and suspicious source-identical translations.

Run every gate below and record each result. These commands are for the whole catalog, not changed locales or changed source files:

pnpm --filter web exec lingui check sync --clean --overwrite
pnpm --filter mobile exec lingui check sync --clean
pnpm --filter web exec lingui check missing --mode catalog --verbose
pnpm --filter mobile exec lingui check missing --mode catalog --verbose
pnpm --filter web exec lingui compile --strict
pnpm --filter mobile exec lingui compile --strict
pnpm pdf:translations
pnpm --filter @reactive-resume/tooling test locales/section-titles.test.ts
pnpm lint:agent
pnpm format:check
git diff --check

check sync proves catalogs reflect current source; an old but fully filled catalog is insufficient. --mode catalog proves each target catalog is filled before fallback. Default missing checks and compile --strict allow fallback and cannot replace it. Compilation adds ICU syntax/bundle validation. The tooling test must actually execute its tests; zero tests is not proof.

Compilation writes locale .js files. Before compiling, back up existing output bytes and record absent output paths. After checking, restore pre-existing outputs to those exact bytes and remove only files created by this invocation. Preserve outputs that were already untracked. If another process changes an output during verification, preserve its change and report the conflict instead of overwriting it. Retain generated PDF section-title and Present-label changes, since those are maintained artifacts. Inspect final status/diff against the initial baseline.

If synchronization fails, inspect source drift and re-extract from the parent after workers finish, seed again, translate new gaps, and repeat affected gates. If missing checks fail, continue filling. Repair translation-introduced syntax/placeholder errors. Report unrelated pre-existing failures separately; do not change lint policy, fallback config, source strings, or locale lists to manufacture a pass. Never pipe away exit codes or treat a partial, timed-out, or unrun check as passing.

Stop when all configured web and mobile catalogs are synchronized, all catalog-mode missing checks return zero, changed messages preserve their runtime structure, strict compilation and derived-artifact checks pass, and unrelated work remains intact. If a blocker prevents this, report exact outstanding app/locale/message counts and failed or unrun gates; do not claim completion.

Report

Keep the handoff short: entries filled by app and locale count; final missing counts; commands/checks that passed or failed; unresolved linguistic uncertainty. State whether native-language review occurred. Mention parallelism only if workers actually ran. A clean catalog proves technical completeness, not native-language quality, browser/native behavior, deployment, or release readiness. Leave changes uncommitted unless asked otherwise.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

interview-prep

FreeSummary

Prepare for a specific interview by organizing real experience into relevant stories. Build a company brief with sources, map likely questions to examples, draft opening answers, and review the interview afterward.

  • Prepare essential answers shortly before an interview
  • Organize real experience into interview stories
  • Research a company and prepare questions to ask
reactive-resume/reactive-resume44.8KUpdated Oct 24, 2026

Track job opportunities, application stages, interview dates, and the exact documents submitted. Organize follow-ups, review progress each week, and draft recruiter replies, referral requests, thank-you notes, or withdrawal messages for the user to send.

  • Tracking applications and submitted resume versions
  • Finding overdue follow-ups and next actions
  • Reviewing job-search progress each week
reactive-resume/reactive-resume44.8KUpdated Oct 24, 2026

mock-interview

FreeSummary

Practice an interview tailored to a specific job, with a chosen format and difficulty. Answer one question at a time, handle follow-up questions, and receive scores and improvement suggestions grounded in your answers.

  • Practice answering questions for a specific job
  • Get feedback and retry after each answer
  • Rehearse with feedback held until the end
reactive-resume/reactive-resume44.8KUpdated Oct 24, 2026

Evaluate job offers by separating guaranteed pay, conditional bonuses, and estimated equity value. Compare terms, develop an evidence-based counteroffer, draft emails and call scripts, rehearse recruiter conversations, and prepare deadline extensions, acceptance, or decline messages.

  • Comparing pay and terms across job offers
  • Drafting a counteroffer email
  • Rehearsing a salary negotiation call
reactive-resume/reactive-resume44.8KUpdated Oct 24, 2026

resume-builder

FreeSummary

Turn work history, education, and skills into a complete resume for Reactive Resume. Gather missing facts through conversation and produce JSON, a structured data format, with the chosen template and layout.

  • Create a new resume through conversation
  • Convert work history into Reactive Resume JSON
  • Choose a resume template and section order
reactive-resume/reactive-resume44.8KUpdated Oct 24, 2026

Turn routine resume duties into concise bullets that show real contributions. Use focused questions to uncover achievements, verify numbers and individual responsibilities, and describe scope or concrete changes when reliable performance figures are unavailable.

  • Turning duty lists into achievement bullets
  • Describing contributions without performance metrics
  • Clarifying personal contributions to team results
reactive-resume/reactive-resume44.8KUpdated Oct 24, 2026

See all skills by reactive-resume

Report a problem with this skill