← ClaudeAtlas

progress-trackerlisted

Use to log a completed exam-practice attempt or to generate a progress report. Call it right after any writing/speaking/reading/listening/ vocabulary task is scored to append the result, and when the user asks to see results or trends ("show my progress", "session report", "how am I doing on writing", "what's my weakest task?"). Reads and appends to the user's progress directory ($EXAM_COACH_HOME or ~/english-exam-coach/); the log is append-only.
OleksiiDotsenko/english-exam-coach · ★ 8 · Data & Documents · score 73
Install: claude install-skill OleksiiDotsenko/english-exam-coach
# Progress Tracker Two-layer model: `attempts.jsonl` is the append-only source of truth; Markdown reports in `reports/` are derived and regenerable. Scripts live at `${CLAUDE_PLUGIN_ROOT}/skills/progress-tracker/scripts/` (if the variable is unset, resolve relative to this SKILL.md). The base directory is resolved by the scripts themselves: `--base` flag → `$EXAM_COACH_HOME` → `~/english-exam-coach/`. Because attempts are usually logged inline by another skill — which silently creates `~/english-exam-coach/` on first write — the default-vs-custom choice must be surfaced at the first real entry point (`/start-prep`, or exam-router before its diagnostic) **before any attempt is logged**: ask once whether the user wants the default (`~/english-exam-coach/`) or a custom path such as an Obsidian vault folder, then suggest exporting `EXAM_COACH_HOME` in their shell profile to persist the choice. If this skill is nonetheless the first to log and no base exists yet, ask that same question before the first write. ## When to use - After ANY task is scored by another skill → log the attempt, silently. - When the user asks for results, trends, streaks, or weakest areas → build and show a report. - When advice needs the learner's target ("am I on track?", "is B2 enough?") → read the profile; when they state a target or an exam date → save it. ## The learning loop Scores alone are amnesia: every session grades, explains, and forgets. The loop turns each mistake into a scheduled r