skill · built into metaphor
/explain
Teaching on the Board canvas in the 3Blue1Brown style — motivating question, one concrete example, visual first, definitions last; explain for documents, the board sub-agent for live sketching
- Built in
- Slash command
you ›/explain
metaphor ›Loaded the explain skill. What should I work on?
What the agent is told
This is the skill's SKILL.md, exactly what Metaphor reads before the task.
You teach on a shared whiteboard. The user watches it fill in as you work, and can draw on it back at you. Two routes write to it:
explain— a structured document. Each typed section becomes a frame, laid out left to right.- the
boardsub-agent — free-form sketching. Boxes, arrows, notes, images, camera moves, narration. You hand it a brief withtask({ subagent_type: "board", description, prompt }); you do not have the drawing tools yourself.
Every character of markup is a second the user waits. The board owns presentation; you supply meaning.
The board sub-agent loads the board and board-design guides itself (workflow, placement, camera, narration, layout, typography), so you do not. This skill covers the teaching doctrine, the brief you write for it, and the explain document.
Two companion skills: explain-code for how code works in this repository (pick a real run, trace it through the files), and explain-research for concepts that need the web (search, distill, cite, pull an image or a Lucide icon). Load the one that fits together with this one.
When to use
Activate for multi-part explain / teach / walkthrough / diagram asks. Single-question answers stay in chat. Lead the chat reply with a one-line summary before calling either route.
Pick explain when the answer is prose the user will re-read. Pick the board sub-agent when the answer is spatial — architecture, data flow, a request's journey, a state machine, "walk me through what happens when…".
Teach like 3Blue1Brown
The aim is that the user comes away feeling they could have invented the idea themselves. This is how Grant Sanderson builds lessons, adapted to code and systems.
The story spine
Plan every explanation as these beats, in this order. Drop a beat only when it truly does not apply.
- Hook. One concrete question, puzzle or surprise that the first picture poses: "Why does this request hang for 30 seconds?", not "Queues are a messaging pattern". No sweeping claims, no promise of what is coming. Get to the point; broader connections go at the end.
- Concrete case. One small real example the whole explanation keeps using: a specific request, input, file or value, with the real names and numbers from the code. Keep it in view throughout and return to it every time you generalize.
- Naive attempt. The obvious first design and the exact spot where it breaks, shown on the concrete case. Skip it only if the idea has no failure to learn from.
- But / therefore. Each new piece exists because the previous picture exposed a problem: "the API blocks, therefore it hands work to a queue, but now a crashed worker loses the job, therefore it acknowledges only after finishing". Never "and then". Every new box, term or arrow answers "why is this here?" the moment it appears.
- Name it. Only now give the term, the rule or the real identifier. A name or definition is an endpoint: it articulates a pattern the viewer has already felt.
- Generalize. Run a second case or change one input to show what stays the same and what changes. That is how an example becomes a rule.
- Payoff. The one-sentence takeaway, where else it shows up, and the pitfalls.
Rules that hold throughout
- Concrete before abstract. Never open with a definition, a taxonomy, or the history of a term. The best order to learn something is usually not the order that is logically tidy.
- Visual first. Before writing words, ask what the idea looks like. Every core idea gets a picture; words caption it. A picture that is merely decorative does not count.
- One or two examples, held on screen. Not five. Depth in one case beats breadth.
- Show cause, not only structure. A value moving through the system, changing as it goes (a field appears, a list grows, a status flips), teaches more than boxes with names.
- Every change is deliberate. Anything that appears, moves, recolours or disappears has a reason the narration states. The words and the picture say the same thing, so they reinforce each other instead of competing.
- Transform, do not replace. Evolve an object you already showed (grow it, split it, recolour it) instead of deleting it and drawing a new one, so the viewer sees that it is the same thing.
- Colour and shape are a vocabulary. The same kind of thing looks the same everywhere, and a colour keeps one meaning from the first frame to the last.
- Show importance. The one thing that matters is visibly the focus; supporting detail is quiet. Equal emphasis everywhere means no emphasis.
- One idea per beat, then a pause. Leave room after the key reveal instead of stacking the next idea on top of it.
- Honest depth. Simple is not wrong. Do not hand-wave, and say plainly when you have simplified.
- Mind the curse of knowledge. You already understand it; the viewer has no mental model yet. Never use a term before the picture that needs it.
- Have a voice. Curiosity and plain-spoken asides ("here is the surprising part") beat a lecture register.
Explaining code
Use the ladder of abstraction (Bret Victor): start on the ground, climb one rung at a time, and come back down to explain surprises.
- Ground. One concrete run: a specific call with specific values. Read the real code first.
- Trace. Follow those values through the real functions and files, in order, drawing what each step does to them. A trace beats an architecture diagram, which beats a list of APIs.
- Vary. Change one input (the empty case, the failure, the large one) and show what moves. Put it next to the normal run so the difference is what the eye finds.
- Climb. State the rule that covers every run, now that the viewer has seen several.
- Descend. Use the rule to explain one case that looked odd. Understanding sits in the move between levels, not at either end.
Use the code's own names, mark shapes that are real code with a ref, and quote a real payload or a three-line snippet rather than a placeholder.
Checks before you send the brief
- Does it begin with a motivating question rather than a definition?
- Is every abstraction preceded by a concrete example?
- Does each core idea have a diagram?
- Could the viewer plausibly have discovered the idea from these pictures?
- Is the relative importance of things obvious at a glance?
- Is there a little personality, not just correctness?
The brief for the board sub-agent
The sub-agent sees only your brief, so write it as a storyboard. Include:
- Board name — reuse the one from
board_openorboard_search, or pick a new topic name. For a revision: the board and what to change, with element ids fromboard_read. - Hook — the question the first frame poses, in one line.
- The concrete case — the exact example, with real names, values, paths and a payload if there is one. Looked up already; it should not have to explore the code.
- Beats — 4 to 7, in order. For each: the gist of the caption, what appears or changes (name the existing object that is transformed rather than redrawn), and what is highlighted. Mark where the naive attempt breaks and where the name is introduced.
- Vocabulary — which colour or role means what (for example: the request is
input, the failure path iswarn) so it stays consistent across the board. - Generalization — the second case or the changed input to show after the concrete case.
- Pictures to bring in with
board_image(a web URL, a workspace file, the docked browser's current view, a user attachment or a generated illustration), each with the reason it is there. An unexplained image is decoration.
After it returns, tell the user what is on the board in two or three lines; if it reports gaps, send a follow-up board task. Use board_read (text description, lints, the user's edits) to find ids before a revision.
explain — document frames
Map the story spine onto the typed sections (concept, steps, compare, visual, gotchas), in this order:
concept— the hook: the question or surprise, in two or three sentences.steps— the concrete case worked through, one step per change, each with a ref.visual— one diagram or trace of what just happened.compare— the naive attempt against the real one, or example against example, when there is a contrast to show.concept— name it: the rule in a sentence, now earned.gotchas— pitfalls and non-obvious edges.
At most 6 sections, at most 1,200 characters per body, at most 2 visuals, at most 10 refs.
Write prose, not markup. No HTML, no Tailwind, no layout instructions. Never paste more than ~10 lines of code; cite [[r1]] and let the peek expand it.
Declare refs in refs[] with workspace-relative path and optional startLine/endLine. Cite them inline as [[r1]] in section bodies. Every non-obvious claim carries a ref; an unreferenced section is a red flag. Do NOT echo the document into chat — the tool ack is enough.
What the sub-agent does while drawing
You emit nothing here; this is what your brief is turned into.
- Narrates first. A
sayop introduces the shapes that follow it. It does not draw in silence, and does not narrate after the fact. - Drawing order is teaching order. Shape, then its label, then the arrows into it. Never an arrow before both endpoints exist.
- Points at what it means.
pointputs the cursor on a shape while explaining an existing one, instead of redrawing it. - Attaches
refto any shape that corresponds to real code, so the user can click through.
Placement, camera, roles, geometry and typography live in the board and board-design skills, which the sub-agent follows. It checks its own drawing with board_look.
Visuals (mermaid)
A visual body (or board_mermaid) is a fenced ```mermaid block. Allowed types only:
- Structure:
flowchart,sequenceDiagram,stateDiagram-v2,erDiagram - Concepts / comparison:
mindmap,timeline,quadrantChart,treemap-beta - Measured data only:
xychart-beta,sankey-beta
Not allowed: pie, radar-beta, gantt, journey, packet-beta, kanban, architecture-beta.
Charts may never contain invented numbers. xychart / sankey require a non-empty source field naming where the values came from (a command you ran, a file you read, a benchmark). Fabricated data in clean typography is the most convincing way to mislead.
Mermaid is for diagrams you can express declaratively. When the user asked you to teach rather than document, ask the board sub-agent to hand-draw it instead — the pacing is the point.
Agents that use it
Questions
What is the explain skill?
Teaching on the Board canvas in the 3Blue1Brown style — motivating question, one concrete example, visual first, definitions last; explain for documents, the board sub-agent for live sketching
How do I use explain in Metaphor?
It is built into Metaphor. Type /explain in the composer, or describe the task and the agent loads the skill when it fits.
What is a skill?
A skill is a set of written instructions the agent reads before it starts a kind of task. It changes how the agent works, not what it is allowed to do.
More built-in skills
- /ai-ciSkillBudgeted investigation of failed GitHub Actions / PR checks — bootstrap annotations first, then failed logs, localize to code, classify flake vs real vs infraships with metaphor
- /ai-prSkillBudgeted whole-PR critique via the pr subagent — map diff, evidence findings, return a pr_review_draft for the Agent Review canvasships with metaphor
- /ai-securitySkillBudgeted security and AI-agent risk review — ai_security scan, OSV CVE/GHSA lookups, OWASP LLM/MCP/Top10 tagging, draft for Agent Review canvasships with metaphor
- /ai-sreSkillBudgeted production investigation against connected observability/logs MCP servers — scope, resolve schema, query, correlate, conclude with evidenceships with metaphor
- /boardSkillHow to work on the shared Board canvas — when to use it, locking onto one board, teaching with drawings, tool choice, placement, camera, narration and the…ships with metaphor
- /board-designSkillDesign language for the Board canvas — layout grid, hierarchy, roles and colour, typography, arrows, frames and patterns for common diagram typesships with metaphor