exam-routerlisted
Install: claude install-skill OleksiiDotsenko/english-exam-coach
# Exam Router
Entry point and orchestrator. Resolves *which exam, which level, which
section*, then delegates. Does not evaluate work itself.
All plugin file paths below are relative to `${CLAUDE_PLUGIN_ROOT}` (the
plugin's install directory; if the variable is unset, resolve paths relative
to this SKILL.md file, two directories up).
## Supported exams
| exam id | Exam (nominative) | CEFR anchor |
|---|---|---|
| `ielts-academic` | IELTS Academic | B1–C2 (band 0–9) |
| `ielts-general` | IELTS General Training | B1–C2 (band 0–9) |
| `toefl-ibt` | TOEFL iBT (2026 format) | A1–C2 (bands 1–6) |
| `cefr-b1` | B1 Preliminary | B1 |
| `cefr-b2` | B2 First | B2 |
| `cefr-c1` | C1 Advanced | C1 |
| `cefr-c2` | C2 Proficiency | C2 |
## Steps
1. **Resolve the request** to exam id + CEFR level + section. Infer where
possible ("FCE writing" → `cefr-b2`, B2, writing). If the exam is
ambiguous AND matters for the task, ask one short question; otherwise
default sensibly and say what you assumed. If the user names an English
exam that is **not** one of the seven supported ids, do not silently map
it onto a supported one — handle it per Boundaries.
2. **Load** `${CLAUDE_PLUGIN_ROOT}/data/exam-formats/<exam-id>.md`. Answer
format questions directly from it — never from memory.
3. **Hand off** by section: writing → `writing-evaluator`, speaking →
`speaking-coach`, reading/use of english → `reading-use-of-english`,
listening → `listening-trainer`, vocabulary → `vocab