By harqian
Harrison's personal AI-tutor system: socratic tutoring, curriculum research, and supporting modes. Skills load with the ai_tutor: namespace so the available modes are visible in the skill list.
Build or revise a domain's `target.yaml` and `curriculum.yaml` for a new learning domain. Routes through Claude's confidence first. If the target is canonical (AP, GRE, IMO, MIT OCW course, standard textbook), generate from prior knowledge with no research. If it's larger, fuzzier, post-cutoff, or niche, pull sources from Harrison's existing materials or vetted online sources, surface them for Harrison to taste-check, then synthesize. Use when Harrison says "build a curriculum for X", "scope a new domain", "research curriculum for Y", "what should I learn for Z", "set up a domain for X", or otherwise asks to plan what to learn before tutoring starts. Does not teach. Produces the scaffolding the socratic / drill / exam-sim modes load later.
Focused repetitive practice on a single concept (or small concept cluster). Generate problems, evaluate answers, log accuracy, propose cards from missed problems. Use when Harrison says "drill me on X", "practice X", "give me problems on Y", "rep on Z", "grind X", "I want to drill", or otherwise wants targeted practice rather than open-ended tutoring. Loads goal function + 21 principles from system/prompts/core.md, but operates on a tighter loop: assume the concept is known, surface where execution breaks, log per-problem accuracy. Distinct from socratic (which teaches new concepts) and exam-sim (which is timed, no mid-session feedback).
Time-boxed, target-aware exam simulation. No tutoring mid-exam; full feedback after. Use when Harrison says "exam sim", "simulate the AP", "give me a mock exam", "practice exam", "AP simulation", "FRQ set", "timed practice", "mock test", or otherwise wants to practice under real exam conditions. Loads goal function + 21 principles from system/prompts/core.md but inverts session-level principles for the duration of the exam (no diagnosis, no socratic prompting, no withholding answers, because the student is being tested, not taught). Reverts to tutoring mode for the post-exam review.
Create, list, update, or archive Mochi spaced-repetition flashcards via the Mochi MCP server, AND the canonical reference for how Harrison wants cards designed (six commitments, templates, anti-patterns, self-check). Use when Harrison says "make a mochi card", "add this to mochi", "create flashcards for X", "push to mochi", "list my mochi decks", or any flashcard/spaced-repetition task targeting app.mochi.cards. Also load this whenever drafting cards anywhere — it is the design canon.
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.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
Harrison's personal AI-tutor system. Markdown + folders + Claude skills + Mochi for spaced repetition. The whole repo is the LLM's environment, not a prompt block.
Operational rules live in AGENTS.md. Read that before changing structure.
The tutor's goal is to leave the learner more capable, not to resolve the learner's question. When those goals diverge, the second one wins. Every other rule is a corollary. This single line overrides RLHF "helpfulness" pressure that defaults to fast complete answers.
~/code/ai_tutor/
├── AGENTS.md # project rules (the spec)
├── CLAUDE.md # @AGENTS.md
├── README.md # this file
├── .claude-plugin/ # packages the repo as a Claude Code plugin
│ ├── plugin.json # plugin manifest (name: ai_tutor)
│ └── marketplace.json # local marketplace so settings can enable it
├── .claude/settings.json # enables the ai_tutor plugin when cwd is this repo
├── skills/ # mode skills, surfaced as ai_tutor:<name>
│ ├── socratic/SKILL.md
│ └── curriculum-research/SKILL.md
├── system/
│ ├── prompts/core.md # goal function + 21 principles, loaded by every mode
│ └── visualization.md # viz playbook (Ciechanowski-grade craft)
├── registry/
│ └── resources.yaml # global resource registry (textbooks, OCW, videos)
├── student/
│ ├── profile.yaml # who Harrison is, learning preferences
│ └── learning-roadmap.md # canonical meta-learning doc (Harrison-authored)
├── domains/
│ └── <domain_slug>/
│ ├── target.yaml # exam / project / deliverable structure (or null)
│ ├── curriculum.yaml # ordered concept list with soft prereqs
│ ├── sources.yaml # which resources for this domain
│ ├── mastery.yaml # living mastery state + selective log
│ ├── notes/<concept_slug>.md # flat folder of LLM-authored study notes
│ ├── scratch/ # Harrison's own writing (no frontmatter, untouched by tutor)
│ └── problems/ # exercises
└── out/artifacts/ # generated viz, dated, never overwritten
Skills are packaged as a Claude Code plugin named ai_tutor. They appear in the slash-command list namespaced (ai_tutor:socratic, ai_tutor:curriculum-research) so all available modes are visible at a glance. Edit skills/<name>/SKILL.md directly; run /reload-plugins to pick up changes.
| Skill | Trigger | Purpose |
|---|---|---|
socratic | "tutor me on X", "teach me Y" | Default tutoring. Diagnose-first, withhold-answer, one-step pacing. |
curriculum-research | "build a curriculum for X", "scope a new domain" | Build target.yaml + curriculum.yaml for a new domain. Routes by Claude's confidence: canonical → generate from memory; niche / post-cutoff → pull sources from Harrison or web, surface for him to taste-test. Does not teach. |
drill | "drill me on X", "practice X" | Focused per-problem practice on a single concept. Track accuracy, surface failure modes, propose cards from insight moments. Assumes the concept is known. |
exam-sim | "exam sim", "AP simulation" | Time-boxed, target-aware, no coaching mid-exam. Inverts socratic principles during the exam, reverts for the post-exam review. |
compiler (planned) | "code with me on X" | Natural-language-compiler for code. Refuse to write underspecified code. |
explain (planned) | "explain X" | Concession mode: when student needs a direct answer. The off-switch for socratic. |
Every mode skill loads system/prompts/core.md (goal function + 21 principles) on top of its own behavior.
Claude and Harrison have inverse strengths: Claude has fast, fluent pattern-completion across the canon (AP CED, GRE, MIT 6.006, classic textbooks) but no taste for source quality. Harrison has lived with sources and knows what lands. The curriculum-research skill routes generation to Claude and source selection to Harrison explicitly, with Claude declaring its confidence bucket up front (canonical / familiar-but-fuzzy / niche-or-post-cutoff) before doing any work. See skills/curriculum-research/SKILL.md.
The 21 principles (10 from the AI-tutoring literature, 11 from Harrison) live in system/prompts/core.md. All session behavior derives from there. Highlights:
npx claudepluginhub harqian/claude-tutor --plugin ai_tutorUltra-compressed communication mode. Cuts ~75% of tokens while keeping full technical accuracy by speaking like a caveman.
Frontend design skill for UI/UX implementation
Comprehensive UI/UX design plugin for mobile (iOS, Android, React Native) and web applications with design systems, accessibility, and modern patterns
Memory compression system for Claude Code - persist context across sessions
Marketing skills for AI agents — conversion optimization, copywriting, SEO, paid ads, ad creative, and growth
Standalone image generation plugin using Nano Banana MCP server. Generates and edits images, icons, diagrams, patterns, and visual assets via Gemini image models. No Gemini CLI dependency required.