Teacher Agent

Three modes, one entry point: teacher <mode>

Whiteboard sketch, transcribed
Tuesday, August 18, 2026 · 3:42 PM

TEACHER dispatched as teacher <mode> verdicts: Explained · Gap (Feynman) 5 short-term · stateless · one session short-term · stateless · one session long-term · stateful (multi-session) “CC overcomplicates simple ideas with language it created” “you want to understand a concept better” “you want to learn a skill or a knowledge base” DEBRIEF “wait, what?” EXPLAIN make the mechanism land COURSE recognise → hand off 4 misroute lands here: → Gap, names the skill SUBAGENT · isolated context 3 SUBAGENT · isolated context SKILL · runs in YOUR session chat 1 HTML + lavish chat in HTML + quiz a page, on request HTML ON REQUEST NOT BY DEFAULT 2 ends reply with `lavish-axi <file>` + `poll` for the MAIN session to run: poll blocks until a human acts in a browser; a subagent can't wait on it murmurent-course skill multi-session curriculum chunked lessons, quizzes, progress tracking INTERVIEW FIRST concrete mission, not topic → MISSION.md never a lesson in an empty directory 1 · Source via bookworm → RESOURCES.md; every lesson cites, names one primary source to read 2 · Pick smallest next topic from MISSION.md + learning records; never re-teach what they demonstrated lane continues below 3 · Write the lesson self-contained HTML, lesson_<n>.html, integer-versioned, never overwritten; ends in a self-grading quiz on mechanism writes 4 · Cold-read check dispatch teacher subagent: explain the mechanism back from the page alone Gap → fix & recheck · Explained → ship ↩ returns to TEACHER (cold-read dispatch) 5 · Review in lavish-axi lavish-axi <file>, then poll (blocks); “wait-what” annotations + quiz answers revision ships as lesson_<n+1>.html runs both itself, in the foreground 2 6 · Learning record record_<n>.md, specific and honest: demonstrated vs needed walked through 7 · Next session: retrieval first spaced questions from the records, weighted to what they fumbled ↺ loop: back to “pick next topic” lesson_1.html HTML + Quiz lesson_2.html HTML + Quiz ⋮ lesson_<n>.html current
Debrief and Explain, the top two lanes, are short answers from the same stateless subagent. Course, the bottom lane, is a long-running stateful skill that runs in your own session and loops: interview once, then source, pick topic, write, cold-read, review, record, retrieve, again. Lane length is the point: a longer lane is a longer process.

Legend

Numbered circles on the diagram point to the notes below: the claims the drawing doesn't have room to spell out.

1 Debrief's rails

Chat only, under 60 seconds, one dispatch. Reads only the tail of this session's transcript; never globs ~/.claude/projects/, never quotes tool_result/tool_use blocks, writes no file. It fires at the sentence that just landed wrong, not as a catch-up for someone who looked away.

2 The lavish-axi review loop

npx lavish-axi <file> then poll (blocks) returns “wait-what” text-range annotations and quiz answers; a wrong answer means the lesson failed, not the reader. Revisions land as a new integer-versioned file, never overwritten. Never lavish-axi share (publishes public, third-party); no CDN, pages must open from disk with zero network. Explain's page carries the same self-grading quiz as every Course lesson; debriefs ban it outright, since testing recall of something that just landed checks the wrong thing. The two commands are not run the same way: Explain ends its reply with them for the main session to run, because poll blocks until a human acts in a browser and a subagent sitting on a blocked poll never returns its verdict. Course runs both itself, in the foreground, because it is a skill already running in your own session.

3 Subagent vs. skill-in-session

Debrief and Explain run as the teacher subagent; isolated context is the point, which is exactly why neither can interview you or remember last week. Course runs as a skill inside your own session, the only place that can ask a question and hold state (MISSION.md, RESOURCES.md, learning-records/) across sessions days apart.

4 Course is evaluated first

If a course request lands in Debrief or Explain by mistake, teacher doesn't attempt it; it returns Gap: this is a course, not an explanation and names teacher course <subject>. Course is checked first precisely so a beautiful one-shot explainer never substitutes for the learning.

5 Teacher's vocabulary

Exactly two verdicts, no middle ground: Explained or Gap. Persona is Richard Feynman (answers to “Feynman” too). Bullet-led, jargon-light: at most three technical terms per artifact, each defined on first use, counted across the whole piece, not per paragraph.