Lesson-Deck-Builder
A Claude skill · v1.3

Lesson-Deck-Builder

Ask Claude for a lesson on any topic and get back one HTML file: a calm, hand-drawn slide deck that teaches, opens in any browser, and works on a phone.

  • One self-contained .html
  • Paper or 6 chalkboards
  • Arabic (RTL) or English
  • 43 slide components
  • Challenge-first teaching
  • Built-in validator
Exemplar deck on the paper canvas.Click inside, then use ← → · open full screen ↗
Contents
  1. What it is
  2. Install
  3. Your first deck
  4. How a session goes
  5. Two kinds of deck
  6. Canvases & boards
  7. Language & direction
  8. The teaching method
  9. Questions & adaptive loop
  10. Chat mode, repo mode, roadmaps
  11. The slide engine
  12. Component library
  13. Teaching jobs
  14. Style laws
  15. Length budget
  16. Validator & scripts
  17. Hard rules
  18. The rulebooks
  19. Worked example
  20. Repository layout
  21. FAQ
  22. Contributors & license
Start here

What it is

A skill is a folder of instructions and files that Claude reads when a task needs it. This one teaches Claude to build lesson decks: slide-style web pages that explain a topic step by step, like a good teacher at a notebook or a blackboard.

You describe what you want to learn or present. Claude asks a few short questions, plans the lesson, fills slides from a ready-made library, checks the file, and hands you one .html file. Double-click it and it opens in your browser. Send it to anyone; it needs nothing else installed.

One file, any device

All styles, scripts and drawings live inside the file. It runs in any modern browser, on a laptop or a phone, with keyboard, mouse or swipe.

Hand-drawn and calm

The Sketchbook look: ruled paper or a chalkboard, wobbly ink frames, sticky notes and drawings that draw themselves. No neon, no clutter.

Built to teach

Teaching decks open with a challenge, explain each idea with a picture, its "why" and a real use, then return to the challenge and end with questions.

Arabic or English

Right-to-left Arabic or left-to-right English. Fonts, layout, arrow keys and swipes all follow the language you choose.

43 components

Covers, maps, timelines, comparisons, code windows, charts, steppers, sliders, quizzes and more, each matched to a "teaching job".

Checked before delivery

A small Python validator catches broken decks: two active slides, a missing engine, a wrong board, a widget that would flip slides while you drag it.

What it is notIt does not make PowerPoint files (use a .pptx skill for that). It makes web pages. The decks look like slides, but they are HTML: you can host them anywhere, including GitHub Pages.
Setup · 2 minutes

Install

The skill is the folder lesson-deck-builder/ inside this repository. Put that folder where Claude looks for skills.

Option A — Claude Code (all your projects)

Clone the repository, then copy the skill folder into your personal skills folder, ~/.claude/skills/.

macOS · Linux · Git Bash
git clone https://github.com/MstrPxl/lesson-deck-builder.git
mkdir -p ~/.claude/skills
cp -r lesson-deck-builder/lesson-deck-builder ~/.claude/skills/
Windows · PowerShell
git clone https://github.com/MstrPxl/lesson-deck-builder.git
New-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null
Copy-Item -Recurse lesson-deck-builder\lesson-deck-builder "$HOME\.claude\skills\"

You should now have ~/.claude/skills/lesson-deck-builder/SKILL.md. Start a new Claude Code session and the skill is ready.

Option B — Claude Code (one project only)

Copy the same folder into the project instead: <your-project>/.claude/skills/lesson-deck-builder/. Anyone who clones that project gets the skill too.

Option C — Claude apps (claude.ai, desktop)

  1. Download lesson-deck-builder.zip from the latest release. (Or zip the lesson-deck-builder/ folder yourself: the zip must contain that folder, with SKILL.md inside it.)
  2. In Claude, open Settings → Capabilities, make sure code execution is on, and upload the zip under Skills.
  3. Start a new chat and ask for a lesson. In the apps the skill runs in chat mode: one complete deck per request.

Check that it works

In Claude Code, type /lesson-deck-builder (the skill also starts by itself when you ask for "slides", "a deck", "a lesson" or "a visual walkthrough"). Claude should answer with questions about your topic, not with a deck. That is correct: the questions come first.

You need

  • Claude Code, or a Claude app with skills enabled
  • A modern browser to open decks

Recommended

  • Python 3, so Claude can run the validator
  • Git, for repo mode (Claude commits each lesson)

To update

  • git pull in your clone, then copy the folder again (replace the old one)
Quick start

Your first deck

Just ask in plain words. Any of these works:

Teaching deck

"Make me slides explaining how vaccines work, for someone with no science background."

Presentation

"Build a short deck that introduces our new note-taking app to the team."

Learning journey

"I want to learn machine learning from zero. Start a learning path for me." (best in Claude Code, inside a folder)

A typical conversation

  1. You ask

    You/lesson-deck-builder Make slides explaining how vaccines work.
  2. Claude maps the topic and asks you to confirm it

    ClaudeHere are the nearby topics: how a vaccine trains your immune system · the main vaccine types · how vaccines are tested · herd immunity. I'll restate your aim: "understand how one shot teaches the body to fight a germ it has never met". Is that right?
  3. Claude asks the canvas and the language

    ClaudeCanvas? I suggest Paper (bright, good for daytime reading) · or Chalkboard. And: Arabic or English?
  4. A short intake

    ClaudeWho is it for (complete beginner · generally informed · expert), and how long (≈10 · 20 · 30 min)?
  5. Claude plans, builds and checks

    It sketches the slide list, fills slides from the component library, and runs validate.py.

  6. You get one file

    vaccines.html. Open it in a browser; use the arrow keys, the Prev/Next buttons, or swipe. Ask for changes any time: "make it chalkboard", "shorter", "add a slide on boosters".

Save time: anything you say up front is not asked again. "An English teaching deck on vaccines, paper canvas, beginners, 15 minutes" skips the language, canvas and intake questions. The topic is still confirmed in one line, because a wrong topic spoils every slide after it.

Prompt builder

Pick your options and copy a ready prompt.

Kind
Language
Canvas
Audience
Length
your prompt

"From lecture slides" uses the two rulebooks: attach them, deck-tools.zip, your lecture PDF or PPTX and any notes. For a later deck of the same course, also attach the newest earlier deck.

Under the hood

How a session goes

Claude follows the same steps every time. Knowing them helps you answer quickly and know what to expect.

  1. Detect the environment

    Repo mode (Claude Code, inside a folder) or chat mode (the Claude apps). It changes where lessons and notes are kept. More below.

  2. The topic conversation (required)

    Every new learning journey starts here. Claude assumes you know nothing, lists the topics near what you said (with one plain line each), and asks you to confirm one topic or one exact learning aim. Even a precise request gets restated and confirmed. Nothing is built before you say yes.

  3. The canvas gate (required)

    Paper or chalkboard; on the chalkboard, which of the six boards. Claude suggests one with a one-line reason, always shows the full menu, and never picks for you. See the boards.

  4. The language (required)

    "Arabic or English?" Asked every time unless you already said it. It sets direction, fonts, button labels and arrow keys.

  5. Scope (broad subjects only)

    If you could spend weeks on the subject ("DevOps", "personal finance"), Claude offers three ways in: an Overview deck (at most ~30 minutes), a Roadmap + Lesson 1, or a Deep dive on one subtopic. Narrow topics skip this.

  6. Intake

    One quick round: the angle, the audience level (default: "a newcomer gains real understanding"), and the length (default ≈20 minutes).

  7. Plan the outline

    Claude chooses the arc (teaching or presentation), turns the time budget into a slide count, and names each slide's teaching job before choosing its component.

  8. Set up from the template

    Copies assets/template.html, sets dir/lang, fonts, nav labels and the canvas attributes. The engine script is never edited.

  9. Build the slides

    A visual on every slide that earns one, text in HTML and shapes in SVG, staggered entrances, logical CSS properties so both directions mirror correctly, one idea per slide.

  10. Validate, then present

    Runs scripts/validate.py, fixes what it flags, and delivers the file with a short note: what was made, how to move through it, and what you can ask to change.

Decided once, early

Two kinds of deck

Teaching deck

So you can do or understand something new

Lessons, explainers, tutorials, every lesson of a learning path. Uses the teaching arc:

Cover›Opening challenge›Ground the newcomer›Map›One idea per slide›Challenge revisited›Recap as "you can now…"›Questions + answer box›Closing
Presentation deck

To inform or persuade

A pitch, a product intro, a showcase, a report. Uses the classic arc, with no challenge and no questions:

Cover›Ground›Map›One idea per slide›Transitions›Recap flow›Closing

If your request could be either, Claude asks one question. When a deck explains a concept and nobody said otherwise, it is treated as a teaching deck.

The look

Canvases & boards

There is one style, Sketchbook, on two canvases: bright paper, or a chalkboard in one of six boards. Click a card to repaint this whole page with it (the dots in the top bar do the same).

One attribute pair decides it

In a deck, the canvas is set on the <html> tag and every colour follows. This page right now is:

deck.html
<html data-canvas="paper">

data-canvas="chalkboard" without a data-board gives the default board, Slate re-inked. Never hand-edit a board's colours inside a deck: pick a board.

Three pens

Every canvas has pen a (the main emphasis), pen b and pen c (they link parts of a figure). One dominant pen and quiet supports, never a rainbow.

Tuned for long reading

Boards are dark but coloured, never black. Chalk is warm off-white, never pure white (it blurs on dark grounds). Body text reaches about APCA Lc 80 on all six boards; pens use medium saturation so they don't "vibrate".

Paper objects stay paper

Sticky notes, tape, index cards and gloss cards keep their paper colours on every board, like real paper pinned to a blackboard. Look at the notes on this page in chalkboard mode.

The gate: Claude always asks the canvas before building, suggests one with a reason (paper by default; chalkboard for night or long screen reading, or if you chose it before), and lists every option. In a lesson series it asks once and remembers. The older looks (Playroom, Nocturne, Terra, Classic) were retired in v1.3; their mechanics live on in components §32.
Arabic · English

Language & direction

Arabic · right to left

كيف تعمل اللقاحات؟

  • <html dir="rtl" lang="ar">
  • Display: Playpen Sans Arabic, weight 800, always. Body: IBM Plex Sans Arabic.
  • Buttons: ‹ السابق / التالي ›
  • ← moves forward (reading goes leftward). Swipe direction flips too.
  • No letter-spacing or uppercase on Arabic; line height about 1.9; display text at 0.95rem or larger.
English · left to right

How do vaccines work?

  • <html dir="ltr" lang="en">
  • Display: Caveat (hand-lettered). Body: Karla.
  • Buttons: ‹ Prev / Next ›
  • → moves forward.
  • The template ships Arabic-ready; Claude switches it for English.

Layouts use CSS logical properties (margin-inline, inset-inline-start…), so everything mirrors by itself, including the notebook's red margin line. Bilingual lessons (say, English taught with Arabic support) pick one base language for direction and fonts and mix the other inside the content, using less of the support language as the level rises.

Rule: text never goes inside <svg>. Arabic shaping and direction break there. Text is HTML; SVG is only for shapes and icons.
Pedagogy

The teaching method

Teaching decks are designed to turn information shown into capability gained. Four ideas do most of the work.

1 · Attempt before instruction

Right after the cover, the reader meets a real problem and commits to an answer before any teaching. People learn most from the gap between what they expected and what turned out true. The problem is pitched attemptable but uncertain: you should have a guess and not be sure of it. At the end, the deck returns to the exact same problem (never a similar one) and solves it with what was just taught.

2 · The click trio

Every load-bearing idea gets all three, woven together. Two out of three is a definition, not understanding.

Structure

A picture

A diagram, flow, cards, mockup or comparison that shows the shape of the idea.

Mechanism

The why

Not what it does: why it works. The mechanism explains the picture.

Application

A real use

A real scenario where the idea visibly matters. The application proves the mechanism.

3 · Close every loop inside the deck

Each teaching deck delivers at least one complete, demonstrated capability in one sitting. "More next time" with no win is a failure: the content is split across decks rather than the payoff postponed. The recap is phrased as capabilities: "you can now…".

4 · Feedback is data, never judgment

A wrong answer gets the mechanism-level reason right away and a chance to apply it again. No scolding, no "unfortunately", no padding. And progress is always visible: roadmaps mark finished steps, and a concept missed last time and solved now is named on the slide.

The calm voice

  • Calm, not techy, not naive. Warm, plain, short sentences.
  • Zero prior knowledge unless told otherwise. Define a word before using it.
  • What and why before how.
  • One promise per deck. The cover promises; the closing pays it off.
  • Respect the reader's time. Fit the budget; brevity is part of the calm.
  • Visual-first. A text-only slide is a missed chance.
Teaching decks

Questions & the adaptive loop

Every teaching deck ends with a short question set and a copyable answer box. In a series, this is how the next lesson knows what to build on.

In the deck

  • A few multiple-choice questions plus 1–2 open questions on the load-bearing ideas.
  • 1–2 stretch questions, tagged [stretch]: one step beyond what was taught. Missing them is expected and useful.
  • A final answer box: an editable text area holding every question with space for your answers. Type in it freely: arrow keys and Space don't flip slides while you type.

After you paste it back

  1. Claude updates the notes file (NOTES.md) with what your answers show, each point tagged with the question that produced it.
  2. Claude answers your answers: for each miss, the reason at the mechanism level.

Paste the box into the chat even if you don't want a new lesson yet.

How the next lesson adapts

  • Earlier misses are re-tested early, in new clothing: same idea, different surface. A gap stays open until a later question closes it.
  • Wins are named: "missed last lesson — solved now".
  • Content is personalized (examples, analogies, depth) from the notes.
  • Stretch misses are not gaps. A missed stretch question becomes the next lesson's opening challenge; repeated misses on core questions mean re-teach.
  • Answers never change the roadmap on their own. Only a gap seen across two or more lessons may lead to a proposal ("Want a short preparation deck on X?"), applied only after your explicit yes.

The notes file

NOTES.md is written by Claude and read before every lesson. It stays small: a header (subject, roadmap version, date), a live picture (active gaps with the question that found them and the lesson that will re-test them, strengths, what kinds of explanation landed), a per-lesson log of a few lines each, and closed gaps. Single data points only tune tone and examples; only repeated patterns can justify a proposal.

Where your lessons live

Chat mode, repo mode, roadmaps

Chat modeRepo mode
WhereClaude apps (claude.ai, desktop, mobile)Claude Code, or any session with a working folder
Default outputOne complete teaching deck per requestA learning environment: folders, roadmap, notes, lessons
Memory between lessonsYou keep it: the roadmap spec rides inside each deck as an HTML comment, and you save and re-attach NOTES.mdOn disk: Claude reads docs/ before building and writes back after
SeriesPossible as a fallback, but "works best from a folder with Claude Code"Native, and committed to git after each artifact

Repo mode layout

On a new journey Claude creates only what is missing, and never touches files that aren't its own:

docs/ TOPIC.md # confirmed topic + aim (output of the topic conversation) ROADMAP.md # the living roadmap: readable path + spec JSON + changelog NOTES.md # cumulative learner notes lessons/ 00-roadmap.html # the roadmap deck 01-<step>.html # one deck per lesson answers/ lesson-01.txt # every pasted answer block, saved word for word

If the folder is a git repository, Claude commits after each artifact ("lesson 03: transformers — attention", "notes: lesson 02 answers").

Scope: narrow topic or broad subject?

Rule of thumb: could a person spend weeks learning this? If not, it's narrow: one deck. If yes, you choose:

Overview

One thorough deck of the whole subject from above. A complete lesson, not a teaser; 30 minutes at most.

Roadmap + Lesson 1

A researched learning path as its own deck, then the first lesson. Best in repo mode.

Deep dive

You narrow to one subtopic, and it becomes the whole deck.

Roadmap mode, step by step

  1. Shape the journey

    2–3 quick questions: hands-on · theory-first · balanced; with or without a business lens; job-ready · solid mental model · general literacy. These change emphasis and order, never correctness: no load-bearing step is dropped.

  2. Research the path

    Real web searches, so the order is right and nothing is outdated or missing. This is research about what to learn and in what order; deep research on each subject waits for its lesson.

  3. Roadmap deck + spec

    lessons/00-roadmap.html shows every phase, why it's there and how it connects. The machine-readable spec goes in docs/ROADMAP.md (repo mode) or a hidden comment in the deck (chat mode).

  4. Lesson 1

    Introduction, big picture and why, with a roadmap slide near the front: current step highlighted, finished steps marked.

  5. Every later lesson

    Load the roadmap → read NOTES.md (save any new answer block first) → re-check the roadmap is still current → propose a change only if the notes justify it → research and build the lesson, personalized → write the state back and commit.

ROADMAP-SPEC (inside docs/ROADMAP.md)
{"subject":"Machine learning","version":2,"updated":"2026-10-16",
 "shape":{"style":"balanced","business":"no","destination":"working mental model"},
 "steps":[
   {"n":1,"title":"What learning from data means","goal":"…","volatility":"solid",
    "research":"angles, sources and freshness checks to run when building this lesson"},
   {"n":4,"title":"Tooling: notebooks and libraries","goal":"…","volatility":"fast","research":"…"}],
 "changelog":[{"v":2,"date":"2026-10-16","cause":"research","change":"library X replaced Y as the common default"}]}

Why volatility? Lessons are often taken days or weeks apart, and fields move. Before every lesson Claude re-checks the roadmap: "fast" steps (tools, practices) get re-researched, "solid" steps (fundamentals) a light check. Every change bumps version and adds a changelog entry whose cause is either research (applied by Claude) or approved-proposal (applied only after your yes).

Engine v2

The slide engine

Every deck carries the same small script (no libraries). It is copied from the template and never edited; new behaviour goes after it.

Moving through a deck

ActionEnglish (LTR)Arabic (RTL)
Next (or next build step)→ ↓ Space PageDown · swipe left · Next ›← ↓ Space PageDown · swipe right · التالي ›
Previous (or undo a build step)← ↑ PageUp · swipe right · ‹ Prev→ ↑ PageUp · swipe left · ‹ السابق
First / last slideHome / End · or click a dot under the slide

A progress bar and a slide counter show where you are. Keys and swipes are ignored while you type in a field (the answer box) or work a widget marked data-capture (sliders, drag figures).

Anatomy of a slide

between the BEGIN/END SLIDES markers
<!-- the first slide, and only the first, is "slide active" -->
<section class="slide active"> … cover … </section>

<section class="slide">
  <!-- .reveal: animates in when the slide opens; --d staggers it -->
  <h2 class="reveal" style="--d:.1s">How a request finds a server</h2>

  <!-- data-build: appears one key-press at a time before the page turns -->
  <div data-build="1">1. Your browser asks a resolver.</div>
  <div data-build="2">2. The resolver asks the root.</div>
  <div data-build="3">3. The answer comes back.</div>

  <!-- data-capture: the engine leaves keys and swipes here alone -->
  <input type="range" data-capture>
</section>

Builds

  • data-build="0..n" reveals parts one press at a time.
  • Going back un-builds; arriving back at a slide shows it fully built.
  • data-builds="n" on a slide declares steps for a widget that listens to builds.
  • Never put data-build and .reveal on the same element.

Events for components

The engine fires two events on the slide element:

  • slideenter — the slide was opened (detail.from)
  • build — a build step changed (detail.step, detail.of)
component code goes after the engine, in the same <script>
const s = document.querySelector('#dns-slide');
s.addEventListener('slideenter', () => startDrawing(s));
s.addEventListener('build', e => moveToken(e.detail.step, e.detail.of));
No storage. Decks never use localStorage or sessionStorage; all state lives in memory, so a reload starts fresh.
references/components.md

Component library

43 copy-paste building blocks. Every one follows the canvas, the board and the language automatically, and lists the teaching jobs it suits, best fit first. These rankings are suggestions, not rules: a deck where every slide uses its "rank 1" component looks templated.

Core slides §1–§21Figures & interaction §22–§31 (v1.2)Skeletons & ported mechanics §32a–l

Core slides

1
Cover slideTitle and a one-line promise.
2
Closing slideThe message in one line plus a simple next step.
3
Section head + feature cardsThe "map": a preview of what's coming, or any set of parallel items.
4
Two-column: text + figureExplanation beside its picture; .rev puts the figure first.
5
Point listShort points with hand-drawn ticks.
6
Aside / calloutA side note, a plain-language gloss or a warning.
7
Window mockup + chatA browser or app frame; chat bubbles for dialogues.
8
Source rowsThe look of search results or a list of sources.
9
Bar chartData, or a "generated artifact" look.
10
Linked cardsA timeline or progression joined by a dashed connector.
11
Step cardA process or reusable recipe, step by step.
12
Tri-gridThree parallel ideas, centered.
13
TilesA labelled list with icons, in two columns.
14
Comparison tiersOptions or levels side by side, with meters.
15
Flow recapPills joined by arrows; the shape of the lesson.
16
Code windowA dark code panel for technical topics.
17
Icon setDrop-in 24×24 stroke icons that take the pen colour.
18
Roadmap / learning pathThe full path, current step highlighted, finished steps marked, changed steps flagged.
19
Opening challengeA problem you commit to before any teaching (teaching decks only).
20
Challenge revisitedThe same problem, solved with what was taught. Mandatory in teaching decks.
21
Question set + answer boxMCQs, open and stretch questions, and the copyable box.

Figures & interaction (added in v1.2)

22
Labels on the figureNames sit on the parts they name, pinned in the figure's own units. No numbered legend.
23
Linked figureSame colour, same thing: a word in the text and its part in the picture share a pen.
24
Anchored glossTap a word to see its definition right where it stands.
25
BuildsOne idea per key-press before the page turns (engine v2).
26
Magic boardMarks that move between states: algebra steps, a refactor, a sorted list.
27
Reactive sentenceA number you can drag; the rest of the sentence recalculates.
28
Ink marksHand-drawn circles and underlines that appear in order on a passage.
29
EraserWrite the wrong idea, erase it, write the right one. Made for misconceptions.
30
Sketch chartThe bar chart, hand-drawn, with the exact values printed.
31
Live element (line boil)A gently "boiling" hand-drawn stroke. At most one per slide, never on text.

Skeletons & ported mechanics (§32)

Behaviour without a fixed picture. The drawing ("skin") is invented fresh for each topic; working code is in assets/style-samples/sketchbook-kit.html.

32a
Steppable figureThe stepper skeleton: states with their own buttons, per-state values in data-o / data-sw / data-tf / data-txt / data-w.
32b
Lab widgetA slider drives a live readout and one verdict line; includes a decay mode, signal-vs-noise and a fixed-budget lamp.
32c
Note stackSticky notes that unfold in a reserved space; Sketchbook's default for depth.
32d
Detail trayIndex cards; tapping one fills a fixed-size tray. Any length of text, no layout jump.
32e
Gloss footnotesA paragraph carries the argument; numbered footnotes carry the depth.
32f
Duo panesTwo panes; the one you focus widens and opens, measured in advance so nothing jumps.
32g
Sketch quizOne question, hand-drawn options, a verdict; a wrong pick gets a red scribble and the reason.
32h
Token journeyA token travels a drawn route through 3–6 stops, driven by builds; mirrors in RTL.
32i
Pointer spotlight coverA cover where your pointer lights up words hidden on the board.
32j
Smudge panelsHeadlines always readable; their depth clears where attention lands (blur, not glow).
32k
Skins stepperOne skeleton, swappable drawings, each with its own captions.
32l
Key passage frameA double-ruled frame and drop initial for the one paragraph a slide turns on.

See them live: open the Mechanics kit tab in the demo at the top of this page.

references/use-cases.md

Teaching jobs

Before choosing a component, Claude names what each slide must do. There are 19 jobs. Each one is explained once in use-cases.md with everyday, lecture and tech examples, a "spot it when" line and a reverse index of components.

  1. For each planned slide, name its job in one phrase from the list.

  2. Open that job's entry and read its reverse index (best fit first).

  3. Choose a component, usually near the top, checked against the content and against what the neighbouring slides already use.

JobWhat the slide doesGood first picks
state-thesisPuts one claim on screen to remember tomorrow§1 Cover · §32i Spotlight · §32l Key passage
orientShows where the lesson is going and where you are§3 Map · §18 Roadmap
predict-firstAsks for a commitment before the explanation§19 Opening challenge · §20 Revisited
define-termHands over a word, where it is first used§24 Anchored gloss · §32c Note stack · §32e Footnotes
label-partsNames the parts of a thing, on the thing§22 Labels · §13 Tiles · §23 Linked figure
highlight-passageMarks the words in a passage that carry the meaning§28 Ink marks · §32l Key passage
explain-mechanismReveals the cause-and-effect chain inside§4 Text + figure · §23 · §25 Builds · §32a · §32h
follow-procedureLists steps you will do, in order§11 Step card · §10 Linked cards · §25 Builds
show-transformationShows one state turning into another§26 Magic board · §32k Skins stepper · §29 Eraser
build-intuitionLets you push a variable and feel the result§27 Reactive sentence · §32b Lab widget
compare-optionsPuts alternatives on the same criteria§14 Tiers · §32f Duo panes · §9 Chart
show-quantityShows numbers at a glance, values still readable§9 Bar chart · §30 Sketch chart
correct-misconceptionNames a wrong belief, refutes it, gives the better idea§6 Aside · §29 Eraser · §19 Challenge
tell-storyWalks through events in time§10 Linked cards · §7 Chat · §18 Roadmap
walk-codeExplains code a range at a time§16 Code window · §11 Step card · §26
demo-interfaceShows a tool in use§7 Window mockup · §8 Source rows
list-parallelPresents items of equal weight§5 Points · §12 Tri-grid · §13 Tiles
recapReconnects the pieces into a structure§2 Closing · §15 Flow recap
check-recallAsks you to retrieve and gives a verdict§21 Question set · §32g Sketch quiz

The "Spot it when" lines double as a classifier when converting lecture slides: they describe what a source slide doing that job usually looks like.

references/style-system.md

Style laws

Five laws apply to every deck. They keep decks calm, readable and consistent.

Law 1

Depth never moves the scene

Hover or tap content may appear only in one of four ways, and nothing unrelated may shift:

  • Reserved flow — space is kept for it inside a fixed box.
  • Fixed tray — content swaps inside a constant-size, scrolling area.
  • Overlay — it floats above, out of the layout (anchor positioning).
  • Final-geometry — it grows straight to sizes measured in advance.
Law 2

Skeleton ≠ skin

Behaviours (stepper, lab, journey, spotlight) are reusable. Drawings are not: each topic gets its own picture from a scene brief — pick the subject that best embodies the mechanism, draw it in the stroke vocabulary, map lesson states to scene states, write captions for that skin. Never reuse an exemplar's subject.

Law 3

One coordinate system per figure

Everything that moves in a figure lives inside its own SVG. Static labels may be HTML pinned in the figure's units (a label is not an actor), but never HTML floating over an SVG scene.

Law 4

One motion law

Draw-in strokes and slight rotations, easing cubic-bezier(.2,.7,.2,1), about 0.5 s. One sanctioned exception: line boil (§31), one element per slide.

Law 5

Little text, louder message

The always-visible layer carries one idea in few words. Everything else is depth (Law 1) or a visual.

The look, in short
  • Paper, not white; board, not black. Ink, not black; chalk, not white.
  • Wobbly frames, tape, sticky notes, long soft shadows.
  • No neon, glow, glass, glossy shadows, gradient surfaces, emoji, or purple-on-white "AI slop".
  • Generous whitespace; every slide fits the screen.

Drawing vocabularies

Ways to represent a mechanism, kept from the retired styles and drawn in ink or chalk:

Blocks and flows

Entities as nodes, processes as a token on a route, quantities as chips or a gauge, categories as zones.

Light and energy

Beams, pulses, orbits, signals: decay as a fading pulse, feedback as an orbit, limited capacity as one shared lamp. Matte, never glowing.

Objects that enact it

A path that stays open when walked; a tree that bears more after pruning.

The style file also maps eight content categories (definitional, process, intuition, comparison, narrative, code, thesis, check) to their visible layer, depth mechanic and signature component, and ends with a pre-ship checklist every deck is graded against.

references/design-system.md

Length budget

A reader spends about 60–90 seconds per slide. Claude turns your time budget into a slide count and stops there; if the topic needs more, each slide gets tighter, not the deck longer.

Reading timeSlides (with cover and closing)
≈ 10 min8–10
≈ 20 min (default)14–16
≈ 30 min16–20

In teaching decks, the opening challenge, the challenge revisited and the question set count inside this budget: they replace content slides, they are never added on top.

This slide budget is for ordinary decks. Decks made from lecture slides with the slides rulebook are measured differently: in words only, up to 2 × the lecture's words, with no slide-count limit.
scripts/

Validator & scripts

Two small Python 3 scripts, no packages to install.

validate.py — check a finished deck

terminal
python lesson-deck-builder/scripts/validate.py examples/isy-05-cryptography.html
output
slides: 30   ·   implied reading time ≈ 30–45 min
⚠ more than 20 slides — likely over a 30-minute calm budget; consider tightening
✓ clean.

✗ lines are problems (exit code 1); ⚠ lines are notes. It checks:

  • Exactly one <html>, <body> and <script>; balanced <style> tags
  • Exactly one slide with class="slide active"
  • No element with a duplicated style= attribute
  • A Google Fonts link is present
  • The engine is present, is v2 (builds + data-capture) and has the typing guard
  • The grain/dust is a tiled image, not a live full-screen SVG filter
  • Components that read --k-* bridge tokens have them defined
  • No element is both .reveal and data-build; scrubbers have data-capture
  • At most one .live element per slide; Arabic uses Playpen Sans Arabic 800
  • data-canvas / data-board are valid and their colours exist in the file
  • Fonts from retired styles; slide count and implied reading time

HTML comments are stripped before checking, so notes and records inside comments never cause false alarms.

use_cases.py — for people editing the skill

Keeps the components' "Suggested for" lists and the use-case catalogue in sync. Run it after changing either file.

terminal
python lesson-deck-builder/scripts/use_cases.py           # check only
python lesson-deck-builder/scripts/use_cases.py --write   # regenerate the reverse indexes, then check

Windows tip: if the console can't print ✓ or ·, set PYTHONIOENCODING=utf-8 first.

SKILL.md

Hard rules

Failure modes the skill always avoids. Useful when you edit a deck by hand, or review one.

  • No deck before the topic is confirmed, the canvas (and board) chosen, and the language known.
  • Never edit the engine part of the script; add code after it.
  • One active slide; no duplicated style=.
  • No localStorage / sessionStorage.
  • No text inside SVG; no HTML actors floating over an SVG scene.
  • Draw-in strokes are invisible before they animate (opacity gate, not dash math alone).
  • Every drag, slider or arrow-key widget carries data-capture.
  • data-build and .reveal never on the same element.
  • No hand-edited board colours; no rebuilding a retired look.
  • One motion law; hidden depth never reflows the scene.
  • Never reuse an exemplar's illustration subject.
  • Don't pad slides past the reading-time budget.
  • Teaching decks always have the challenge pair and the question set; presentation decks never do.
  • The revisited challenge is the same problem, never a new one.
  • Roadmaps change only through research, or a proposal you approved. Read NOTES.md before every roadmap lesson.
  • Never touch repo files that aren't the skill's own.
rulebooks/

The rulebooks

Two optional companion files for one specific, demanding job: turning university lecture slides (PDF or PPTX) into a deck that a student can study instead of the slides, ending with a self-marking quiz. You attach them to your request; they add to the skill and, where they say so, override it.

rulebooks/slides-rulebook.md · v1.9

Slides Rulebook

How to turn one lecture into one deck that is complete, easier to digest than the slides (in at most twice their words), in plain English (A2–B1), split into topics that each stand alone, taught with research-backed methods, and phone first. It also keeps every deck of a course consistent, from the first lecture to the last.

Read it on GitHub ↗

rulebooks/questions-rulebook.md · v1.3

Questions Rulebook

How to add a final quiz to a deck: about 10 minutes, several kinds of questions, marked on the page with a reason for every answer, and a score slide that sends you back to the topics you missed. Works with the slides rulebook or on its own, for any subject.

Read it on GitHub ↗

New in 1.8: easier to digest, not shorter The goal is no longer a deck shorter than the slides. It is a deck that is easier to digest: plain words even when they're longer, full sentences instead of bullet fragments, the "why", and a concrete example for every key idea.
  • Ceiling: at most 2 × the source's words (its text plus the words in its figures and tables). Never more.
  • Words only: there is no limit on the number of slides. Each slide stays a small chunk (about 50–70 words), so more explanation means more slides, not denser ones.
  • If a deck runs long, the deck's own extras (a second example, an analogy) are cut first. Facts and exact definitions are never cut; if they alone wouldn't fit, Claude stops and asks you.

How to use them

First deck of a course — attach the two rulebooks, deck-tools.zip and the lecture file, then send:

prompt · first deck
/lesson-deck-builder
Follow slides-rulebook.md for the attached lecture, and end the deck with a final quiz following questions-rulebook.md. Read the attached notes before planning.
This is the first deck of a new course: ask me the canvas and board before building.

Later decks of the same course — also attach the newest deck of the course (its code and choices are reused):

prompt · later deck
/lesson-deck-builder
Follow slides-rulebook.md for the attached lecture, and end the deck with a final quiz following questions-rulebook.md. Read the attached notes before planning. The newest deck of this course is attached.

Quiz only — for any existing deck: Add a final quiz to the attached deck, following questions-rulebook.md.

AttachWhenIn this repo?
slides-rulebook.mdAlwaysYes, rulebooks/
questions-rulebook.mdAlways (its quiz ends every deck)Yes, rulebooks/
The lecture (PDF or PPTX)Always; one deck per lecture fileYours
Earlier decks of the courseFrom the 2nd deck on (at least the newest)Yours (see the example)
deck-notes-general.md, <course>-notes.mdWhenever they exist: experience notes, not rulesNo — optional; the first deck of a course creates the course notes
deck-tools.zipAlways: the code both rulebooks point to, plus helper scripts. Unzip, then run bash deck-tools/setup_tools.sh once per sessionYes, rulebooks/deck-tools/ and the zip in the release

The attachments decide the case: A first deck of a course (asks the canvas gate and exam focus once), B a later deck (reuses the newest deck as the "shell" and asks only what's new), C decks of another course attached (settings don't carry over).

The six goals of the slides rulebook

GoalMeaningHow it's checked
G1 Replace the slidesEvery fact taught at full strength; definitions in the slides' own wordsFact ledger at 100% + a clean independent check
G2 English at A2–B1Everyday words, short sentencesplain_check.py: ≥98% known words, no sentence over 20 words
G3 Independent topicsAny topic understood alone; no unexplained wordGloss and acronym checks; a "cold read"
G4 Best ways to teachThe Concept Pattern and teaching rules TE1–TE10Checklist
G5 Easier to digest, in at most twice the wordsPlain, full explanations with an example for every key idea, in small chunks; at most 2 × the source's words, with no slide-count limitplain_check.py: words ≤ 200% of the source; Concept Pattern, words per slide, cold read
G6 Phone firstWorks upright on a phone, unchanged on a laptopChecks at 390×844, 360, 320 and sideways

When rules conflict: correctness first, then completeness, then the 2 × word ceiling, then ease of understanding, then teaching method, then style. Completeness and the ceiling are both hard limits: extras are cut to meet the ceiling, and if the facts alone wouldn't fit, Claude asks you.

Where the extra words go

The room between the source's word count and the ceiling is spent in this order, and cut from the bottom up when a deck runs long:

  1. Plain words and full sentences, even when they're longer than the slides' wording.
  2. A concrete example for every key idea, and a worked example for every procedure, calculation or piece of code.
  3. The "why": the mechanism in a sentence or two.
  4. Help where it's needed: visible glosses, a plain reading beside every exact quote, background the slides assume.
  5. The common mistake, named and corrected.
  6. A second example or an analogy, only for ideas students often find hard.

Never padding, repeats or decorative stories: the ceiling is a limit, not a goal.

What's inside each file

Slides rulebook
  • Workflow W1–W11: read every page (text and images), measure the source's words, build a fact ledger, research every key concept, order for learning, plan, confirm only real decisions, write a term sheet, draft, build, check, deliver, update notes.
  • Rule families with IDs you can cite in feedback: L (language), T (terms), TE (teaching), F (fidelity), V (visuals), M (phone), N (navigation), Q (checks).
  • The Concept Pattern: ask · plain idea + case · name it · picture · why it works · worked example · common mistake · check.
  • Settings (§11): vocabulary level, Arabic support, deck shape, word ceiling (2 × by default; Tighter 1.5 ×; Shorter, the old rule), quiz on/off, glossary, navigation, exact wording…
  • Appendices: what the checker, topic bar, glossary, phone layer and checker's brief do and where they go; their code is in deck-tools.
Questions rulebook
  • Goals QG1–QG5: answerable from the deck alone, fair but challenging, ≈10 minutes, covers every topic, marks itself and teaches.
  • Method: list what the deck teaches by kind of knowledge, match each to the best question kinds, pick 6–9 kinds, about 2 items each.
  • Nine proven kinds: Choose one · True or false · Fill the gap (word bank) · Match · Put in order · Sort into groups · Find the mistake · Work it out · Label the figure. Plus six ready-to-build kinds and a list of rejected ones (with reasons).
  • Layout: intro slide, one slide per kind, a live score slide with "Revisit" buttons per missed topic, and "Try the quiz again".
  • Appendices: the quiz markup, CSS, script and browser walk (code in deck-tools), and a worked example.

Records kept inside each deck

Rulebook decks carry their own paper trail as HTML comments (invisible, ignored by the validator):

CommentWhat it holds
<!-- COURSE -->The course's standing choices: canvas and board, exam focus, settings, field words, deck number. Later decks copy it, so nothing is asked twice.
<!-- BUDGET -->The source's word count (text + words inside figures). The deck's ceiling is twice this number.
<!-- FACT-LEDGER -->Every fact of the lecture, by page, with where the deck teaches it.
<!-- SOURCES -->The research behind the deck: fidelity checks, misconceptions, slide errors.
<!-- QUIZ-MAP -->Each quiz item: kind, answer, source page, topic.
<!-- INDEPENDENT-CHECK -->Each pass of the separate checker agent and what it found, until it found nothing.
The rulebooks' code: deck-toolsEvery run reads both rulebooks in full, so their code lives in deck-tools instead: plain_check.py, quiz_walk.py, the checker's brief, and snippets/ (topic bar, glossary, phone layer, quiz markup/CSS/script). Setup copies the scripts into place. Both rulebooks have a size cap (110,000 and 32,000 characters) that deck-tools/size_check.py checks, and their version history lives in rulebooks-changelog.md. Since 1.9/1.3 a run reads about 104,000 + 29,000 characters instead of 140,126 + 65,805.

Tools they use: Python 3 for validate.py and plain_check.py (it needs pip install wordfreq and downloads the free CEFR-J word list on first run). Optional: pdftotext and tesseract for counting the source's words, and Playwright for the quiz's browser walk. If code can't run, Claude says so in the report instead of inventing numbers.
examples/isy-05-cryptography.html

Worked example: a real lecture deck

Lecture 5 of an information-security course (Cryptography), built with the skill and both rulebooks. It is the fifth deck of its course, so it reused the newest earlier deck as its shell.

CanvasChalkboard · Deep teal · English (dir="ltr")
Size30 slides: 19 teaching + 11 quiz, from a 26-page lecture PDF
TopicsStart · Techniques and model · Symmetric-key · Review · Final quiz — shown as a topic bar instead of dots
Quiz16 items in 9 kinds: Choose one, True or false, Fill the gap, Match, Sort, Put in order, Find the mistake, Work it out, Label the figure
ExtrasA deck glossary ("Words in this deck"), tap-to-define terms, builds, and the phone layer
Checksvalidate.py clean; independent check run four times until nothing was missing, weakened, contradicted or misquoted
Words2,105 words outside the quiz, for a 989-word lecture (213%, measured with plain_check.py). It was built under rulebook v1.7, where exact definitions could push a deck past its word limit. Under v1.8's 2 × ceiling (1,978 words), about 130 words of the deck's own additions would be cut.

Things to try

Navigate

Click the deck, press → or Space. Some slides build step by step before turning.

Take the quiz

Click "Final quiz" in the topic bar. Answer, check, and watch the score slide send you back to missed topics.

Read the records

Open the file in a text editor and search for COURSE, FACT-LEDGER or QUIZ-MAP near the end.

The validator's "more than 20 slides" note is expected here: the slides rulebook makes one deck per lecture and measures its length in words, not slides. The deck quotes the lecture's definitions word for word (rule F2); those quotations belong to their original authors.

What's in the box

Repository layout

lesson-deck-builder/ # ← the skill itself: copy this folder to install SKILL.md # the instructions Claude reads: workflow, teaching method, hard rules CHANGELOG.md # what changed in v1.2, v1.2.1 and v1.3 assets/ template.html # the deck engine + all canvases and boards; every deck starts here style-samples/ sketchbook.html # exemplar deck, paper sketchbook-chalkboard.html # exemplar deck, chalkboard; top-bar dots preview every board sketchbook-kit.html # working code for the §32 mechanics references/ style-system.md # authoritative visual rules: laws, canvases, boards, checklist design-system.md # practical setup: fonts, direction, length budget components.md # copy-paste HTML for all 43 components use-cases.md # the 19 teaching jobs + which components suit each scripts/ validate.py # checks a finished deck use_cases.py # keeps components.md and use-cases.md in sync rulebooks/ slides-rulebook.md # lecture slides → standalone study deck questions-rulebook.md # the self-marking final quiz rulebooks-changelog.md # both rulebooks' version history (not read by runs) deck-tools/ # the rulebooks' code: checker, quiz walk, snippets/, setup, size_check examples/ isy-05-cryptography.html # a real deck built with the skill and both rulebooks index.html, site/ # this documentation page (GitHub Pages) README.md · LICENSE

Claude reads SKILL.md first and opens the reference files only when a step needs them, so the large files don't slow small requests down.

Questions

FAQ

Do I need to know HTML or code?

No. You talk to Claude; it writes the file. HTML only matters if you want to edit a deck by hand.

Why does Claude ask questions before building?

Three answers are required: the confirmed topic (a mis-aimed topic spoils every slide), the canvas, and the language. Say them in your first message to skip the questions; the topic is still confirmed in one line.

Does a deck work offline?

Yes, except the fonts, which load from Google Fonts. Offline, the deck falls back to your system fonts and keeps working.

Can I get a PowerPoint file?

Not from this skill. It makes HTML decks. Use a PowerPoint (.pptx) skill if you need a native slide file.

How do I share a deck?

Send the .html file, or put it on any static host (GitHub Pages, Netlify, a school site). It opens on phones too.

Can I change a deck after it's made?

Yes: ask Claude ("switch to the Midnight blue board", "make slide 6 a comparison", "shorter"). By hand, edit only between the BEGIN SLIDES / END SLIDES markers, keep exactly one slide active, never touch the engine script, and run validate.py.

Which languages are supported?

Arabic (right to left) and English (left to right), with fonts and layout tuned for each. Bilingual lessons use one as the base and mix in the other.

Where are Playroom, Nocturne, Terra and Classic?

Retired in v1.3. Sketchbook is the only look now. Their useful mechanics (tray, footnotes, duo panes, token journey, spotlight, smudge panels…) were redrawn in Sketchbook as components §32.

Arrow keys flip slides while I type in the answer box.

That deck has an old engine. Current decks ignore navigation keys inside text fields, and validate.py flags any deck without that guard. Copy a fresh engine from assets/template.html.

The validator says "more than 20 slides". Is that an error?

No, it's a note (⚠), not a problem (✗). It warns that a normal deck may be over the 30-minute budget. Rulebook lecture decks are expected to trigger it.

Can I add my own chalkboard board?

Yes, as a change to the skill. style-system.md §5 lists the tuning rules every board must meet (lightness, chalk colour, contrast, pen saturation) and every file that lists the boards.

Do I have to use the rulebooks?

No. They are only for turning lecture slides into study decks. For everything else, the skill alone is enough.

People & terms

Contributors & license

Ali AlQahtani · @MstrPxlCreator and maintainer of the skill and the rulebooks.
Claude · by AnthropicCo-author: worked on the skill, the rulebooks and this documentation with Ali.

Versions

VersionDateHighlights
Skill v1.32026-10-09Sketchbook only; canvas gate with paper and six chalkboard boards; template rebuilt; retired styles' mechanics ported to §32.
Skill v1.2.12026-10-07Chalk grain removed; chalkboard text renders clean.
Skill v1.22026-10-06Use-case system; engine v2 (builds, capture guard, events); components §22–§31; validator upgrades.
Slides rulebook 1.9 · Questions rulebook 1.32026-10-17Structure only, no rule changed: code moved to deck-tools 1.6, history to the rulebooks changelog, size caps with size_check.py.
Slides rulebook 1.82026-10-16Easier to digest, not shorter: up to 2 × the source's words, never more; size measured in words only, no slide-count limit; plain_check.py --ceiling.
Slides rulebook 1.72026-10-10Fact ledger, required independent check, exact wording for every definition.
Questions rulebook 1.2.12026-10-10Goals over procedures; "Departures" line in the report.

Full details: the skill's CHANGELOG.md and the rulebooks changelog.

Contributing

Issues and pull requests are welcome. If you change the skill: keep SKILL.md and the references consistent, run scripts/use_cases.py after touching component lists or use cases, run validate.py on the template and exemplars, and add a CHANGELOG.md entry.

License

The skill, rulebooks and this site are released under the MIT License. The example deck quotes definitions from its source lecture; those quotations remain their authors'.