Getting it into your agent
This one installs as part of its plugin. Adding the marketplace and installing the plugin brings it with everything else the plugin ships.
/plugin marketplace add OleksiiDotsenko/english-exam-coach/plugin install english-exam-coachWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/oleksiidotsenko/english-exam-coach/listening-trainer)<a href="https://agentmods.dev/skills/oleksiidotsenko/english-exam-coach/listening-trainer"><img src="https://agentmods.dev/badge/skills/oleksiidotsenko/english-exam-coach/listening-trainer/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/oleksiidotsenko/english-exam-coach/listening-trainer"><img src="https://agentmods.dev/badge/skills/oleksiidotsenko/english-exam-coach/listening-trainer.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00118 | $0.01659 |
| Opus 5 | $0.00059 | $0.00830 |
| Sonnet 5 | $0.00024 | $0.00332 |
| Haiku 4.5 | $0.00012 | $0.00166 |
Grade C, and why
listening-trainer scanned grade C with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 12d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Recursive force deletehighDestructive command
rm -rf with a variable or a broad path is one typo away from removing the wrong tree.
once. Delete the directory (`rm -rf "$d"`) when the drill ends. How it starts
The opening of the file, as written. The whole thing — 121 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Listening Trainer
Text-first listening practice with optional zero-dependency TTS. Paths are
relative to ${CLAUDE_PLUGIN_ROOT} (if unset, resolve relative to this file).
When to use
The user asks to drill listening, or brings their own audio/transcript and wants exam-style questions on it.
Steps
-
Identify exam + level + part. Load
data/exam-formats/<exam-id>.mdfor the part's shape (speakers, question count, question types). Seed shapes:data/item-bank/seed/listening-scripts.md. -
Generate an ORIGINAL script (dialogue or monologue per the part) and its questions. Preview timing is exam-conditional: IELTS and the CEFR B1–C2 (Cambridge) exams give time to read the questions before the audio, so show the questions first; TOEFL iBT does not — the questions come after the recording (listen/take notes → then answer), so for TOEFL keep the questions hidden until playback ends. Keep the script hidden until the drill is scored. Match the script to the recording's real duration: a spoken passage runs ~130–160 words per minute, so a ~4-min monologue/interview is ~550–650 words and a short 30–40 s exchange is ~80–110 words. A script that is too short makes the drill easier than the real test. Count the script mechanically before delivering it — write it to a temp file and run
wc -w(see the reading skill for the pattern); a self-estimated count is the failure this guards against. -
Deliver the audio, best available mode. First, set the number of plays from the exam: IELTS and TOEFL iBT play each recording once; the CEFR B1–C2 (Cambridge) exams play each recording twice (their format files say so). Honor that count in every mode below — "once" means once for IELTS/TOEFL and twice for
cefr-b1…cefr-c2.- TTS (optional, macOS): if the
saycommand exists (command -v say), speak the script at natural speed for the exam's number of plays. First strip the formatting: remove markdown (**,>) and the speaker labels (e.g.> **Receptionist:**) so the synthesizer voices only the spoken words, not the markup. Write the cleaned, label-free plain text to a temp file in a temp location (e.g.tmp="$(mktemp -t listening)"), then play it, e.g.say -f "$tmp"(orsay -o "$tmp.aiff" -f "$tmp" && afplay "$tmp.aiff"). For a multi-speaker script, split it by speaker and feed each speaker's turns to a separatesay -v <voice>call so the voices alternate. Delete the temp script/audio after playback (rm -f "$tmp" "$tmp.aiff") so nothing is left on disk. - Per-item mode (TOEFL Listen and Choose a Response): these are not
one script — each item is an independent ~5-second prompt heard once,
with the four options read on screen, not aloud. Pre-render every
prompt to its own file before the drill starts, then play them one at
a time, collecting the answer after each and never replaying:
Pre-rendering matters because synthesis pauses would otherwise leak thinking time into a task whose whole difficulty is that it goes by once. Delete the directory (d="$(mktemp -d)"; i=1 # one say -o per prompt, then: afplay "$d/item$i.aiff"rm -rf "$d") when the drill ends. - User-side audio: the user has any TTS or a practice partner → give them the script to synthesize/have read aloud, for the exam's number of plays.
- Fallback (always works): timed read-through — reveal the script, instruct the user to read it (once for IELTS/TOEFL, twice for the CEFR exams) at natural pace without scrolling back, then hide-and-answer. Say plainly this trains reading-listening hybrid comprehension, not pure listening.
- TTS (optional, macOS): if the
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 12d ago First seen · 121 lines · 118 tokens per session scan C 05e2e22f004a
listening-trainer is a skill published in the GitHub repository OleksiiDotsenko/english-exam-coach (8 stars, last pushed 1mo ago), licensed MIT. It adds 118 tokens to every session and 1,659 once invoked, about $0.0006 per session on Opus 5. A static security scan graded it C with 1 finding (recursive force delete). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
oral-english-practice
A Claude Code skill that stores and analyses spoken-English practice completed in the Claude app. The app handles the conversation; this skill keeps reports, scores, mistakes, progress trends, and the next practice focus.
language-coach
Language coaching for every prompt. Use when the user runs /language-coach with any sub-command (setup, native, target, style, response, goal, mode, focus, band, level, status, off, on). Routes to the correct action based on the argument provided.
language-review
Analyze language learning progress from local data. Use when the user runs /language-coach:language-review or asks to review their progress, see their band history, check improvement trends, or analyze their IELTS score data.
learning-and-development
Builds capability — skills gaps, career frameworks, training that transfers to the job, and internal mobility. Use this to design a career ladder, close a capability gap, decide whether to build or hire a skill, structure onboarding into a role, or work out why training keeps failing to change anything.
diagnose
A short question-based assessment of a pilot's current skill level. It produces a profile and saves it in the connected browser or database.
lesson-close
A workflow for finishing the day's lesson file, recording its status and duration, then saving it to the personal-guide GitHub repository.