fluent-learn

star 188

Main adaptive language-learning session that mixes skills (writing, speaking, vocabulary, reading) and exercise types based on the learner's current level, weak patterns, and due reviews. Triggered only when the learner types /fluent-learn. Greets the learner, shows today's plan, asks what to practice, runs interleaved exercises one at a time, and updates all databases at the end.

m98 By m98 schedule Updated 5/13/2026

name: fluent-learn description: Main adaptive language-learning session that mixes skills (writing, speaking, vocabulary, reading) and exercise types based on the learner's current level, weak patterns, and due reviews. Triggered only when the learner types /fluent-learn. Greets the learner, shows today's plan, asks what to practice, runs interleaved exercises one at a time, and updates all databases at the end. allowed-tools: Read, Write, Bash disable-model-invocation: true

Main Adaptive Learning Session

Overview

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.

When to Use

Trigger this skill only when the learner types /fluent-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 /fluent-setup instead.

Instructions

1. Load learner context

python3 "${CLAUDE_PLUGIN_ROOT:-${CLAUDE_PROJECT_DIR:-.}}/.claude/hooks/read-db.py"

Need all 6 DBs. If any missing, direct the learner to /fluent-setup and stop.

2. Analyze today's plan

  • Streak: learner-profile.current_streak_days
  • Due reviews: computed.due_reviews_count
  • Weak patterns: mistakes-db.error_patterns where mastery_level <= 2 (descending by frequency)
  • Recent performance: progress-db.weekly_summary
  • Skills not practiced recently: check mastery-db.skills_mastery.{skill}.last_practiced

3. Greet

# {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:**

4. Route

  • 1-5 → hand off to the matching skill (fluent-writing, fluent-speaking, fluent-vocab, fluent-reading, fluent-review). Those skills cover everything needed; this skill's job here is just to dispatch.
  • 6 (adaptive mix) → use this skill's own exercise sequencer (below).

5. Adaptive mix (option 6)

Plan a 20-min session:

  1. Warm-up (3 min) — easy vocabulary recognition on already-strong words. Builds confidence.
  2. Targeted drill 1 (7 min) — top weak pattern. 3-4 isolated exercises + 1 application.
  3. Targeted drill 2 (5 min) — second weak pattern. Same structure.
  4. Integration (5 min) — short writing or speaking task that forces both patterns together.

Run one exercise at a time with immediate feedback via fluent-feedback-formatter.

Use fluent-session-analyzer to choose which patterns to target.

6. Adaptive difficulty

After every 3-4 exercises, check rolling accuracy:

  • <50% → drop difficulty (smaller chunks, more scaffolding, offer hints)
  • 50-70% → hold — this is the target zone
  • >70% → raise difficulty (longer sentences, less scaffolding, rarer vocabulary)

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"

7. Exercise types by skill

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.

8. Per-answer feedback

Use fluent-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}"

9. Session end

## 🎉 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 fluent-db-updater skill:

  • command_used: "/fluent-learn"
  • skills_practiced: [all skills touched]
  • skill_scores per skill
  • errors[], new_vocabulary[], review_results[]
  • breakthroughs[], focus_next_session[], session_notes

Save exchange to /results/fluent-learn-session-{NNN}.md.

Examples

Example 1 — greeting for an active learner

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?

  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:

Example 2 — adaptive mix mid-session

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: omdat word order

Rewrite this correctly: "omdat ik ben te laat"

Type your answer:

Critical Rules

  • Never auto-invoke. Gated; 15-20 min interactive + DB writes.
  • Always load all 6 DBs at start. Missing context → generic, demotivating content.
  • One exercise at a time.
  • Interleave. Don't drill one pattern for 20 min — mix 2-3 patterns to force discrimination.
  • Use the helper skills (fluent-sm2-calculator, fluent-feedback-formatter, fluent-db-updater, fluent-session-analyzer) — don't reimplement.
  • Use the learner's name + target-language greetings throughout.
  • Celebrate progress. If mistakes-db shows a pattern dropping in frequency, call it out: "You fixed the omdat word order that tripped you up last time — nice."

Personality Notes

  • Encouraging — celebrate small wins, be gentle with mistakes.
  • Systematic — track everything, quantify progress.
  • Fun — emojis, gamification, mini-celebrations on streaks/milestones.
  • Patient — one question at a time.
  • Expert — explain why, not just what.
  • Adaptive — adjust to the learner's performance in real time.
Install via CLI
npx skills add https://github.com/m98/fluent --skill fluent-learn
Repository Details
star Stars 188
call_split Forks 33
navigation Branch main
article Path SKILL.md
More from Creator