Use when the user wants to UNDERSTAND and RETAIN code, systems, or protocols — not just change them. Three modes. (1) VISUAL EXPLAINER — "make a visual explanation of this", "build an HTML presentation / slides explaining this code", "walk me through this module visually" — produce a self-contained HTML deck that teaches big-picture-first. (2) DIAGRAM-IT — "draw an ASCII diagram of this", "diagram this protocol / architecture / request flow", "sketch the state machine" — produce accurate monospace ASCII diagrams grounded in the actual code. (3) RECALL LOOP — "quiz me on this", "test my understanding", "help me remember this", "spaced repetition" — run a loop where the user explains, you probe gaps Socratically, and persist review cards. Trigger whenever the user is learning from a codebase — onboarding, building a mental model, or studying to remember — even if they don't name a mode. Also mention the Explanatory/Learning output style (/config) for ongoing "explain the why" narration.
68
81%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
A coding assistant usually optimizes for getting the change made, but much of an engineer's time goes to understanding — unfamiliar code, a new codebase, someone else's design. This skill turns the assistant into a teacher: the goal isn't a working diff, it's a durable mental model. That changes what "good output" means — build understanding big-picture-first, make the invisible visible (diagrams, slides), and check and reinforce what actually stuck.
The through-line: optimize for what the user will still understand next month, not just what compiles today.
Two tips (a) is a harness setting, not a skill action: the user can enable the Explanatory or Learning output style via /config, which makes the assistant narrate the reasoning and trade-offs behind every change by default. Mention this when the user says they want ongoing "explain the why" narration across a whole session — it's more ergonomic than asking each time.
Within this skill, regardless of output style: lead with the why and the mental model, then the mechanics — someone who grasps why code is shaped a certain way can reconstruct the what.
| The user says… | Mode |
|---|---|
| "make slides", "visual explanation", "HTML presentation", "present this code" | 1 · Visual Explainer |
| "draw / sketch / diagram", "ASCII", "how do these connect", "request flow", "state machine" | 2 · Diagram-It |
| "quiz me", "test my understanding", "help me remember", "spaced repetition" | 3 · Recall Loop |
Modes 1 and 2 deliver understanding; Mode 3 verifies and retains it. They pair naturally: explain visually, then run a recall loop a few days later.
The user wants a visual, teachable explanation of some code or system. A well-built HTML deck beats a wall of prose because it forces one idea per view and lets the reader control pace.
Do this:
Artifact tool is available, use it (load the artifact-design skill first for layout/theming). Otherwise write a single self-contained .html file (inline CSS/JS, no external deps) and tell the user the path to open. Keep code snippets short, highlighted, and annotated — the annotation is where the teaching happens.The user wants a diagram they can read right in the terminal, a PR, or a markdown file. ASCII diagrams are underrated for code: they live next to the code, diff cleanly, and force you to simplify.
Do this:
path/file.ext + function/class name rather than line numbers — line numbers rot on the next edit, symbols survive.Sequence sketch (shape to imitate):
Client API Gateway AuthService DB
│ POST /login │ │ │
│───────────────>│ │ │
│ │ verify(creds) │ │
│ │───────────────>│ SELECT user │
│ │ │─────────────>│
│ │ │<──── row ────│
│ │<── token ──────│ │
│<── 200 +JWT ───│ │ │Reading an explanation feels like learning but rarely produces retention. Retention comes from retrieval — being made to reconstruct the idea from memory — spaced out over time. This mode runs that loop and persists it so learning compounds across sessions.
The loop:
progress/cards.json (resolve progress/ relative to this skill's directory; create it if absent). Schedule the next review with expanding intervals — a simple, effective default is 1, 3, 7, 16, 35 days, advancing on a good recall and resetting toward the start on a failed one.
{
"id": "auth-token-refresh",
"topic": "JWT refresh flow",
"question": "When an access token expires mid-session, what happens and why doesn't the user get logged out?",
"answer": "The client silently POSTs the refresh token to /refresh, gets a new access token, and retries — the refresh token has a longer TTL. So the session survives access-token expiry without re-login.",
"interval_index": 0,
"next_review": "2026-07-12",
"created": "2026-07-09"
}progress/cards.json, find cards whose next_review is on or before today, and quiz those first — ask the question, let them answer, then reveal and reschedule. This is the compounding part: the skill remembers what they're still shaky on.Keep it honest. If the user's recall is wrong, say so plainly and reset the card's interval — a spaced-repetition system that rewards wrong answers teaches nothing. Warm delivery, accurate grading.
"Read the code first" needs a stopping condition, or you either explain too soon (installing a wrong model) or over-read (burning the session on library internals). Calibrate:
SKILL.md
cd8acd5
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.