Use when translating in bilingual mode — produces Chinese primary + English blockquote markdown. Single-pass, no multi-round review. Requires translation_mode=bilingual in style-decisions.json.
Single-pass bilingual translation. Produces documents where each Chinese paragraph is followed by the English original as a blockquote.
Output format:
中文翻譯段落文字。
> Original English paragraph text here.
Core principle: Draft-first with bilingual_prep.py placeholders. Write directly to bilingual output dir. No multi-round review loop.
Before ANY action, create tasks using TaskCreate:
Verify required files:
glossary.jsonstyle-decisions.json with translation_mode.mode == "bilingual"chapters.json with "mode": "bilingual"
If any missing or mode mismatch, stop and ask user to run /init-doc first.Resolve target files from $ARGUMENTS or auto-select using progress script:
uv run python scripts/progress_read.py --progress-file data/translation-progress-bilingual.json --next 5 --json
not_started files by default. If user explicitly requests resume → use --status in_progress.uv run python scripts/progress_edit.py --progress-file data/translation-progress-bilingual.json --create-if-missing
Display selected files to user in Traditional Chinese before proceeding.
Verification: Target file list confirmed; all required files and mode settings present.
uv run python scripts/validate_glossary.py
uv run python scripts/term_read.py --fail-on-missing --fail-on-forbidden
If preflight fails, stop and fix terminology first.
Verification: Both commands exit 0.
For each target file, determine the source English markdown path from data/markdown/ (the _pages.md source referenced in chapters.json).
Determine the output path: docs/src/content/docs/bilingual/<section>/<file>.md (from chapters.json + mode=bilingual).
Run bilingual_prep.py to generate the draft with placeholders in .claude/skills/bilingual-translate/.state/drafts/:
uv run python scripts/bilingual_prep.py <SOURCE_FILE> <DRAFT_FILE>
Verification: Draft file exists and contains <!-- TODO: 翻譯 --> placeholders.
For each target file:
in_progressglossary.json, and style-decisions.json<!-- TODO: 翻譯 --> placeholder: replace it with the Chinese translation of the English text in the immediately following blockquote line(s)title to Traditional Chinese; add bilingual: true if not present<!-- TODO: 翻譯 --> left untranslated?>) preserved exactly — no modifications?docs/src/content/docs/bilingual/<path>uv run python scripts/progress_edit.py --progress-file data/translation-progress-bilingual.json --file <TARGET_FILE> --status completed
Verification: Self-review checklist passes; output file written; progress JSON updated.
After all files in the batch are processed:
git status --short and verify batch scope before staging.translation-progress-bilingual.jsonglossary.json if changedstyle-decisions.json if changedgit commit -m "progress (bilingual): X/Y"
Where X/Y is current completion from uv run python scripts/progress_read.py --progress-file data/translation-progress-bilingual.json --json.
Verification: git log -1 shows progress commit.
uv run python scripts/validate_glossary.py
uv run python scripts/term_read.py --fail-on-missing --fail-on-forbidden
Mark final verification task completed.
Verification: Both commands exit 0; all tasks completed.
| Thought | Reality |
|---|---|
| "Modify the English blockquote lines" | Never alter > lines. They are source text. |
| "Skip bilingual_prep, I'll format manually" | bilingual_prep ensures consistent structure. Always use it. |
| "translation-progress-bilingual.json doesn't exist, skip tracking" | Create it with progress_edit.py --create-if-missing. |
| "One file done, no need for checkpoint" | Every completed batch gets a commit. |
| "Skip terminology preflight, it was fine last time" | Glossary changes between runs. Always preflight. |
Stop when:
/bilingual-translate
/bilingual-translate docs/src/content/docs/bilingual/rules/combat.md
/bilingual-translate all