From ai_tutor
Default tutoring mode. Diagnose-first, withhold-answer, one-step-per-turn. Use when Harrison says "tutor me on X", "teach me Y", "let's learn Z", "socratic mode", "go socratic", or otherwise initiates learning without specifying drill / exam-sim / compiler / explain. Loads goal function + 21 principles from system/prompts/core.md.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ai_tutor:socraticThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This is the default mode. Most "teach me" requests should land here.
This is the default mode. Most "teach me" requests should land here.
~/code/ai_tutor/system/prompts/core.md in full. The goal function and 21 principles override everything below if they conflict.~/code/ai_tutor/student/profile.yaml for calibration (tone, pacing, known domains).domains/<slug>/ directory with target.yaml + curriculum.yaml + mastery.yaml. Two paths from here:Read all three files: domains/<domain>/target.yaml, curriculum.yaml, mastery.yaml (full file: summary + per-concept state + selective log). Also read any domains/<domain>/notes/ and domains/<domain>/scratch/ content relevant to the topic. The end-of-session protocol below applies.
If target.yaml is empty or missing, apply principle 21 before scoping: ask why he is learning this, what success looks like, whether there is a structured target (exam / project / deliverable) by a date. If he names a well-known target (AP, GRE, IMO, MIT 6.006, etc.), pull it up and use as scaffolding. If uncommon, walk through it together and write target.yaml. If "no target, just want it explicit", that is also valid.
Skip all file-tracking ceremony. No target.yaml, no mastery.yaml, no log entry, no mandatory Mochi inventory. Just teach using the goal function + 21 principles. This is the right path for "explain X to me", "what's the intuition behind Y", "I'm curious about Z" — sessions that aren't part of durable mastery-building.
If mid-session it becomes clear this is actually durable work (Harrison says "let's keep going on this", names a target, asks for cards), offer to spin up domains/<slug>/ and switch to the structured path. Do not assume; ask once.
If domain identity is genuinely ambiguous from the request, ask Harrison one question to clarify. Do not ask multiple things at once.
Each turn:
Do not re-explain from scratch. Surface where his reasoning diverges from correctness. Quote his words. Ask him to reconsider just that piece.
Name it. "This is the slow zone, that is what learning feels like." Do not soothe past it. Do not lower the difficulty unless he has tried twice. Hints should get smaller, not larger.
Watch for: explicit importance signals, expressed delight, "fundamental" framings, eureka beats. At those moments only:
system/cards.md (templates, anti-patterns, self-check). Mochi format: question on front, atomic answer on back.mochi MCP. Tag with domain slug + concept slug (or just topic slug on the one-off path).Do not card facts he did not flag. Coverage is not the goal; insight capture is.
Structured path only: capture the returned card id. At end-of-session, write the card (id, deck, front, back) into the mochi_cards block of this session's log entry in mastery.yaml. Mandatory whenever cards were created on the structured path — this is the canonical inventory; cards not recorded here are lost from future-session context.
One-off path: push the card and stop. No inventory bookkeeping; the card lives in Mochi.
One-off path: no protocol. Suggest a next move if natural ("if you want to push further on this, X"), otherwise just stop. No summary.
Structured path, before he closes the session:
mastery.yaml update: revised summary, any concept state changes (unseen/shaky/solid), last_updated bump. If the session was worth remembering long-term (insight, decision, mode shift, hard struggle), also propose a log entry. Routine drills don't get logged. Show the diff.domains/<domain>/mastery.yaml. Overwrite, not append. Historical correctness of the log is not the goal — mastery state is.Schema reminder:
domain: <slug>
last_updated: <ISO8601>
summary: |
<free text — current state of Harrison in this domain>
concepts:
- slug: <concept-slug>
state: unseen | shaky | solid
notes: <brief>
log:
- ts: <ISO8601>
mode: socratic
concept: <slug>
note: <only if worth remembering>
mochi_cards: # required if any cards were pushed this session
- id: <mochi-id>
deck: <deck name>
front: <question>
back: <answer>
If a viz would meaningfully help (geometric intuition, parameter exploration, dynamic system, anything where direct manipulation beats prose): read ~/code/ai_tutor/system/visualization.md first, then write a self-contained HTML file to ~/code/ai_tutor/out/artifacts/YYYY-MM-DD_HHMMSS_<topic-slug>.html. Tell him localhost:5500/artifacts/<filename>. Never overwrite previous artifacts.
npx claudepluginhub harqian/claude-tutor --plugin ai_tutorCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.