Use when the user wants to learn a technical topic through structured, multi-session tutoring with prerequisite tracking and knowledge graphs. Activates on "I want to learn X", "teach me X", "let's study X", or resuming a previous learning session. Do NOT activate for quick reference lookups or one-off coding questions — only for sustained learning goals.
Sections: Session Start · Phase 1: Diagnostic · Phase 2: Agenda · Phase 3: Teaching · Phase 4: Quiz · Phase 5: Archive · Iron Rules
typescript-generics, "Rust" → rust~/.claude/learning/topics/{topic}/knowledge-graph.md
~/.claude/learning/learner-profile.md → jump to Phase 2~/.claude/learning/topics/{topic}/ → start Phase 1Ask 5–7 open-ended questions to map existing knowledge. One question at a time. Examples:
After mapping, ask once: "Is there a reference you'd like me to draw from? (book, docs, course — optional)"
knowledge-graph.md header as Reference: [title + URL]; use for examples and citations only — Claude leads curriculumReference: noneRead knowledge-graph-template.md only when creating a new knowledge graph (first session for a topic). Create knowledge-graph.md using the template. Seed nodes based on the topic's prerequisite tree. All nodes start as gap.
Keep the initial knowledge graph to 10–15 nodes. If the topic is broad (e.g., "Rust"), scope to a subtopic first (e.g., "Rust ownership and borrowing"). Expand the graph in later sessions as prerequisite nodes reach understood.
Session composition (respect Cognitive Load Theory):
gap nodes whose prerequisites are ALL ≥ partialpartial node (skip if none)understood node's last quiz was 30+ days ago, add it to the review slotIf learner-profile.md exists, read it and adjust approach before Phase 3:
Announce the agenda to the user before starting.
Loop for each concept in agenda:
If stuck or confused:
Run one quiz per new concept taught. Do NOT skip. Rotate formats:
| Format | Prompt style | Tests |
|---|---|---|
| Feynman | "Explain this to me like I'm 5" | Internalization |
| Apply | "What's wrong with this code?" + [code snippet] | Application |
| Analyze | "Why was this designed this way?" | Deep understanding |
Track hint usage: Did you give any hints during the quiz? Note it.
passed (no hint)passed (hint used)Run this phase at the end of every session. Do not skip even if session is short.
Step 1: Update node states in knowledge-graph.md
Upgrade rules:
gap → partial: passed quiz this session (hint OK)partial → understood: node was already partial from a prior session AND passed quiz today WITHOUT hintsNever downgrade a node. If quiz failed: add note to quiz history AND flag concept in learner-profile as "needs reinforcement" (propose this to user in Step 3).
partial → gap and re-teach from a different angle next sessionDepth progression (update when quiz demonstrates deeper mastery):
explainapplyStep 2: Write session log
Create ~/.claude/learning/topics/{topic}/sessions/YYYY-MM-DD-session-N.md:
# {Topic} — Session {N} — {Date}
## Agenda
- New: [concepts]
- Review: [concept]
## Teaching Notes
[Brief per-concept notes — what worked, what didn't]
## Quiz Results
- {Concept}: passed (no hint) → upgraded to understood
- {Concept}: passed (hint used) → gap→partial
## Observations
[Pattern observations to propose to user]
Step 3: Present observations + confirm before saving
Say: "I noticed [specific pattern]. Want me to save this to your learner profile?"
Wait for explicit confirmation. Then update ~/.claude/learning/learner-profile.md:
# Learner Profile
## Learning Patterns
- Responds well to: [...]
- Struggles with: [...]
- Learning direction: bottom-up | top-down
## Observed Weakness Patterns
- [category]: [specific observation]
## Topic History
- {topic}: {N} sessions ({Concept} ✓|⚠|✗, ...)
If the user needs to leave mid-session:
These rules are non-negotiable. Do not skip them under any circumstances.
learner-profile.md without explicit user confirmation — accuracy matters more than automation