--- name: review description: Use when user asks about their learning progress or wants study guidance. Triggers on "how am I doing", "my progress", "what should I study next", "show my scores", "what are my weak areas", "review my learning", "how well do I know X", or any request to see quiz results, track improvement, or decide what to focus on next. Also use when the user seems unsure what to study — this skill provides data-driven recommendations. --- # Review — Learning Progress Dashboard **ALWAYS** use the `AskUserQuestion` tool when asking the user questions, in any context. If you have too many questions for the tool, split them up into multiple calls. ## Overview Show the user their learning progress across all topics or for a specific topic. Display quiz scores, module completion, weak areas, score trends, and actionable next steps. ## Data Schemas The review skill reads data written by the learn and quiz skills. Here are the formats you'll encounter: **index.json** (`~/.claude/learning/index.json`) — master registry: ```json { "topics": { "topic-slug": { "displayName": "Topic Name", "planFile": "plans/topic-slug-2026-03-01.json", "progressFile": "progress/topic-slug.json", "created": "2026-03-01", "lastActivity": "2026-03-01", "level": "beginner", "modulesCompleted": 0, "modulesTotal": 5, "quizzesTaken": 1, "overallScore": 0.8 } } } ``` **Plan files** (`~/.claude/learning/plans/-.json`) — contain `modules[]` with `id`, `title`, `objectives`, `keyConcepts`, `estimatedTime`, `resources[]`. **Progress files** (`~/.claude/learning/progress/.json`) — contain `quizzes[]` (each with `date`, `module`, `score`, `total`, `questions[]`), `weakAreas[]`, `strongAreas[]`, `overallScore` (percentage 0-100, not fraction). Progress files now also contain `spacedRepetition` — a map of concept labels to SM-2 scheduling data (`easeFactor`, `intervalDays`, `nextReview`, `repetitions`). Concepts with `nextReview` at or before today are due for review. ## Process ### Step 1: Load Data Read `~/.claude/learning/index.json`. **If file doesn't exist or is empty:** - Tell the user: "No learning data found yet. Use /learn to start your first topic!" - Stop here. **If user specified a topic** (e.g., `/review kubernetes`): - Load that topic's plan and progress files - Show detailed single-topic view **If no topic specified:** - Load all topics from index - Show overview of all topics ### Step 2: Display Progress **All-topics overview format:** ``` ── Learning Progress ───────────────────────────── [Topic Name] (started [date]) Module 1: [Title] [progress bar] [score]% ([N] quizzes) Module 2: [Title] [progress bar] not started ... Weak areas: [list] Next step: [actionable suggestion] [Topic Name 2] ... ── Due for Review ──────────────────────────────── [Topic]: [N] concepts due ([list top 3 concept names]) [Topic 2]: [N] concepts due ([list top 3]) Run /quiz [topic] to review these concepts. ────────────────────────────────────────────────── ── Summary ─────────────────────────────────────── Active topics: [N] Total quizzes taken: [N] Average score: [N]% Suggested focus: [topic — reason] ────────────────────────────────────────────────── ``` **Due for review section:** If any concepts have `nextReview` at or before today across any topic, show the "Due for Review" block between the per-topic details and the Summary (as shown above). If no concepts are due, omit this block entirely. **Progress bar rendering:** - Use Unicode block characters: `█` for filled, `░` for empty - 10 characters wide - Based on quiz scores for that module (no quizzes = all empty) **Single-topic detailed format:** - Show all modules with per-module quiz history - Show score trend if multiple quizzes (e.g., "Module 1: 60% → 75% → 90%") - List all weak and strong areas - Show total time estimated vs modules completed - Suggest specific module to focus on next ### Step 3: Recommend Next Action Always end with one clear, actionable suggestion: - If concepts are due for review (nextReview <= today): "You have [N] concepts due for review in [topic]. Run `/quiz [topic]` to keep them fresh — spaced repetition works best when you review on schedule." - If a topic has weak areas: "Retake the quiz on [topic] focusing on [weak area]. Use `/quiz [topic]`" - If a module is unstarted: "Start Module [N]: [title]. Check `/resources [topic]` for study materials" - If all modules are strong: "Great work on [topic]! Consider exploring a related topic or increasing the difficulty" - If multiple topics exist: prioritize the one with lowest score or most staleness