From fluent
Runs main adaptive language-learning session mixing writing, speaking, vocabulary, and reading exercises based on learner level, weaknesses, and due reviews. Triggered only by /learn; routes to sub-skills or interleaves.
npx claudepluginhub m98/fluent --plugin fluentThis skill is limited to using the following tools:
The flagship command. Interleaves skills, adapts difficulty per answer, and covers the whole evidence-based loop: active recall → immediate feedback → spaced repetition → tracking. Typically runs 15-20 min, mixing 2-3 patterns to force discrimination.
Displays language learning progress dashboard with statistics, mastery levels, streak, achievements from JSON databases. Triggers on /progress or queries like 'show my progress'.
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.
The flagship command. Interleaves skills, adapts difficulty per answer, and covers the whole evidence-based loop: active recall → immediate feedback → spaced repetition → tracking. Typically runs 15-20 min, mixing 2-3 patterns to force discrimination.
Trigger this skill only when the learner types /learn. The skill is gated with disable-model-invocation: true — an ambiguous auto-trigger would launch a 20-min interactive session and mutate 6 JSON databases.
Skip this skill the very first time a learner runs the system — route to /setup instead.
python3 .claude/hooks/read-db.py
Need all 6 DBs. If any missing, direct the learner to /setup and stop.
learner-profile.current_streak_dayscomputed.due_reviews_countmistakes-db.error_patterns where mastery_level <= 2 (descending by frequency)progress-db.weekly_summarymastery-db.skills_mastery.{skill}.last_practiced# {greeting in target language}, {name}! 👋
**Today's Status:**
- 🔥 Streak: {X} {day/days}
- 📚 Review items due: {Y}
- 🎯 Focus area: {weakest skill or top weak pattern}
- ⭐ Level: {current} → {target} ({progress}%)
**What would you like to practice today?**
1. 📝 Writing (emails, letters, forms)
2. 🗣️ Speaking (typed conversation)
3. 📖 Vocabulary (flashcard drills)
4. 👀 Reading (comprehension)
5. 🔄 Spaced Review (today's due items)
6. 🎲 Surprise me! (adaptive mix)
**Type a number or skill name:**
writing, speaking, vocab, reading, review). Those skills cover everything needed; this skill's job here is just to dispatch.Plan a 20-min session:
Run one exercise at a time with immediate feedback via feedback-formatter.
Use session-analyzer to choose which patterns to target.
After every 3-4 exercises, check rolling accuracy:
Formula reference:
if mastery_level <= 1:
difficulty = "easy"
elif mastery_level == 2:
difficulty = "medium" if recent_accuracy > 0.60 else "easy"
elif mastery_level == 3:
difficulty = "medium" if recent_accuracy > 0.70 else "medium"
elif mastery_level >= 4:
difficulty = "hard" if recent_accuracy > 0.80 else "medium"
Writing: sentence completion, translation, error correction, full email, reordering.
Speaking: personal Qs, picture description, role-play, phonetic typing.
Vocabulary: recognition, production, cloze, associations, synonym matching.
Reading: short text + comprehension, cloze paragraph, true/false, summarization.
Use feedback-formatter template. Score 0-10 + severity tag. Stage for end-of-session update.
Also prompt the learner to retype the correct form after a critical mistake — motor memory helps:
Now type the correct version yourself: "{correct_sentence}"
## 🎉 Session Complete!
**Today's Stats:**
- ⏱️ Duration: {X} min
- ✅ Exercises: {Y}
- 📊 Accuracy: {Z}%
- 📈 Improvement: +{N}% from start
**Breakthroughs:** ✨
- {what mastered or improved}
**Next Time Focus:**
- {what to practice next}
**Streak:** 🔥 {X} {day/days}! {motivational line}
{goodbye in target language}! 👏
Then use the db-updater skill:
command_used: "/learn"skills_practiced: [all skills touched]skill_scores per skillerrors[], new_vocabulary[], review_results[]breakthroughs[], focus_next_session[], session_notesSave exchange to /results/learn-session-{NNN}.md.
Goedemorgen, Mohammad! 👋
Today's Status:
- 🔥 Streak: 6 days
- 📚 Review items due: 6
- 🎯 Focus area: formal_informal confusion (5 total occurrences)
- ⭐ Level: A1 → A2 (38%)
What would you like to practice today?
- 📝 Writing (emails, letters, forms)
- 🗣️ Speaking (typed conversation)
- 📖 Vocabulary (flashcard drills)
- 👀 Reading (comprehension)
- 🔄 Spaced Review (today's due items)
- 🎲 Surprise me! (adaptive mix)
Type a number or skill name:
After 4 exercises, accuracy is 55% (target zone). Hold difficulty; introduce pattern #2:
Nice — you're right in the sweet spot. Let's switch patterns now.
Exercise 5:
omdatword orderRewrite this correctly: "omdat ik ben te laat"
Type your answer:
sm2-calculator, feedback-formatter, db-updater, session-analyzer) — don't reimplement.omdat word order that tripped you up last time — nice."