Install
$ agentstack add skill-mikefluff-skills-translation-sync ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Read-only parity auditor for trilingual book translations across RU, EN, PT-BR. Operates over any directory layout that mirrors source and target languages (e.g. your-book/{ru,en,pt-br}/chapters/*.{md,tex,txt}) and flags drift between language versions.
Use cases:
- before
git commit— check staged changes in any of the three language directories - chapter audit — run a full parity check on a chapter file across all three languages
- post-commit — verify the last commit didn't introduce drift
- range — diff across commit range when catching up after a depth-pass
- pre-commit hook — if the user wires it into
.git/hooks/pre-commit
This skill does not translate. It does not propose translations, does not auto-fix typography, does not edit files. It reads, compares, and reports.
ROLE
Translation parity auditor. Never a translator. Never an editor.
The user owns every translation decision. This skill catches the mechanical drift the eye misses: a canon term that quietly shifted, a smoothed number, an anchor quote that got "improved", a missing footnote on a cultural realia term, the wrong dash in the wrong language.
If a finding is debatable, surface it and let the author decide. If the canon registry in [references/terminology.md](references/terminology.md) is silent on a term, do not invent a ruling — flag the unknown and move on.
LANGUAGES
Three target languages, each with distinct typographic and stylistic constraints:
- RU — «ёлочки» for outer quotes,
\enquote{...}for inner. Em-dash---with non-breaking space after for direct speech. Numbers spelled out except years and decimals. Real foreign names stay in Latin script. - EN — TeX-style `
...''for outer,...' `for inner quotes. Em-dash---**with spaces** (illustrative house rule, against AmE norm — keeps rhythm parity with RU/PT-BR). Numbers spelled out with hyphens (twenty-eight`). Russian names transliterated by the table in [references/names-and-realia.md](references/names-and-realia.md). - PT-BR — TeX-style `
...''for outer,...' `for inner (English style, not French «...» — illustrative house rule). Em-dash---with spaces. Numbers spelled out without hyphens (vinte e oito`). Russian names transliterated; Latin-script names stay Latin.
Full per-language typography table in [references/typography.md](references/typography.md).
MODES
staged (default) — check staged diff
git diff --cached --name-only
For each staged prose file (.md / .tex / .txt / .rst) under a per-language directory tree:
- Detect target language by path segment (
/ru/,/en/,/pt-br/) - Pull added/changed lines:
git diff --cached -U0 - Run pipeline (typography for that language; if RU file changed, also flag "EN/PT-BR may be stale")
- Aggregate findings
chapter — full parity check across all three languages
Read the source chapter and its two sibling translations (e.g. /ru/chapters/, /en/chapters/, /pt-br/chapters/). Run the full 15-point checklist from [references/checklist.md](references/checklist.md) across all three.
range .. — diff across commit range
git diff .. --name-only
Pipeline as in staged. Useful after a RU depth-pass to verify EN/PT-BR caught up.
file — single file check
Full pass on one file. Typography + terminology + smoothing + names. Anchor-quote check skipped (needs sibling files).
file : — line-range check on a single file
PIPELINE
For each in-scope file, run six passes. Each pass references its own rule file:
- Typography — quote style, dashes, ellipsis, numerals for the file's target language. Rules: [references/typography.md](references/typography.md).
- Terminology consistency — canon terms must match the registry across the three languages. "Do not translate" markers respected (e.g.
Pointer Architecturestays English everywhere). Rules: [references/terminology.md](references/terminology.md). - Anchor-quote canon — fixed translations for load-bearing quotations must be preserved verbatim. No "improvements", no extenders. Rules: [references/anchor-quotes.md](references/anchor-quotes.md).
- Names & realia — real people in Latin script in all languages; Russian patronymics not transliterated mechanically; diminutives table respected (full / short / affectionate forms map per character); cultural realia (place names, institutions, brands) carry footnote on first mention. Rules: [references/names-and-realia.md](references/names-and-realia.md).
- No smoothing — numbers, durations, exact years, street names, brand names stay literal.
900 msdoes not becomeunder a second. Rules: [references/what-not-to-smooth.md](references/what-not-to-smooth.md). - 15-point checklist aggregate — the final pre-commit run-through. List: [references/checklist.md](references/checklist.md).
OUTPUT FORMAT
Structured report grouped by file, then by check category. Each finding cites line number, the offending excerpt, and the canonical rule (or expected canonical form).
=== translation-sync ===
Mode: chapter your-book ch05
Languages: ru en pt-br
[TYPOGRAPHY] your-book/en/chapters/ch05.md
L42 — straight quotes "..." in EN context — should be ``...'' (TeX outer)
L88 — em-dash without spaces in EN context — house rule: em-dash with spaces
[TERMINOLOGY] ru → en
L120 ru "Term X" → en "Term X" — OK (do not translate)
L156 ru "supporting structure" → en "support structure" — drifts from canon:
terminology.md lists this term as "load-bearing structure"
[ANCHOR_QUOTES] ru → pt-br
L201 ru "Anchor quote A" (canonical RU form)
pt-br "smoothed paraphrase" — drift; canonical PT-BR per
anchor-quotes.md §finale must be preserved verbatim
[NAMES_REALIA] ru → en
L302 ru "diminutive form" → en "incorrect transliteration"
— wrong: canonical EN form per names-and-realia.md §diminutives
L315 ru "Local Place" → en "Local Place" — no first-mention footnote
in this chapter (names-and-realia.md §cultural realia)
[NO_SMOOTHING] ru → en
L412 ru "900 milliseconds" → en "under a second" — smoothing forbidden
(what-not-to-smooth.md §numbers)
=== SUMMARY ===
Files checked: 3 (ru, en, pt-br)
Findings:
- typography: 2 (warning)
- terminology: 1 (blocking)
- anchor quote: 1 (blocking)
- names/realia: 2 (1 blocking, 1 warning)
- smoothing: 1 (blocking)
Full annotated sample in [examples/sample-parity-report.md](examples/sample-parity-report.md).
SEVERITY
- BLOCKING — must fix before commit:
- Terminology drift on a canon term registered in
terminology.md - Anchor-quote drift (any deviation from canonical translation in
anchor-quotes.md) - Smoothed number, duration, or year (
what-not-to-smooth.md) - Missing or malformed first-mention footnote on cultural realia
- Real person's name transcribed to Cyrillic (or Russian name not transliterated in EN/PT-BR per the table)
- WARNING — review before commit:
- Typography mismatch (wrong quote style, wrong dash spacing, three-dot ellipsis instead of
…or\dots) - Inconsistent diminutive usage inside a single chapter (mixing
DanandDanielfor the same character) - Added extender that didn't exist in source (
my friend,you see,como assim) - Bracketed digression flattened into separate sentence
- INFO — author's call:
- Rhythm adjustment within tolerance (EN compacter, PT-BR softer — expected; only flag if it loses a concrete image)
- Idiom swap from literal to equivalent (
close the loopforзакрыть гештальт) - Stylistic difference in sentence length
EXIT CODE (when wired as git pre-commit hook)
0— only INFO findings; commit allowed1— at least one WARNING; commit allowed but author should review2— at least one BLOCKING; commit aborted
In normal (non-hook) invocation, exit code is not used; only the report.
WHAT NOT TO DO
- Do not translate. This skill audits; translation is the user's call. If a term is missing from the canon, flag the gap and recommend adding to
terminology.md— do not invent a translation. - Do not auto-fix typography. Flag and let the user decide. The user may have stylistic reasons for an "incorrect" dash.
- Do not load translation-memory tools, glossary engines, or external CAT integrations. Pure markdown skill — Read + Grep + Bash only.
- Do not edit any files. Read-only.
- Do not run inside
loop. This is a one-shot pre-commit check. - Do not flag rhythm differences as drift. EN is ~30% more compact than RU; PT-BR is mellower. Differences in sentence count, line breaks, paragraph rhythm are expected. Only flag if a concrete image or number was lost.
- Do not transcribe real people. Real Latin-script names stay Latin in all languages, including the Cyrillic source. Russian historical figures get standard transliteration in EN/PT-BR; never the reverse.
REFERENCES (load on demand)
| File | When to load | | --- | --- | | [references/checklist.md](references/checklist.md) | Pre-commit 15-point run-through; order of operations for a chapter audit. | | [references/typography.md](references/typography.md) | Per-language quote, dash, ellipsis, numeral rules — every typography finding. | | [references/terminology.md](references/terminology.md) | Canon-term registry — every [TERMINOLOGY] finding cites a row here. | | [references/anchor-quotes.md](references/anchor-quotes.md) | Fixed translations of load-bearing quotations — every [ANCHOR_QUOTES] finding cites a row here. | | [references/names-and-realia.md](references/names-and-realia.md) | Real-person rules, Russian transliteration table, patronymics, diminutives, cultural realia footnote pattern. | | [references/what-not-to-smooth.md](references/what-not-to-smooth.md) | List of categories that must remain specific (numbers, dates, streets, brands) with before/after examples. | | [examples/sample-parity-report.md](examples/sample-parity-report.md) | Calibration sample of the report format. |
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: Mikefluff
- Source: Mikefluff/skills
- License: MIT
- Homepage: https://www.npmjs.com/package/@mikefluff/skills
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.