progress
Skill0 starsChanged 9 months agoMITView on GitHub
Longitudinal language learning progress report with metrics, trends, and insights
22 other projects use a version of this.
Adopted by
Most recently taken up by
- mrzli/skillstheir own version, first seen Nov 8, 2026
- wollemiahq/skillstheir own version, first seen Nov 8, 2026
- caidanw/skillstheir own version, first seen Nov 8, 2026
- buildomator/buildomatortheir own version, first seen Nov 4, 2026
- agentmemoir/skillstheir own version, first seen Nov 1, 2026
- shaokeyibb/hikarilan-skillstheir own version, first seen Nov 1, 2026
Used with
Projects with it also use quiz, teach and 1 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
andrewn6Skillquiz
Test understanding with targeted questions — adapts to skill level and researches the stack for relevant questions
Also in 4 projects that use this
GoogleSkillteach
Teach the user a new skill or concept, within this workspace.
Also in 3 projects that use this
SentrySkillreview
Fixture review skill.
Also in 3 projects that use this
Other versions22 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 22
- ericboy0224/learn-docker-and-k8s★ 472same name
- kv0906/pm-kit★ 138same name
- buildomator/buildomator★ 102same name
- maludb/learn-claude★ 51same name
- alexiocassanifm/anthropic-certifications★ 36same name
- ProjectAJ14/eklavya★ 29same name
- shaokeyibb/hikarilan-skills★ 25same name
- caidanw/skills★ 11same name
- yarikleto/claude-teacher-plugin★ 9same name
- sarthakgoel31/claude-skills★ 3same name
12 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository4 other files it gives its agents.
- AGENTS.mdAGENTS.md
- langSkill
- language-coachingSkill
- setupSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
24 rules. 0 are common, 16 are distinctive, and 8 are very specific to this project.
0
Common
Most of the 16 edited versions we read keep these.
16
Distinctive
This author's own choices. Worth a look.
8
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 18
If the argument is not recognized, respond: "Unknown language code: {arg}.
- Distinctive: line 33
READ-ONLY: Never write to or modify any file.
- Distinctive: line 34
No conversation analysis: Do not scan user messages for language errors.
- Distinctive: line 35
No coaching blocks: Do not append correction, teaching, immersion, or SRS review blocks.
- Very specific: line 86
If next_review is not null: show "Due: {date} ({interval_days}d, ease {ease_factor})"
- Very specific: line 87
If next_review is null: show "—"
- Very specific: line 112
If resolved > 0: show table with native_form, target_correction, times_corrected, last_correct_usage (as resolution date).
- Distinctive: line 114
If resolved == 0: show "No patterns resolved yet.
- Very specific: line 129
If next_review == today: show "due today" instead of "0 day(s) overdue".
- Distinctive: line 131
If none due: show "No reviews due today."
- Distinctive: line 142
If none upcoming: show "No upcoming reviews scheduled."
- Distinctive: line 151
If no patterns have SRS fields activated: show "SRS will activate after your first pattern correction." instead of the whole section.
- Very specific: line 177
If total_sessions is 0, show "—" instead of dividing by zero.
- Distinctive: line 179
If vocabulary array is empty: show "No vocabulary taught yet." and explain based on mode:
- Very specific: line 180
If mode is corrective: "Your {language} mode is corrective — only mistakes are corrected.
- Very specific: line 181
If mode is active or both: "Vocabulary will be acquired through active teaching and immersion blocks over time."
- Distinctive: line 199
If more than 10 sessions: add "(showing last 10 of {N} sessions)" below the table.
- Distinctive: line 211
If current streak equals longest streak, omit "Longest streak" line.
- Distinctive: line 240
Use data to support each insight (cite numbers)
- Distinctive: line 241
Do not repeat information already visible in the tables above — add interpretation
- Distinctive: line 250
After all individual language reports, add:
- Distinctive: line 266
All dates displayed in short format (e.g., "Feb 22") for readability
- Distinctive: line 267
When data is sparse, acknowledge it honestly and set expectations
- Distinctive: line 268
Use tables for structured data, prose for insights
“Common” is measured: kept by at least 6 in 10 of the 16 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Language Coaching — Progress Report
Generate a longitudinal progress report for the user's language learning journey. This is a read-only analytics skill — it does NOT modify coaching files, analyze conversation messages, or generate coaching blocks.
Target Language
The target language is: $ARGUMENTS (default to all if empty or not specified).
Supported values: en, es, fr, it, de, ja, ko, nl, all.
If the argument is not recognized, respond: "Unknown language code: {arg}. Supported: en, es, fr, it, de, ja, ko, nl, all."
Instructions
- Parse the language argument
- Determine configured languages by reading the
# Language Coaching Configsection from the user's CLAUDE.md - For each target language:
a. Read
~/.claude/coaching/{language}-coaching.jsonusing the Read tool b. If JSON missing but.mdexists: tell the user — "Run/lang {code}first to migrate to structured format, then re-run/progress." c. If neither file exists: tell the user — "No coaching data for {language}. Start a session or run/claude-language-coach:setup." d. If JSON exists: generate the full report below - For
allmode: generate a per-language report for each configured language, then a cross-language summary at the end
CRITICAL RULES
- READ-ONLY: Never write to or modify any file. No JSON updates, no MD regeneration, no session tracking.
- No conversation analysis: Do not scan user messages for language errors. This is purely historical analytics.
- No coaching blocks: Do not append correction, teaching, immersion, or SRS review blocks.
- Data as-is: Report the data from the JSON files exactly. Do not infer corrections or create new patterns.
Flag Mapping
en→ 🇬🇧 Englishes→ 🇪🇸 Españolfr→ 🇫🇷 Françaisde→ 🇩🇪 Deutschit→ 🇮🇹 Italianoja→ 🇯🇵 日本語ko→ 🇰🇷 한국어nl→ 🇳🇱 Nederlands
Report Format
Generate the following sections in order. Omit a section only when noted.
Section 1: Header
{flag} {Language} — Progress Report
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Level: {level} | Active since: {active_since} | Sessions: {stats.total_sessions}Section 2: Overview (always shown)
## Overview
- Learning {language} since {active_since} ({N days/weeks/months ago})
- {stats.total_sessions} coaching sessions across {count unique projects in sessions} project(s)
- {stats.total_corrections} corrections | {stats.patterns_active} active patterns | {stats.patterns_resolved} resolved
- {stats.vocabulary_size} vocabulary terms acquiredCalculate time elapsed from active_since to today. Use "today" if same day, "N days" if < 7, "N weeks" if < 30, "N months" otherwise.
Count unique projects from sessions[].project values (excluding duplicates).
Section 3: Pattern Analysis (shown when patterns array is non-empty)
## Pattern Analysis
### Active Patterns ({count where resolved=false})
| Pattern | Type | Corrections | First Seen | Last Seen | SRS Status |
|---------|------|-------------|------------|-----------|------------|Sort by times_corrected descending (most persistent first). For SRS Status column:
- If
next_reviewis not null: show "Due: {date} ({interval_days}d, ease {ease_factor})" - If
next_reviewis null: show "—"
### By TypeGroup patterns by type. For each type: count patterns and sum times_corrected. Show as:
{type}: {count} pattern(s) ({sum} corrections) — {percentage}% of total
Sort by sum descending. Calculate percentage as sum / stats.total_corrections * 100.
### Most PersistentShow top 3 patterns by times_corrected (skip if fewer than 1):
1. **{native_form}** — {times_corrected} corrections, {times_correct_since_last_error} correct usages
{explanation}### Resolved Patterns ({count where resolved=true})If resolved > 0: show table with native_form, target_correction, times_corrected, last_correct_usage (as resolution date).
If resolved == 0: show "No patterns resolved yet. Patterns resolve after 21+ days of correct usage with 5+ consecutive correct uses."
Section 4: SRS Status (shown when any pattern has non-null next_review)
## SRS (Spaced Repetition)
### Due for ReviewList patterns where next_review <= today and resolved=false, sorted by next_review ascending:
- **{native_form}** — {overdue_days} day(s) overdue (due: {next_review}, interval: {interval_days}d, ease: {ease_factor})If next_review == today: show "due today" instead of "0 day(s) overdue".
If none due: show "No reviews due today."
### Upcoming ReviewsList patterns where next_review > today and resolved=false, sorted by next_review ascending:
- **{native_form}** — due {next_review} (interval: {interval_days}d)If none upcoming: show "No upcoming reviews scheduled."
### SRS Health
- Patterns under SRS: {count with non-null next_review and resolved=false}
- Average ease factor: {mean of ease_factor, rounded to 2 decimals}
- Interval range: {min interval_days}d – {max interval_days}dIf no patterns have SRS fields activated: show "SRS will activate after your first pattern correction." instead of the whole section.
Section 5: Vocabulary (shown when vocabulary array is non-empty)
## Vocabulary ({vocabulary array length} terms)
| Term | POS | Translation | Taught | Shown | Used |
|------|-----|-------------|--------|-------|------|For each vocabulary entry, extract fields with fallbacks for legacy schema:
- Term:
target_termorterm - POS:
part_of_speechorpos - Translation:
source_termortranslation_enortranslation_ptbr - Taught:
first_taught(short date format) - Shown:
times_shown - Used:
times_used_by_useror 0
Sort by first_taught descending (newest first).
### Acquisition Rate
- {vocabulary_size / total_sessions} terms per session (avg)If total_sessions is 0, show "—" instead of dividing by zero.
If vocabulary array is empty: show "No vocabulary taught yet." and explain based on mode:
- If mode is
corrective: "Your {language} mode iscorrective— only mistakes are corrected. Switch tobothfor vocabulary teaching." - If mode is
activeorboth: "Vocabulary will be acquired through active teaching and immersion blocks over time."
Section 6: Session Timeline (shown when sessions array is non-empty)
## Session Timeline
### Recent Sessions
| Date | Project | Corrections | Vocab Taught | SRS Reviews | Notes |
|------|---------|-------------|-------------|-------------|-------|Show the last 10 sessions from the sessions array (sorted by date descending). For each session:
- Corrections: length of
patterns_addressed - Vocab Taught: length of
vocabulary_taught - SRS Reviews:
srs_reviews - Notes: truncate
notesto 40 chars if longer
If more than 10 sessions: add "(showing last 10 of {N} sessions)" below the table.
### Activity
- Sessions this week: {count where date is within current ISO week}
- Sessions this month: {count where date is within current month}
- Current streak: {consecutive calendar days with sessions, counting back from most recent} day(s)
- Longest streak: {max consecutive calendar days with sessions} day(s)For streak calculation: check consecutive dates in the sessions array (each date counts once regardless of multiple entries). Work backward from the most recent session date. If only 1 session exists, streak is "1 day".
If current streak equals longest streak, omit "Longest streak" line.
Section 7: Insights (always shown)
## InsightsGenerate 3-5 actionable insights based on the data. Choose from these templates (in priority order):
- Weakest pattern type (when patterns exist): Identify the type with the highest total corrections. "Weakest area: {type} ({sum} of {total} corrections, {pct}%). {brief advice}."
- Native interference (when patterns of type
interference,false_friend, orspellingwith L1 influence exist): "Native interference: {count} patterns show direct {native_language} influence. {brief explanation of why this is normal for their level}." - SRS trajectory (when SRS patterns exist): Comment on SRS state — all new (interval=1d), progressing (mixed intervals), or nearing resolution (interval >= 14d).
- Vocabulary-correction balance (when one side is 0): If vocabulary is 0 but patterns > 0, suggest mode change. If patterns are 0 but vocabulary > 0, celebrate clean usage.
- Session frequency (when sessions > 3): Comment on regularity. Daily sessions accelerate SRS. Gaps reset momentum.
- Resolution progress (when any pattern has
times_correct_since_last_error >= 3): Highlight patterns close to resolving. - Early stage (when total_sessions < 5): "Getting started: {N} sessions so far. Patterns build naturally with daily use. First resolutions typically happen after 3-4 weeks."
- Immersion active (when the language config has
immersion: phraseorimmersion: sentence): Note that immersion mode is active and contributing to vocabulary acquisition.
Rules:
- Maximum 5 insights per language
- Be encouraging about progress, honest about persistent patterns
- Use data to support each insight (cite numbers)
- Do not repeat information already visible in the tables above — add interpretation
Close the report with:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━Cross-Language Summary (for all mode only)
After all individual language reports, add:
## Cross-Language Summary
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
| Language | Level | Sessions | Patterns (active/resolved) | Vocabulary | Last Active |
|----------|-------|----------|---------------------------|------------|-------------|One row per configured language. Last Active = stats.last_session or "never" if null.
Important
- This is a PURE ANALYTICS skill — no corrections, no teaching, no file writes
- Focus on longitudinal trends, not single-session observations
- All dates displayed in short format (e.g., "Feb 22") for readability
- When data is sparse, acknowledge it honestly and set expectations
- Use tables for structured data, prose for insights
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

