Vocabulary Drill Session
SkillAI & modelsRun an interactive vocabulary drill session with flashcard-style prompts, spaced repetition, and per-answer feedback. Triggered only when the learner types /fluent-vocab. Reads spaced-repetition / mistakes / mastery DBs to pick words, presents one word at a time, scores each answer, and calls fluent-db-updater at the end.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Vocabulary Drill Session skill
What this skill tells your AI
The instructions your AI receives, as published by m98/fluent in .claude/skills/fluent-vocab/SKILL.md and read by ahel’s review.
Overview
Flashcard-style vocabulary practice using spaced repetition. One word at a time, immediate feedback, DB update at the end. Interleaves three modes (recognition, production, cloze) to force active recall rather than passive re-reading.
When to Use
Trigger this skill only when the learner types /fluent-vocab. The skill is gated with disable-model-invocation: true — a false-positive auto-trigger would launch a 15-min interactive session and mutate 6 JSON databases. Not worth the risk.
Skip this skill if no vocabulary items are due and no new words are queued — offer /fluent-review or /fluent-learn instead.
Instructions
1. Load vocabulary data
python3 "${CLAUDE_PLUGIN_ROOT:-${CLAUDE_PROJECT_DIR:-.}}/.claude/hooks/read-db.py"
If the helper is unavailable, resolve <data_dir> via fluent_paths.data_dir() then read:
<data_dir>/spaced-repetition.json<data_dir>/mistakes-db.json<data_dir>/mastery-db.json<data_dir>/learner-profile.json(for target_language, name, level)
If any are missing, direct the learner to /fluent-setup and stop.
2. Select words
Priority order:
- Items in
spaced-repetition.review_queue.todaywithitem_type == "vocabulary". - Words from
mistakes-db.jsonwherecategory == "vocabulary"andmastery_level <= 2. - New high-frequency words matching
learner-profile.focus_areas.
Limit: spaced-repetition.daily_limits.review_items_per_day (default 20).
3. Present one word at a time
Rotate the three modes so the session is not monotonous.
Recognition (target_language → native):
## Word {N}/{total}
**{target_language}:** {word}
**Context:** {example_sentence}
**What does it mean in {native_language}?**
**Type your answer:**
Production (native → target_language):
## Word {N}/{total}
**{native_language}:** {word}
**Use it in a sentence (optional).**
**How do you say this in {target_language}?**
**Type your answer:**
Cloze (fill in the blank):
## Word {N}/{total}
**Complete the sentence:**
{target_language sentence with _____ where the word goes}
**Type the missing word:**
4. Feedback after each answer
Use the fluent-feedback-formatter skill's template. Score out of 10, tag severity.
Track the answer for the end-of-session DB update:
- Add to
review_results[]withquality = floor(score / 2)(seefluent-sm2-calculatorskill). - If the learner met a new word, stage it for
new_vocabulary[]. - If the learner made an error, stage it for
errors[].
Do not call update-db.py after every word — batch at session end.
5. Session summary
## 📚 Vocabulary Session Complete!
**Words Reviewed:** {N}
**Accuracy:** {X}%
**New Words Learned:** {Y}
**Words Mastered (→ level 5):** {Z}
**Strong:** {list words with mastery 4-5}
**Need more practice:** {list words with mastery 0-2}
**Next review:**
- Tomorrow: {count} words
- This week: {count} words
{target-language "well done"}! 🌟
6. Update all databases
Call the fluent-db-updater skill's workflow — one update-db.py invocation with:
session_id,date,duration_minutescommand_used: "/fluent-vocab"skills_practiced: ["vocabulary"]skill_scores.vocabulary:{exercises, correct, time_minutes}errors[],new_vocabulary[],review_results[]collected during the sessionfocus_next_session[]— top 2-3 weak words
Examples
Example 1 — recognition drill
Word 1/15
Dutch: de keuken
Context: "De keuken is klein maar mooi."
What does it mean in English?
Type your answer:
Learner: "the kitchen"
✅ Exactly.
Answer: the kitchen Meaning: A room used for cooking and food preparation. Example: "De keuken is klein maar mooi." (The kitchen is small but pretty.)
Score: 10/10 🎯
Example 2 — production with error
Word 7/15
English: to write
How do you say this in Dutch?
Learner: "schrijven"
✅ Correct — infinitive form.
Now: can you also give the first-person present? (I write → …)
Example 3 — session end summary
📚 Vocabulary Session Complete!
Words Reviewed: 15 Accuracy: 80% (12/15) New Words Learned: 3 Words Mastered: 1
Need more practice: de sleutel, het raam, gisteren
Next review: Tomorrow 4 words, this week 8 words.
Goed gedaan! 🌟
Critical Rules
- One word at a time. Wait for the learner's answer before showing the next.
- Immediate feedback after each — use
fluent-feedback-formatter. - Mix modes. Don't drill 20 recognition prompts in a row — interleave for discrimination.
- Use target language for greetings + transitions when the learner is B1+; for A1-A2 mix target + native.
- Never update the DBs mid-session — batch at end.
- Never auto-invoke. This skill is gated; must fire only on explicit
/fluent-vocab.
Tips for the Learner (append if they seem tired or unsure)
- Review daily for best retention — spaced repetition depends on it.
- Focus time on weak words (mastery 0-2), not already-strong ones.
- Use words in sentences to build contextual memory.
- Say words out loud even though you're typing.
Signals
- GitHub stars
- 405
- Forks
- 58
- Last commit
- Jun 2026
Advanced
- Catalog kind
- skill
- Gateway key
fluent-vocab- Source
- github.com/m98/fluent