bilingual-courseware — Claude Code skill: what it does, how to install
Maintains bilingual university course materials using a confirmed terminology glossary, pedagogical equivalence checks, and drift detection.
npx skills add YujxZJCN/teaching-skills --skill bilingual-courseware -a claude-codeWhat bilingual-courseware does
This skill organizes a four-agent team to manage paired course materials across two languages. While configured for English and Simplified Chinese by default, it handles any language pair when supplied with conventions. Translating artifacts follows a confirmed terminology dictionary: glossary_keeper_agent extracts terms, while translator_agent handles syllabus and slide translations.
Translation stops immediately whenever an unconfirmed term appears. The professor must confirm candidate terms before work resumes, avoiding improvised vocabulary that confuses students. The parallel mode monitors updates across versions without automated merging, while terminology_auditor_agent conducts read-only scans across all materials to catch stray or inconsistent terms.
What it helps with
- extract and build a versioned course terminology glossary
- translate syllabi and slides while preserving pedagogical demands
- detect drift and version divergence across language pairs
- audit slides and exams for glossary consistency in read-only mode
Example prompts for the agent
- Build a terminology glossary for my machine learning course
- Translate my syllabus into Chinese, with the English version as original
- Check whether my slides and exam use the glossary terms consistently
How to install bilingual-courseware
1Skills CLI (Vercel)
npx skills add YujxZJCN/teaching-skills --skill bilingual-courseware -a claude-code2Manually: put the files in place
~/.claude/skills/bilingual-courseware/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/bilingual-courseware/
1Skills CLI (Vercel)
npx skills add YujxZJCN/teaching-skills --skill bilingual-courseware -a codex2Manually: put the files in place
.agents/skills/bilingual-courseware/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add YujxZJCN/teaching-skills --skill bilingual-courseware -a cursor2Manually: put the files in place
.cursor/skills/bilingual-courseware/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install YujxZJCN/teaching-skills bilingual-courseware2Manually: put the files in place
.github/skills/bilingual-courseware/SKILL.md1Skills CLI (Vercel)
npx skills add YujxZJCN/teaching-skills --skill bilingual-courseware -a gemini-cli2Platform CLI
gemini skills install https://github.com/YujxZJCN/teaching-skills --path bilingual-coursewareManually: put the files in place
.devin/skills/bilingual-courseware/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add YujxZJCN/teaching-skills --skill bilingual-courseware -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about bilingual-courseware
How to install bilingual-courseware in Claude Code?
Run npx skills add YujxZJCN/teaching-skills --skill bilingual-courseware -a claude-code.
What does bilingual-courseware do?
It coordinates four specialized agents to maintain terminology consistency, translate teaching artifacts, and sync paired course materials.
Why does translation pause on new terms?
The glossary is treated as a binding contract. Any unconfirmed term pauses translation until the professor reviews and approves the candidate pair.
Source text
SKILL.md · MIT
---
name: bilingual-courseware
description: "Bilingual course-material maintenance for university professors — default EN ⇄ 简体中文, language-pair agnostic. 4-agent team covering the course terminology glossary (the contract every translation binds to), glossary-bound translation with pedagogical-equivalence checks, paired-version synchronization with drift detection, and read-only terminology consistency audits. Triggers on: translate course materials, bilingual course, English-medium instruction, EMI, terminology glossary, Chinese version, parallel syllabus, 双语教学, 双语课程, 全英文授课, 术语表, 专业术语, 翻译课件, 中英对照, 中文版."
metadata:
version: "1.0.0"
last_updated: "2026-06-10"
status: active
pipeline_stage: support
related_skills:
- course-designer
- lesson-builder
- course-publisher
- media-scripter
---
# Bilingual Courseware — Terminology & Paired-Version Team
Maintains bilingual course materials with terminology discipline. Other skills produce
the artifacts; this skill keeps their two language versions saying the same thing — same
terms every time, same pedagogical demand on both sides, and a recorded pairing so that
neither version quietly outruns the other. Default pair is EN ⇄ 简体中文 (the conventions
file covers it deeply); any pair works with professor-supplied conventions.
> **Prime rule:** the glossary is the contract. Translation without a confirmed glossary
> produces drift — the same concept rendered three ways across a semester, and 90
> students learning the wrong standard term. Glossary-first is this skill's
> blueprint-first rule: no term-bearing material is translated until its terms are
> confirmed, and new terms encountered mid-translation pause for confirmation rather
> than being improvised inconsistently.
## Quick Start
```
Build a terminology glossary for my machine learning course
Translate my syllabus into Chinese — the English version is the original
把这门课的教学大纲翻译成英文,专业术语要统一
I updated the English syllabus to v2 — bring the Chinese version up to date
检查我所有课件里的术语是否一致
Check whether my slides and exam use the glossary terms consistently
```
## Modes
| Mode | Trigger intent | Output |
|------|---------------|--------|
| `glossary` | "Build/extend a glossary", new course going bilingual, new unit's terms, 术语表 | Course terminology glossary: candidate terms extracted from course materials, translations proposed with authority notes, professor confirms each entry; maintained artifact, versioned |
| `translate` | "Translate X", 翻译课件 / 中文版 — one artifact: outcomes, syllabus, slides source, handouts, exam instructions | Glossary-bound translation + pedagogical-equivalence pass + divergence log + pairing-registry entry |
| `parallel` | "Update the other version", "keep both in sync", 中英对照 maintenance | Paired-version create/update: change one side → propagate to the other; drift report when versions evolved independently |
| `check` | "Are my terms consistent?", pre-semester sweep, 检查术语 | Read-only terminology consistency audit across ALL course materials in one language or across the pair — every finding located, no rewrites |
**Mode dispatch rule:** a translation request for an artifact whose domain terms are not
yet covered by a confirmed glossary routes through `glossary` first — on the new terms
only, incrementally, never a restart. Detect intent in any language.
### Does NOT trigger
| Scenario | Use instead |
|----------|-------------|
| Writing the original materials (syllabus, lessons, exams, scripts) | The producing skill: `course-designer`, `lesson-builder`, `assessment-architect`, `media-scripter` |
| Translating student-facing communications (announcements, emails, FAQ) | `course-publisher`, binding to this skill's glossary |
| General translation unrelated to a course | Out of scope for this suite |
## Agent Team (4)
| Agent | Role |
|-------|------|
| `glossary_keeper_agent` | Extracts candidate terms, proposes pairs with authority notes, runs batched professor confirmation, maintains the versioned glossary other skills consume |
| `translator_agent` | Glossary-bound translation with pedagogical-equivalence checks: cultural accessibility, difficulty shift, register, length expansion; logs every deliberate divergence |
| `parallel_sync_agent` | Pairing registry, change propagation, three-way drift reports; professor chooses merge direction — never auto-merges |
| `terminology_auditor_agent` | Read-only consistency audit: glossary violations, intra-language inconsistency, untranslated strays, script/punctuation discipline — every finding located |
## Workflow (`translate` mode)
```
Phase 0 GLOSSARY GATE — check the confirmed glossary covers the artifact's domain
terms. Missing or stale coverage → `glossary` mode on the new
terms only (incremental — not a restart of the glossary)
Phase 1 DRAFT — translator_agent produces the glossary-bound translation with
pedagogical-equivalence notes: examples that don't cross
cultures flagged with a proposed local equivalent; instructions
whose difficulty shifts in translation flagged
Phase 2 TERM AUDIT — terminology_auditor_agent passes over the draft: every
confirmed term rendered exactly, near-misses are defects
🧑 checkpoint: translation + divergence log — every deliberate non-literal
choice listed with location and reason; the professor approves or redirects
Phase 3 REGISTER — parallel_sync_agent records the pairing: which exact version
of the source this translation matches, in the sync register
and passport artifacts[]
```
`glossary` mode runs glossary_keeper end-to-end (extract → propose → 🧑 batched
confirmation → version). `parallel` mode diffs the changed side, translates the delta
through Phases 1–2, patches the pair, and updates the register; independently-evolved
sides produce a drift report instead of a patch. `check` mode runs
terminology_auditor_agent alone, read-only, findings located like `submission-auditor`.
## Iron rules
1. **Glossary-first.** No translation of term-bearing material without confirmed
glossary coverage. A new term encountered mid-translation pauses for confirmation —
it is never improvised inconsistently, because the improvisation becomes the term
students learn.
2. **The professor confirms terminology.** Discipline terminology is the professor's
domain. Candidate pairs ship with an authority basis — standard textbook usage,
national standards-body patterns, common EMI practice — but their status is
`[NEEDS PROFESSOR INPUT]` until confirmed. A wrong standard term taught to 90
students is expensive; a confirmation batch costs minutes.
3. **Pedagogical equivalence over literalism.** Translated artifacts must make the same
pedagogical demand, not the same words. Divergences are deliberate and logged —
location, what changed, why — never accidental. Assessment translations are checked
for difficulty shift: an exam that is harder in one language is an equity defect,
not a style choice.
4. **Version pairing is recorded.** Every translated artifact records the exact source
version it matches. Sync status is checkable at any time; drift is loud. The
`parallel` mode exists because v2 of the English syllabus WILL forget the Chinese
one — silence is the failure mode, the register is the cure.
5. **Language-pair agnostic, EN⇄zh-CN tuned.** `references/emi_conventions.md` covers
the default pair deeply — register, punctuation, authority hierarchy, code-switching.
Other pairs work with professor-supplied conventions, recorded per course; the skill
never pretends its zh-CN depth transfers automatically.
## Outputs
- `bilingual/glossary.md` — the confirmed terminology glossary (from
`templates/glossary_template.md`), versioned, consumed by other skills
- `bilingual/<artifact>_<lang>.md` — translated artifacts, each with its divergence log
- `bilingual/sync_register.md` — pairing registry (from
`templates/sync_register_template.md`): what matches what, at which version
- `bilingual/drift_report.md` (`parallel` mode, when sides evolved independently)
- `bilingual/terminology_audit.md` (`check` mode) — located findings, ordered by
student impact
- Passport: paired artifacts cross-referenced in `artifacts[]`
## References
- `references/emi_conventions.md` — EN⇄zh-CN register mapping, punctuation/typography,
terminology authority hierarchy, assessment-translation equity, layout expansion,
classroom code-switching conventions
- `templates/glossary_template.md`
- `templates/sync_register_template.md`
- Shared: `shared/course_passport_schema.md` (note `course.language_of_instruction`),
`shared/checkpoint_protocol.md`, `shared/quality_gate_protocol.md`
© YujxZJCN · MIT · YujxZJCN/teaching-skills