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.
.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.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/.
git clone https://github.com/MstrPxl/lesson-deck-builder.git
mkdir -p ~/.claude/skills
cp -r lesson-deck-builder/lesson-deck-builder ~/.claude/skills/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)
- Download
lesson-deck-builder.zipfrom the latest release. (Or zip thelesson-deck-builder/folder yourself: the zip must contain that folder, withSKILL.mdinside it.) - In Claude, open Settings → Capabilities, make sure code execution is on, and upload the zip under Skills.
- 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 pullin your clone, then copy the folder again (replace the old one)
Your first deck
Just ask in plain words. Any of these works:
"Make me slides explaining how vaccines work, for someone with no science background."
"Build a short deck that introduces our new note-taking app to the team."
"I want to learn machine learning from zero. Start a learning path for me." (best in Claude Code, inside a folder)
A typical conversation
You ask
You/lesson-deck-builder Make slides explaining how vaccines work.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?Claude asks the canvas and the language
ClaudeCanvas? I suggest Paper (bright, good for daytime reading) · or Chalkboard. And: Arabic or English?A short intake
ClaudeWho is it for (complete beginner · generally informed · expert), and how long (≈10 · 20 · 30 min)?Claude plans, builds and checks
It sketches the slide list, fills slides from the component library, and runs
validate.py.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".
Prompt builder
Pick your options and copy a ready 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.
How a session goes
Claude follows the same steps every time. Knowing them helps you answer quickly and know what to expect.
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.
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.
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.
The language (required)
"Arabic or English?" Asked every time unless you already said it. It sets direction, fonts, button labels and arrow keys.
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.
Intake
One quick round: the angle, the audience level (default: "a newcomer gains real understanding"), and the length (default ≈20 minutes).
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.
Set up from the template
Copies
assets/template.html, setsdir/lang, fonts, nav labels and the canvas attributes. The engine script is never edited.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.
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.
Two kinds of deck
So you can do or understand something new
Lessons, explainers, tutorials, every lesson of a learning path. Uses the teaching arc:
To inform or persuade
A pitch, a product intro, a showcase, a report. Uses the classic arc, with no challenge and no questions:
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.
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:
<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.
Language & direction
كيف تعمل اللقاحات؟
<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.
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.
<svg>. Arabic shaping and direction break there. Text is HTML; SVG is only for shapes and icons.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.
A picture
A diagram, flow, cards, mockup or comparison that shows the shape of the idea.
The why
Not what it does: why it works. The mechanism explains the picture.
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.
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
- Claude updates the notes file (
NOTES.md) with what your answers show, each point tagged with the question that produced it. - 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.
Chat mode, repo mode, roadmaps
| Chat mode | Repo mode | |
|---|---|---|
| Where | Claude apps (claude.ai, desktop, mobile) | Claude Code, or any session with a working folder |
| Default output | One complete teaching deck per request | A learning environment: folders, roadmap, notes, lessons |
| Memory between lessons | You keep it: the roadmap spec rides inside each deck as an HTML comment, and you save and re-attach NOTES.md | On disk: Claude reads docs/ before building and writes back after |
| Series | Possible 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:
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:
One thorough deck of the whole subject from above. A complete lesson, not a teaser; 30 minutes at most.
A researched learning path as its own deck, then the first lesson. Best in repo mode.
You narrow to one subtopic, and it becomes the whole deck.
Roadmap mode, step by step
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.
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.
Roadmap deck + spec
lessons/00-roadmap.htmlshows every phase, why it's there and how it connects. The machine-readable spec goes indocs/ROADMAP.md(repo mode) or a hidden comment in the deck (chat mode).Lesson 1
Introduction, big picture and why, with a roadmap slide near the front: current step highlighted, finished steps marked.
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.
{"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).
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
| Action | English (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 slide | Home / 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
<!-- 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-buildand.revealon 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)
const s = document.querySelector('#dns-slide');
s.addEventListener('slideenter', () => startDrawing(s));
s.addEventListener('build', e => moveToken(e.detail.step, e.detail.of));localStorage or sessionStorage; all state lives in memory, so a reload starts fresh.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
.rev puts the figure first.Figures & interaction (added in v1.2)
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.
data-o / data-sw / data-tf / data-txt / data-w.See them live: open the Mechanics kit tab in the demo at the top of this page.
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.
For each planned slide, name its job in one phrase from the list.
Open that job's entry and read its reverse index (best fit first).
Choose a component, usually near the top, checked against the content and against what the neighbouring slides already use.
| Job | What the slide does | Good first picks |
|---|---|---|
state-thesis | Puts one claim on screen to remember tomorrow | §1 Cover · §32i Spotlight · §32l Key passage |
orient | Shows where the lesson is going and where you are | §3 Map · §18 Roadmap |
predict-first | Asks for a commitment before the explanation | §19 Opening challenge · §20 Revisited |
define-term | Hands over a word, where it is first used | §24 Anchored gloss · §32c Note stack · §32e Footnotes |
label-parts | Names the parts of a thing, on the thing | §22 Labels · §13 Tiles · §23 Linked figure |
highlight-passage | Marks the words in a passage that carry the meaning | §28 Ink marks · §32l Key passage |
explain-mechanism | Reveals the cause-and-effect chain inside | §4 Text + figure · §23 · §25 Builds · §32a · §32h |
follow-procedure | Lists steps you will do, in order | §11 Step card · §10 Linked cards · §25 Builds |
show-transformation | Shows one state turning into another | §26 Magic board · §32k Skins stepper · §29 Eraser |
build-intuition | Lets you push a variable and feel the result | §27 Reactive sentence · §32b Lab widget |
compare-options | Puts alternatives on the same criteria | §14 Tiers · §32f Duo panes · §9 Chart |
show-quantity | Shows numbers at a glance, values still readable | §9 Bar chart · §30 Sketch chart |
correct-misconception | Names a wrong belief, refutes it, gives the better idea | §6 Aside · §29 Eraser · §19 Challenge |
tell-story | Walks through events in time | §10 Linked cards · §7 Chat · §18 Roadmap |
walk-code | Explains code a range at a time | §16 Code window · §11 Step card · §26 |
demo-interface | Shows a tool in use | §7 Window mockup · §8 Source rows |
list-parallel | Presents items of equal weight | §5 Points · §12 Tri-grid · §13 Tiles |
recap | Reconnects the pieces into a structure | §2 Closing · §15 Flow recap |
check-recall | Asks 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.
Style laws
Five laws apply to every deck. They keep decks calm, readable and consistent.
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.
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.
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.
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.
Little text, louder message
The always-visible layer carries one idea in few words. Everything else is depth (Law 1) or a visual.
- 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:
Entities as nodes, processes as a token on a route, quantities as chips or a gauge, categories as zones.
Beams, pulses, orbits, signals: decay as a fading pulse, feedback as an orbit, limited capacity as one shared lamp. Matte, never glowing.
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.
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 time | Slides (with cover and closing) |
|---|---|
| ≈ 10 min | 8–10 |
| ≈ 20 min (default) | 14–16 |
| ≈ 30 min | 16–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.
Validator & scripts
Two small Python 3 scripts, no packages to install.
validate.py — check a finished deck
python lesson-deck-builder/scripts/validate.py examples/isy-05-cryptography.htmlslides: 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
.revealanddata-build; scrubbers havedata-capture - At most one
.liveelement per slide; Arabic uses Playpen Sans Arabic 800 data-canvas/data-boardare 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.
python lesson-deck-builder/scripts/use_cases.py # check only
python lesson-deck-builder/scripts/use_cases.py --write # regenerate the reverse indexes, then checkWindows tip: if the console can't print ✓ or ·, set PYTHONIOENCODING=utf-8 first.
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
activeslide; no duplicatedstyle=. - 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-buildand.revealnever 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.mdbefore every roadmap lesson. - Never touch repo files that aren't the skill's own.
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.
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.
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.
- 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:
/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):
/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.
| Attach | When | In this repo? |
|---|---|---|
slides-rulebook.md | Always | Yes, rulebooks/ |
questions-rulebook.md | Always (its quiz ends every deck) | Yes, rulebooks/ |
| The lecture (PDF or PPTX) | Always; one deck per lecture file | Yours |
| Earlier decks of the course | From the 2nd deck on (at least the newest) | Yours (see the example) |
deck-notes-general.md, <course>-notes.md | Whenever they exist: experience notes, not rules | No — optional; the first deck of a course creates the course notes |
deck-tools.zip | Always: the code both rulebooks point to, plus helper scripts. Unzip, then run bash deck-tools/setup_tools.sh once per session | Yes, 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
| Goal | Meaning | How it's checked |
|---|---|---|
| G1 Replace the slides | Every fact taught at full strength; definitions in the slides' own words | Fact ledger at 100% + a clean independent check |
| G2 English at A2–B1 | Everyday words, short sentences | plain_check.py: ≥98% known words, no sentence over 20 words |
| G3 Independent topics | Any topic understood alone; no unexplained word | Gloss and acronym checks; a "cold read" |
| G4 Best ways to teach | The Concept Pattern and teaching rules TE1–TE10 | Checklist |
| G5 Easier to digest, in at most twice the words | Plain, full explanations with an example for every key idea, in small chunks; at most 2 × the source's words, with no slide-count limit | plain_check.py: words ≤ 200% of the source; Concept Pattern, words per slide, cold read |
| G6 Phone first | Works upright on a phone, unchanged on a laptop | Checks 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:
- Plain words and full sentences, even when they're longer than the slides' wording.
- A concrete example for every key idea, and a worked example for every procedure, calculation or piece of code.
- The "why": the mechanism in a sentence or two.
- Help where it's needed: visible glosses, a plain reading beside every exact quote, background the slides assume.
- The common mistake, named and corrected.
- 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
- 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.
- 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):
| Comment | What 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. |
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.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.
| Canvas | Chalkboard · Deep teal · English (dir="ltr") |
|---|---|
| Size | 30 slides: 19 teaching + 11 quiz, from a 26-page lecture PDF |
| Topics | Start · Techniques and model · Symmetric-key · Review · Final quiz — shown as a topic bar instead of dots |
| Quiz | 16 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 |
| Extras | A deck glossary ("Words in this deck"), tap-to-define terms, builds, and the phone layer |
| Checks | validate.py clean; independent check run four times until nothing was missing, weakened, contradicted or misquoted |
| Words | 2,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
Click the deck, press → or Space. Some slides build step by step before turning.
Click "Final quiz" in the topic bar. Answer, check, and watch the score slide send you back to missed topics.
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.
Repository layout
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.
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.
Contributors & license

Versions
| Version | Date | Highlights |
|---|---|---|
| Skill v1.3 | 2026-10-09 | Sketchbook only; canvas gate with paper and six chalkboard boards; template rebuilt; retired styles' mechanics ported to §32. |
| Skill v1.2.1 | 2026-10-07 | Chalk grain removed; chalkboard text renders clean. |
| Skill v1.2 | 2026-10-06 | Use-case system; engine v2 (builds, capture guard, events); components §22–§31; validator upgrades. |
| Slides rulebook 1.9 · Questions rulebook 1.3 | 2026-10-17 | Structure 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.8 | 2026-10-16 | Easier 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.7 | 2026-10-10 | Fact ledger, required independent check, exact wording for every definition. |
| Questions rulebook 1.2.1 | 2026-10-10 | Goals 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'.