| name | exam-router |
| description | Use when the user asks to prepare for, practice, or learn about an English exam (IELTS, TOEFL iBT, B1 Preliminary, B2 First, C1 Advanced, C2 Proficiency) without naming a specific task — e.g. "help me prepare for TOEFL", "what's in the C1 Advanced reading paper?", "test my English level". Resolves exam + CEFR level + section, explains formats from reference data, runs a quick level diagnostic, and hands off to the matching macro-skill (writing-evaluator, speaking-coach, reading-use-of-english, listening-trainer, vocabulary-builder, study-planner).
|
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
- 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.
- Load
${CLAUDE_PLUGIN_ROOT}/data/exam-formats/<exam-id>.md. Answer
format questions directly from it — never from memory.
- Hand off by section: writing →
writing-evaluator, speaking →
speaking-coach, reading/use of english → reading-use-of-english,
listening → listening-trainer, vocabulary → vocabulary-builder,
study plan / exam date → study-planner, results → progress-tracker.
- Level diagnostic (when asked "what's my level" or via /assess-level):
- Suggest a next step grounded in the user's goal (target exam, weakest
section, or
/daily-drill).
Boundaries
- The plugin's practical floor is B1. Drills, descriptors and
calibration anchors start at B1; A1/A2 exist only as diagnostic labels.
If a diagnostic lands below B1 (or a user asks for A1/A2 practice), say
the estimate plainly, explain that guided practice here begins at B1, and
frame B1 as the working target rather than routing to content that
doesn't exist.
- Only the seven exams in the Supported-exams table are supported. If
the user names a different English exam (Duolingo English Test, PTE
Academic, OET, LanguageCert, Cambridge A2 Key / B1 Business, etc.), say
plainly it isn't directly supported, name the closest supported exam whose
skills transfer, and offer that — never present another exam's format as
if it were the requested one.
- Formats come from the reference files, not memory; if a file and the user
disagree, flag it rather than guessing.
- Level estimates are indicative, never official.
- Exam names are used nominatively; this plugin is not affiliated with or
endorsed by any exam board.
- Never reproduce official exam content.