From fluent
Runs a daily spaced-repetition review session using SM-2 algorithm. Loads due items, generates targeted exercises, evaluates responses, and updates scheduling parameters.
How this skill is triggered — by the user, by Claude, or both
Slash command
/fluent:fluent-reviewThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Replay items the learner learned before, timed so they hit just before the forgetting curve drops them. This is the single most effective session type — the system depends on it running daily. Items the learner gets right get pushed further into the future; items they miss come back tomorrow.
Replay items the learner learned before, timed so they hit just before the forgetting curve drops them. This is the single most effective session type — the system depends on it running daily. Items the learner gets right get pushed further into the future; items they miss come back tomorrow.
Trigger this skill only when the learner types /fluent-review. The skill is gated with disable-model-invocation: true — mutating SM-2 state from a misread prompt would cascade through every future session.
Skip this skill when the queue is empty — suggest /fluent-vocab or /fluent-learn instead.
python3 "${CLAUDE_PLUGIN_ROOT:-${CLAUDE_PROJECT_DIR:-.}}/.claude/hooks/read-db.py"
Read spaced-repetition.review_queue.today and daily_limits.review_items_per_day. Sort items by priority (critical → high → medium → low). Cap at the daily limit (usually 20).
If the queue is empty:
🎉 No reviews due today! Your spaced repetition is up to date.
Want to practice something new? Try:
- `/fluent-learn` — adaptive mixed practice
- `/fluent-vocab` — learn new words
- `/fluent-progress` — see your stats
# 🔄 Today's Spaced Repetition Review
Hallo {name}! Time to review items your brain is about to forget. This keeps everything fresh. 🧠
**Items Due Today:** {count}
**Estimated Time:** ~{minutes} min
Why review? Spaced repetition prevents forgetting, moves items into long-term memory, and builds automaticity.
**Ready? Let's start!** 💪
Each item has:
{
"item_id": "...",
"item_type": "error_pattern | vocabulary | grammar_rule",
"easiness_factor": 2.5,
"interval_days": 6,
"repetitions": 2,
"due_date": "YYYY-MM-DD",
"priority": "critical | high | medium | low",
"content": "...",
"answer": "..."
}
Generate an exercise matched to item_type:
mistakes-db, create a scenario that forces the correct form. E.g. formal_informal_confusion → ask the learner to complete a formal email opening.Present one at a time:
## Review {N}/{total} — {priority emoji}
**Type:** {item_type}
**Last reviewed:** {X} days ago
**Current mastery:** {stars}
{exercise}
**Type your answer:**
Use the fluent-feedback-formatter skill for per-answer feedback.
Then stage the item for the end-of-session update. Do NOT hand-edit spaced-repetition.json — use review_results[] in the fluent-db-updater payload:
{ "item_id": "vocab_huis", "quality": 4 }
The update-db.py script runs the SM-2 math (see fluent-sm2-calculator skill) and rebuilds the queue. Mapping: quality = floor(score / 2).
## Progress Update
**Reviewed:** {N}/{total}
**Accuracy:** {percent}%
**Time Remaining:** ~{min} min
Keep going! 💪
## 🎉 Review Session Complete!
**Reviewed:** {count}
**Accuracy:** {percent}%
**Time:** {min} min
### Breakdown
**Mastered (no mistakes):** {count} — won't appear again for a while 🎉
**Good (minor slips):** {count} — next in {X} days
**Need more practice:** {count} — tomorrow again
### Next Review Schedule
- Tomorrow: {count}
- This week: {count}
- Next week: {count}
**Streak:** 🔥 {X} {day/days} 🔥
**Tip:** {one line of advice based on accuracy}
{target-language well done}! 🌟
Use the fluent-db-updater skill:
command_used: "/fluent-review", skills_practiced: [derived from reviewed items]skill_scores — aggregate per skill touchedreview_results[] — every item reviewed, with qualityerrors[] — only patterns where the learner got it wrong (bumps frequency)focus_next_session[] — the 2-3 items with lowest quality this sessionSave exchange to /results/fluent-review-session-{NNN}.md for later analysis.
Review 3/12 — 🔴
Type: vocabulary Last reviewed: 6 days ago Current mastery: ⭐⭐⭐☆☆
Dutch: het raam
What does it mean in English?
Learner: "the door"
❌ Close — those are both openings in a wall, but not the same.
Corrections:
- 🟡 "the door" → "the window" (vocabulary —
het raamis window;de deuris door)Correct version: "het raam" = the window.
Score: 3/10 💪 Easy to mix — we'll review this again soon.
(Logged:
review_results[]item quality=1 →interval_days=1, repetitions=0, stays in today's queue.)
Review 7/12 — 🟡
Type: grammar_rule Last reviewed: 14 days ago Current mastery: ⭐⭐⭐⭐☆
Complete: "Ik schrijf u omdat ik ____ kan komen." (reason: can't come)
Learner: "niet"
✅ Perfect — omdat-clause word order locked in.
Answer: "Ik schrijf u omdat ik niet kan komen."
Score: 10/10 🎯
(Logged: quality=5 →
interval_days = round(14 * EF), queue:later.consecutive_correct= 5, mastery → 5 ⭐⭐⭐⭐⭐.)
/fluent-review every day. Missing a day breaks the intended spacing./fluent-review. Long interactive + SM-2 mutation.spaced-repetition.json. Queue is rebuilt on every update-db.py call.Tell the learner if they ask:
npx claudepluginhub m98/fluent --plugin fluentComputes SM-2 spaced-repetition scheduling for Fluent language learning: score-to-quality conversion, interval updates, easiness factor adjustments, and queue routing.
Designs a study system using expanding intervals (e.g., Day 1→2→4→8) to maximize long-term retention with minimum time investment.
Configures individual spacing algorithms using student performance data and forgetting curves. Use when personalizing retention schedules in adaptive learning platforms.