From fluent
Displays language learning progress dashboard with statistics, mastery levels, streak, achievements from JSON databases. Triggers on /progress or queries like 'show my progress'.
npx claudepluginhub m98/fluent --plugin fluentThis skill is limited to using the following tools:
Show the learner a comprehensive, personalized progress report with visual statistics, skill mastery levels, trends, and next goals. This is read-only: do not modify any database files.
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.
Reviews learning progress across topics or specific ones, showing quiz scores, module completion, weak areas, trends, spaced repetition due items, and study recommendations.
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.
Show the learner a comprehensive, personalized progress report with visual statistics, skill mastery levels, trends, and next goals. This is read-only: do not modify any database files.
Trigger this skill when:
/progress.Skip this skill when the learner is mid-practice โ the ongoing session skill already shows per-turn feedback, and opening the full dashboard interrupts the flow.
Prefer the helper script over manual Read calls:
python3 .claude/hooks/read-db.py
This returns a single JSON with all 6 databases + computed fields (due_reviews_count, next_session_id, streak_active, days_since_last_session).
If the helper is unavailable, fall back to reading each file directly. Resolve the data directory via fluent_paths.data_dir() first โ do NOT hardcode data/ (plugin installs store data under ~/.claude/fluent-data/):
<data_dir>/learner-profile.json<data_dir>/progress-db.json<data_dir>/mastery-db.json<data_dir>/mistakes-db.json<data_dir>/spaced-repetition.json<data_dir>/session-log.jsonIf any are missing, point the learner at /setup and stop.
Use this exact structure. Fill in values from the databases; compute percentages and progress bars yourself.
# ๐ {learner_name}'s {target_language} Learning Dashboard
**Last Updated:** {today}
---
## ๐ฏ Overview
**Current Level:** {current_level}
**Target Level:** {target_level}
**Progress to {next_level}:** {progress_bar} {percentage}%
**Days Studying:** {total_days}
**Current Streak:** ๐ฅ {streak_days} {day_or_days} {streak_message}
**Total Sessions:** {total_sessions}
**Total Study Time:** {total_minutes} minutes ({hours} hours)
---
## ๐ช Skills Mastery
### Writing โ๏ธ
**Level:** {n}/5 {stars}
**Accuracy:** {percent}%
**Progress:** {progress_bar}
**Last Practiced:** {date_or_never}
### Speaking ๐ฃ๏ธ
**Level:** {n}/5 {stars}
**Accuracy:** {percent}%
**Progress:** {progress_bar}
**Last Practiced:** {date_or_never}
### Vocabulary ๐
**Level:** {n}/5 {stars}
**Words Known:** {count}
**Words Mastered:** {count}
**Progress:** {progress_bar}
**Last Practiced:** {date_or_never}
### Reading ๐
**Level:** {n}/5 {stars}
**Comprehension:** {percent}%
**Progress:** {progress_bar}
**Last Practiced:** {date_or_never}
---
## ๐ Progress Trends
### Accuracy Over Time
{generate ASCII chart from progress-db weekly_summary}
### This Week's Summary
- **Sessions:** {count}
- **Minutes:** {total}
- **Exercises:** {count}
- **Accuracy:** {percent}%
- **Skills Practiced:** {list}
---
## ๐ฏ Focus Areas
### ๐ด Critical (Needs Urgent Attention)
{patterns from mistakes-db with mastery 0-1 and high frequency}
### ๐ก Working On (Making Progress)
{patterns from mistakes-db with mastery 2-3}
### ๐ข Strong (Almost Mastered)
{patterns from mistakes-db with mastery 4-5}
---
## ๐ Spaced Repetition Status
**Items Due Today:** {count}
**Items Due This Week:** {count}
**Items Mastered:** {count}
---
## ๐ Achievements Unlocked
{list from learner-profile โ achievements, show locked ones with ๐}
---
## ๐
Session History
| Date | Duration | Skill | Accuracy |
|------|----------|-------|----------|
{most recent 5-10 sessions from session-log}
---
## ๐ฏ Next Goals
**Short-term (This Week):**
{derive from weak patterns + due reviews}
**Medium-term (This Month):**
{derive from skill mastery gaps}
**Long-term:**
{derive from target level gap}
---
## ๐ก Recommendations
1. {top weak area from mistakes-db}
2. {skill not practiced recently}
3. {due review count if > 0}
---
"{personalized motivational message}"
Append this only if the learner seems new or asks what the numbers mean:
## ๐ How to Read Your Stats
**Mastery Levels:**
- โญโโโโ (1/5): Just started
- โญโญโโโ (2/5): Learning
- โญโญโญโโ (3/5): Good
- โญโญโญโญโ (4/5): Strong
- โญโญโญโญโญ (5/5): Mastered
**Accuracy bands:** 0-40% intensive, 40-60% learning, 60-75% good, 75-85% strong, 85%+ excellent.
๐ Mohammad's Dutch Learning Dashboard
Current Level: A1 โ A2 (4% to A2) Current Streak: ๐ฅ 3 days Total Sessions: 3 ยท 45 min
Vocabulary ๐
Level: 1/5 โญโโโโ ยท 12 words known ยท 0 mastered
Speaking / Writing / Reading: Not yet practiced.
Items Due Today: 6 โ run
/reviewfirst."Three days in a row โ momentum matters. Keep going!"
Learner: "how am I doing on Dutch?" โ auto-invoke this skill, render the full dashboard.
update-db.py or edit any JSON in data/.learner-profile.json. Never guess or increment.day vs days correctly (1 = day, else days).learner-profile.json.Unlike session commands, this is a pure read. A false-positive (Claude opens the dashboard when the learner asked something else) costs only a few tokens โ no DB corruption, no interrupted practice. Worth the lower trigger bar.