From fluent
Runs interactive vocabulary drill sessions using spaced repetition, flashcard prompts across recognition, production, and cloze modes, with per-answer scoring and batched DB updates via Python/Bash. Triggered by /vocab.
npx claudepluginhub m98/fluent --plugin fluentThis skill is limited to using the following tools:
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.
Runs daily spaced-repetition review queue using SM-2 algorithm. Pulls due items for error patterns, vocabulary, grammar; generates exercises, evaluates responses, updates intervals. Invoke with /review.
Conducts multi-round deep research on GitHub repos via API and web searches, generating markdown reports with executive summaries, timelines, metrics, and Mermaid diagrams.
Share bugs, ideas, or general feedback.
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.
Trigger this skill only when the learner types /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 /review or /learn instead.
python3 .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 /setup and stop.
Priority order:
spaced-repetition.review_queue.today with item_type == "vocabulary".mistakes-db.json where category == "vocabulary" and mastery_level <= 2.learner-profile.focus_areas.Limit: spaced-repetition.daily_limits.review_items_per_day (default 20).
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:**
Use the feedback-formatter skill's template. Score out of 10, tag severity.
Track the answer for the end-of-session DB update:
review_results[] with quality = floor(score / 2) (see sm2-calculator skill).new_vocabulary[].errors[].Do not call update-db.py after every word — batch at session end.
## 📚 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"}! 🌟
Call the db-updater skill's workflow — one update-db.py invocation with:
session_id, date, duration_minutescommand_used: "/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 wordsWord 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 🎯
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 → …)
📚 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! 🌟
feedback-formatter./vocab.