The visual system behind every explainer, shown with itself

How an explainer is built

Reading time about 10 minutesVersion 1.0, 2026-10-07For: anyone writing or reading one

An explainer is a page you can skim in a minute and still get the point: the answer comes first, colour has one meaning, every chapter has a picture, and the page remembers so you do not have to.

Keep in your head (only these)
  1. Yellow means "this is what you keep".
  2. Every chapter stands on its own.
  3. Skim mode shows the story in pictures; one-chapter mode shows one thing at a time.

What the first screen holds

Four steps, in this order
  1. The openingAn answer, then three facts.
  2. At a glanceThe page's own picture.
  3. The chaptersOne idea each.
  4. Recap and askWhat to carry, and what to pick.

Take: the picture comes before the chapters, so the first screen already says what kind of page this is.

  1. Memory is the limitWhy the page restates things and never asks for a fourth fact.
  2. Colour means one thingSix colours, six meanings, no decoration.
  3. Show the relationshipWhen a picture replaces a paragraph, and which picture.
  4. When you must decideHow a decision is laid out so choosing takes a minute.
  5. Where things standTimelines, status boards, grids, lanes and the few numbers that matter.
  6. Words and machineryPlain words in the reading path, exact details in folds.
  7. Ask and collectQuestions you answer on the page, saved on your device.

Chapter 1 of 7, about 2 minutes

Your working memory is the limit, so the page carries the load

Page map: you are in chapter 1 of 7, Memory Memory Colour Pictures Decide Standing Words Ask

Before this: the answer at the top said the page remembers things so you do not have to. This chapter shows how.

Reading a long document means holding earlier facts while you take in new ones. With a short working memory, the earlier facts fall out as you scroll. Then you scroll back, lose your place, and give up.

  1. Read a factSection one says X.
  2. ScrollThree screens of new stuff.
  3. Forget XSection four needs it.
  4. Scroll backLose your place. Stop.

An explainer breaks that loop by restating context exactly where it is needed. Four devices do this, and the ones that hold something for you are yellow, so you learn them once.

  1. Keep cardsThree facts, at the top.
  2. Before thisEach chapter restates its one input.
  3. Remember lineEach chapter ends with one sentence.
  4. RecapThe remember lines, collected.

It is like reading with sticky notes already on the page. Someone stuck a note on every section saying what you need from earlier. You never flip back. Where it stops: here the notes are not optional.

Why three, and why yellow

Working memory research puts the practical span at three to four items for most adults, lower under stress or with ADHD. Three is the safe number. One colour for all memory devices means one association to learn instead of four.

Show the reading controls
  • Reading tools opens one small panel. On a wide screen its button sits in the rail, under the count of chapters read. On a phone it sits at the end of the line under the title. Escape closes it.
  • Read aloud is the speaker in a chapter's header. It reads that chapter, one block at a time, and appears when your browser can speak.
  • Done is the check beside it. The rail shows each chapter you have read and counts them.
  • Reading ruler keeps the block under your pointer clear and fades the rest of the chapter.
  • Text size has three steps: A−, A and A+, and a large step beyond that.
  • Keys lists the shortcuts: J and K change chapter, F, S, D and R switch the modes.
  • When you come back, the page offers to continue where you stopped. When every chapter is done, it says so.

Remember: anything yellow is something the page is holding for you; you can stop holding it.

Chapter 2 of 7, about 2 minutes

Colour means one thing, and never decorates

Page map: you are in chapter 2 of 7, Colour Memory Colour Pictures Decide Standing Words Ask

Before this: yellow is the page holding something for you. Five more colours carry meaning the same way.

Attention goes to the brightest thing on screen. If bright colour is spent on decoration, attention is spent on nothing. So the page is calm fog and navy, and colour appears only when it says something.

  • GreenDone, safe, yes, recommended.
  • AmberIn progress, caution, needs a check before you rely on it.
  • RedBlocked, risk, no.
  • PurpleYou must choose. The page cannot go on without you.
  • CobaltYou are here: the rule above the answer, the current chapter, links, the current step.
  • YellowHeld for you: keep cards, remember lines.

Each dot also carries a symbol, so colour never works alone.

Callouts use the same three meaning colours, and only when they change what you should do next.

Tip

A tip is something that makes the next step easier. If it does not change what you do, it is not a tip and it is not on the page.

Check before relying on this

Amber marks a thing that is probably fine but has not been verified. The page says what would verify it.

Do not do this

Red marks a step that breaks something. It says what breaks and what to do instead.

Strength without colour: a table of findings

A research page says how sure it is in words and three bars, never in a colour. Only the weak row gets a tint, because that is the one to look at.

  • Notes reach the server quicklySaves land in under a second, even on a weak signal.8 sources
  • Two devices rarely clashClashes showed up on 3 of 40 test days.5 sources1 open
  • Storage cost stays smallThe prices are quoted, but the plan tier is a guess.3 sources2 open
  • Notes survive a restartEvery test run kept its unsynced notes.6 sources

Take from this: three findings stand firm. The weak one, storage cost, is the one the choice turns on.

Remember: if a colour shows up, it is telling you something; if nothing is coloured, nothing needs you.

Chapter 3 of 7, about 2 minutes

Show the relationship instead of describing it

Page map: you are in chapter 3 of 7, Pictures Memory Colour Pictures Decide Standing Words Ask

Before this: colour is used only for meaning. Diagrams use the same six colours, and the same rule.

A paragraph that describes a branch makes you hold both branches in your head. A diagram puts them on the screen side by side. That is the whole reason to draw one.

A request either stops at a gate or goes through, drawn as a branch Request arrives Allowed? no Clear message, stop yes Goes through
Take from this: there are only two outcomes, and the reader sees both at once instead of holding one while reading about the other. No: the request stops at the gate with a clear message. Yes: the request goes through.

Most relationships do not need a drawn diagram. A sequence is a flow. Two states of one thing are a split.

Before: a paragraph
  • "After validation the request is either rejected with a message or forwarded, unless…"
  • Reader holds two paths.
  • Reader rereads.
After: the diagram above
  • Both paths visible.
  • One caption states the point.
  • Paragraph deleted.

A product walkthrough is the same idea with real screens. Each step is one screenshot, one numbered pin, and one line.

  1. The Vault accounts list with the Savings account picked1

    Pick an account

    The list shows every account you can open. The picked row is the one the next screen works on.

  2. The transfer form with 250 dollars typed into the amount field2

    Type the amount

    Only the amount is yours to fill in. The destination is already chosen.

  3. The same transfer form, with the Review button ready under the amount3

    Review the transfer

    One last look at the amount and the destination. Then you send it.

Take from this: a tour shows the real screen first, then says in one line where to look.

The filmstrip: every step of a tour on one screen

A tour page opens with its steps as thumbnails. The page builds the strip from the steps above, so nothing is typed twice.

The tour in three screens

Moving money between accounts

Take: pick an account, type an amount, then review it. Tap a screen to jump to its step.

Mock screens: what the people affected will see

A plan for a risky change shows each audience what it will notice. A frame is a small browser window, or a phone, holding a plain mockup and one take-away line. A row lays out two to four of them, and stacks them on a phone.

example.com/sign-in
Sign in Sign in
Take from this: from switch day, people sign in once more.
team chat
From you, FridayThe site moves on Saturday evening. You will sign in once more.
Take from this: a day before, one message tells people.
A hero with a thesis drawing

A playbook may open with a small drawing of the outcome beside its title, and under it on a phone.

A plan for one risky change

Moving the team wiki to a new host

Written 2026-10-13For: the wiki owner
The wiki is copied from the old host to the new host, and a dashed line shows the way back for a month. Old hostthe wiki today copy first New hostthe wiki after the way back, for a month
The rules for a drawn diagram
  • Seven boxes at most. Left to right, then top to bottom.
  • Labels under four words. Details in the caption.
  • One "you are here" box at most. No crossing lines.
  • Colour classes, never hard-coded fills, so dark mode works.
  • A caption that says the one thing to take from it. No caption, no diagram.

Remember: when you see a diagram, read its caption first; the caption is the point, the drawing is the proof.

Chapter 4 of 7, about 2 minutes

When you must decide, the page lays the choice out for you

Page map: you are in chapter 4 of 7, Decide Memory Colour Pictures Decide Standing Words Ask

Before this: purple means "you must choose". This chapter shows what a purple card contains.

A decision buried in prose costs a reread per option. A decision card puts the options side by side, marks the one the writer recommends, and says what happens if you decide nothing. You can choose in a minute.

Should the explainer load web fonts?

The page must read well offline. Fonts change how it reads online.

Load them, fall back quietly

  • Best reading experience online
  • Offline still reads well on system fonts
  • One request to Google Fonts

Cost: none to the reader.

System fonts only

  • Zero network
  • Reading-optimised faces lost
  • Looks different on every machine

Cost: a worse read for most people.

Embed the font files

  • Identical everywhere
  • Adds about 300 KB per page
  • Licence bookkeeping

Cost: every explainer gets heavy.

If you do nothing: the template already loads them with a fallback. Nothing breaks.

Should the explainer load web fonts?

A decision page can end in tap-to-answer fields. Each card is followed by its field, and one collect bar sits after the recap. A chip such as ⚠ Heavy pages names a cost in words.

When the decision leads to action, the actions are a ladder. Each rung is one verb and one line.

  1. Read the answer. If you agree, you can stop here.
  2. Open the decision card. Compare the option columns.
  3. Pick. Use the buttons in the ask at the end of the page.

When each rung is a command, a runbook adds what a person needs at the keyboard: how to know it worked, and what to do if it did not.

  1. Check the page.
    node scripts/check.mjs docs/explainers/2026-10-13-checkout.html

    Check: the first line says PASS and the exit code is 0.

    If it fails: fix every line that starts with FAIL, then run the checker again.

  2. Tag the release.
    git tag -a v1.2.0 -m "html-explainer 1.2.0"

    Check: git ls-remote --tags origin lists v1.2.0.

    If it fails: the tag exists already; delete it locally and tag again.

  3. Update the installed copy.
    claude plugin update html-explainer@html-explainer-skill

    Check: the plugin list shows version 1.2.0.

    If it fails: restart Claude Code and run the command again.

Take from this: every step ends in a check the reader can run, and a way out if the check fails.

The overview that ticks itself

A runbook opens with every step as one row, grouped by chapter. Tick a row and its step ticks too. The first step still open is marked Next.

The five steps, in order

Publish the wiki page

Take: the page builds this list from the steps themselves, and remembers what you ticked.

Rulings: the board that opens a decision page

A decision page opens with one row per card: the question, the recommended option and where it stands. The board builds itself from the cards and their answer fields. Tap an answer to watch it change.

Your three rulings

Rule on the first one first

Take: the first ruling still waiting gets the one tint. Nothing else on the board is coloured.

Should notes sync over mobile data?

A phone plan can charge for the data a sync uses.

Text only on mobile data

  • Notes stay current
  • Pictures wait for Wi-Fi

Wi-Fi only

  • No data is used
  • A note can be hours old

If you do nothing: sync stays on Wi-Fi only.

Should notes sync over mobile data?

Which export format comes first?

People ask for both. Building one well takes a week.

Markdown files

  • Opens in any editor
  • No page layout

PDF

  • Looks the same everywhere
  • Hard to edit again

If you do nothing: export waits until the next planning round.

Which export format comes first?

Remember: a purple card always tells you the recommended option and what happens if you ignore it.

Chapter 5 of 7, about 2 minutes

Where things stand and what comes next, in five shapes

Page map: you are in chapter 5 of 7, Standing Memory Colour Pictures Decide Standing Words Ask

Before this: colour has one meaning. Status shapes reuse green, amber, red and cobalt and add nothing new.

"Where are we" questions have three answers: where we are in time, how each piece is doing, and the few numbers that decide what happens next. Each has its own shape.

  1. AugustThirteen explainers written by hand, no shared system.
  2. Early SeptemberFeedback: too much text, not enough visuals.
  3. TodayThis system, version 1.0.
  4. NextEvery new explainer starts from the template.
  • TemplateComplete, passes its own checker.
  • CheckerRuns on Node, no dependencies.
  • GalleryThis page. Reviewed at phone width and in dark mode.
  • Public repoWaiting for you to say where it lives.
9 of 13past explainers had no diagram at all
1 of 13opened with the answer
3facts a page may ask you to keep

Two more shapes answer "which one?" and "in what order?". A grid sets options against the same criteria. Lanes sort work into now, next and later, and each lane says how sure it is.

Three ways to install the explainer on a new machine
CriterionPlugin from GitHubFolder linkCopy by hand
Keeping it current
Picks up updatesOne commandAfter a git pullNever
Works on a second machineSame commandBreaks if the path differsCopy again
Setting it up
Needs admin rightsNoSometimes, on WindowsNo
Which version you runYou pick: latest or pinnedWhatever is checked outWhatever you copied

Take from this: the plugin wins on three of four criteria, and the fourth is your call.

A plan, not a promise. Items move as we learn.

Now 3 of 5

Next 4 weeks. Committed. Top item first.

  • The skill starts when askedSharper descriptions, tested on the phrases people type.
  • Pick the final nameA rename after listing loses every install.
  • Test pages with outside readersFive to ten readers, one topic shown three ways.Fixed date: by 12 December, the review needs it.

Next 4 of 5

1 to 3 months. Likely. Not in order.

  • List in Anthropic's directorySubmitted from the claude.ai account.After: Pick the final name, The skill starts when askedOutside: Anthropic reviews each listing.
  • Browser layout checkCatches sideways scroll and words split in two.
  • Tested installs in other agentsCodex, Gemini CLI, Cursor and Copilot.
  • Publish pages as Claude artifactsOffer an artifact link next to the file.Exploring: depends on the platform

Later 3 of 5

3 months or more. Exploring. Not in order.

Take from this: each lane says how sure it is, each card says its state in a word, and the count on a card is worked out from the After links.

Shipped in 1.5.0: 3 itemsChangelog
  • Pages check themselves
  • Upgrade old pages
  • Answer by tapping
Parked on purpose: 3 items, each with what would bring it back
New page typesWhy: Seventeen cover every request so far.Back when: An outside user's content fits none.
A paid tierWhy: Everything useful is a public file.Back when: Teams ask for more than a file.
A score on every cardWhy: A number looks exact when the guess is not.Back when: Outside readers ask for one.
A roadmap's backlog: the ranked top, the cut line, the themes and the parked shelf

The top five are ranked and numbered. Under the cut line nothing is ranked or promised. A theme folds away and shows its count and its top idea.

  1. The skill starts when askedSharper descriptions, tested on real phrases.
  2. Pick the final nameA rename after listing loses every install.
  3. Test pages with outside readersFive to ten readers, one topic shown three ways.Fixed date: by 12 December, for the review.
  4. Lane notes and one set of status wordsEvery lane states its horizon and confidence.
  5. Count what each one unblocksThe page counts it, so nobody traces links.
Reach3 ideasTop: List in Anthropic's directory
  • List in Anthropic's directory. After: the name
  • Upload zips for claude.ai. After: the name
  • Tested installs in other agents.
Reading2 ideasTop: Mark only the exceptions
  • Mark only the exceptions.
  • Shipped and parked fold away.
Asking2 ideasTop: Repair the rank control
  • Repair the rank control.
  • One combined ranking.
Arrow graphs of dependenciesWhy: They fail on a phone past about ten items.Back when: A layout reads well at 390 px.
Faded cards for low confidenceWhy: Faded text fails contrast and reads as less important.Back when: A faded card keeps 4.5 to 1 contrast.

Take from this: the line between ranked and unranked is drawn, and what is parked says why.

A playbook: the whole plan in one row, then each phase

A playbook gathers these shapes into one plan for one decision-maker. Its strip shows every phase in a row. Each segment links to its phase, names the owner in a letter badge, shows how much work it is as a bar, and marks the phases the audience will notice. The grid above groups its rows with a quiet band in the same way.

  1. Phase 1Decide what moves Ya few days
  2. Phase 2Switch day Y+Mone evening Team notices
  3. Phase 3Watch and fix Ma week
  1. Decide what moves

    You decideA few days
    • Pick what comes across.

    Team notices: nothing.

  2. Switch day

    Both of usOne evening
    • The new address goes live.

    Team notices: the new address, and one extra sign-in.

  3. Watch and fix

    I do the workA week
    • Watch for errors and fix them the same day.

    Team notices: nothing new.

Take from this: every phase says what the audience notices, and the two they notice are outlined.

A playbook: who does what, the risky moment, and the risks

Roles say who does what, and rules say what never bends. The undo box is the way back from the one risky moment. Each risk has a level, in words and a glyph, and what keeps it small.

Y You

  • Say yes before each live step.
  • Tell the people affected.

M Me

  • Do the work and rehearse it.
  • Check before and after.
  • Nothing live without your yes. Every live step waits for you.
  • Copy, never move. The old version stays until you say it can go.
If something goes wrong: point the address back at the old version. It is back within minutes.

The old version gets forgotten

High

It still holds everything. Left alone, it turns into the weak spot.

Kept small by: a reminder to switch it off after a month.

Someone misses the message

Medium

They open the old address and wonder where it went.

Kept small by: the old address forwards to the new one.

A page looks different

Low

A few pages use a feature that works in its own way.

Kept small by: checking the most-read pages before and after.

Take from this: a playbook shows the risky moment with its way back, and each risk with what keeps it small.

A field guide: where things fit, what to do first, and an index to look things up in

A field guide is a reference to read once and come back to. The map places each family in a stage and shows how much of it matters now. The list says what cannot wait. The index holds every entry as one line that opens to show an example.

Take from this: the counts, the bars and the key are worked out from the entries below, so they cannot drift. The stage you are in says so.

  1. Data modellingA wrong shape is slow and costly to change once people have notes.
  2. User researchFive short calls decide what is worth building.

Can wait: sync and conflicts. They matter once people use two devices.

Product and design

User research

Talking to real people to learn what they need.

In the notes app: Five short calls with students showed that finding old notes is the main pain.

Content design

The words on screen: labels, messages and tone.

In the notes app: Error messages say what happened and what to do next.

Frontend engineering

UI architecture

How the interface is split into parts that can be reused.

In the notes app: The editor, the note list and the sidebar are separate components.

See also: Frontend testing

Frontend testing

Automated checks that the screens work as people expect.

In the notes app: One test opens a note, edits it and checks that the change shows.

Backend and data

Data modelling

How information is shaped and stored so that it stays correct.

In the notes app: A note belongs to one notebook and can have many tags.

Sync and conflicts

Keeping two devices the same when both change.

In the notes app: If a phone and a laptop edit one note, the app keeps both versions.

Take from this: the filter starts on Now and always says how many entries it hides. A link to an entry opens it, even when the filter or a search would hide it.

Two pictures side by side: how it is going, and when

A status page puts its health rows beside a short timeline. On a phone they stack.

Where is the wiki move?

1 part waits on you

The parts

  • Page copyAll 214 pages are copied and checked.
  • LinksEvery internal link still opens.
  • SearchReindexing. Results lag by a day.
  • Old addressWaiting for you to say when it redirects.

The last two weeks

  1. Two weeks agoPages exported from the old host.
  2. Last weekNew host live for the team only.
  3. TodaySearch is reindexing.
  4. NextThe old address redirects.

Take: every part is fine except the one only you can decide.

Three columns: what to trust, what to check, what to do

A handover sorts what it knows by how it was checked. Each column is one state, with its own glyph and word.

What can you trust, and what do you do first?

Snapshot at 09:30

Verified

Checked today with a command.

  • Release 1.8.0 is mergedMain holds the merge commit.
  • The gallery opensSeen at 390 and 1280 pixels.

Only claimed, check first

A note says so. Nobody re-ran it.

  • The checker passesExit 0, says the pull request.
  • Old pages still openReported by the reviewer.

Do first

Three steps, in order.

  1. Re-check this page against git.Expect more commits than listed.
  2. Run the checker.Then read the exit code.
  3. Tag the release.Then update the install.

Take: only the first column was checked today. Re-run a claimed row before you build on it.

Remember: the cobalt dot on a timeline is today; the colour of a status dot is the whole status.

Chapter 6 of 7, about 2 minutes

Plain words on the path, machinery in the folds

Page map: you are in chapter 6 of 7, Words Memory Colour Pictures Decide Standing Words Ask

Before this: every device so far reduces what you must hold. Words are the last place that load hides.

The reading path is written the way you would say it out loud: short sentences, one idea each, the verb near the front. A technical word gets a plain definition the first time it appears, like idempotent below.

Idempotent
Safe to run twice. The second run changes nothing.
Reading path
Everything you see with all the folds closed.
Fold
A closed box you can open for exact details.

Everything exact lives in a fold: commands, file paths, hashes, tables. The page must make sense with every fold closed, so opening one is always optional.

One fact, at three depths.

The page remembers what you typed.

Show the checker command
node <plugin folder>/skills/html-explainer/scripts/check.mjs docs/explainers/2026-10-07-topic.html

Exit code 0 means every hard rule passed. It fails a page for a missing answer, a chapter without a visual, a paragraph over forty words, an external script, or an SVG without a title.

Before
  • "Session tokens expire after 3600 s and are subsequently invalidated server-side."
After
  • "The server forgets who you are after an hour."
  • Exact number in a fold.

When the reader is a customer, the same rule becomes a promise: what it does for you, in your words. The proof sits in a fold, one piece for each promise.

  • Deleted automatically. Your file is removed within 24 hours.
  • Never sold. Nobody outside the company sees what you upload.
  • Open every day. The service was up 99.9 percent of the last 90 days.
How we know
  • server/app/retention.py:14 deletes every upload after 24 hours.
  • docs/privacy.md:22 states that uploads are never shared or sold.
  • https://status.example.com/uptime publishes the daily uptime record.
Layers, easiest first, with the new words of each

A teaching page shows its subject as layers. Each layer lists the words it brings. One layer says where you are.

  1. What the page isOne file you open in a browser.Reading pathFold
  2. How it stays readableShort blocks, one idea each, and a line that says the point.Keep boxTakeRemember
  3. How it carries your placeThe rail, the progress bar and the Done boxes.RailDone box
  4. How it asks you thingsFields that save on this device until you copy them.Answer fieldCollect bar

Take from this: each layer builds on the one before it. The chips are its new words.

Show the steps to publish the page

The exact commands live here, out of the reading path. They number on from the steps in chapter 4.

  1. Open the pull request.
    gh pr create --fill

    Check: the command prints a pull request address.

    If it fails: run git push -u origin HEAD first, then try again.

  2. Merge it.
    gh pr merge --merge --delete-branch

    Check: git branch -r lists only main.

    If it fails: pull main into your branch, fix the conflicts and push again.

Remember: if you hit a hard word or a wall of detail in the reading path, the page is wrong, not you.

Chapter 7 of 7, about 1 minute

Questions get answered on the page, and the answers stay with you

Page map: you are in chapter 7 of 7, Ask Memory Colour Pictures Decide Standing Words Ask

Before this: purple means you must choose. A question field is where you do it.

Some pages ask you things. Answer, and the page saves it on this device. A bar at the bottom then offers to copy or download.

One sentence is enough.

Should every new page start from this system?

When the writer has a favourite, its option wears a star chip with the writer's own words: "Recommended", or "My pick" when one person is speaking to another. A playbook or a decision page ends with its decisions this way.

Which evening should the switch happen?

A quiet evening costs your team the least.

  1. Explain and askAuthor
  2. TypeYou
  3. CopyYou
  4. MergeAuthor
Buckets and ranking: sort the items, then put the top ones in order

A buckets field gives each item one row of labelled buttons. The writer's pick is already set and marked ★, so the reader changes only what they disagree with. The first bucket then gets an order.

Which of these should we build first?

Tap a bucket for each item. My pick is set and marked ★.

  1. Fix the slow searchSearch takes four seconds on a phone.
  2. Add a dark themeThe page follows the phone's setting.
  3. Save as PDFOne button saves the page for printing.
  4. Work offlineThe page opens with no network.
  5. Share with a teamSeveral people keep one set of answers.
  6. Change the logoA new logo on the sign-in page.

A plain rank field is the same control without the buckets. Moving an item, or tapping "This order is right", makes the order an answer.

Put these in order, most important first.

Use the arrows, or send an item to the top.

  1. Speed
  2. Cost
  3. Safety
Ballot: pictured or text options, one copy

When one person must rule on several open decisions, a ballot page shows each as a card. Every option is a picture, or a label and one line when there is nothing to draw. One tap picks it, and one button copies every pick.

Take from this: a card shows each option as a picture, or in words when there is nothing to draw, and marks the ★ default. A chip names a cost. The tray counts the picks, fills every ★ and copies them.
Show the markup for a ballot page

Set data-mode="ballot" beside data-type="gather" on the html element. There is no rail, keep cards or recap: a column of cards and one tray. Every option needs a picture in .vis or, with no picture, a .detail line. Each single-choice card needs exactly one data-rec. The finished example is skills/explainer-gather/examples/ballot.html.

<p class="ballot-source">Rules on: the plan name, the date, the commit</p>  <!-- optional, under the h1 -->
<p class="answer">4 decisions. Anything you skip goes with ★.</p>
<ol class="ballot-steps"><li><span><b>Compare</b> the pictures.</span></li> … the third step shows <span class="ballot-keycap">Copy picks</span></ol>

<section class="ballot-group" aria-labelledby="g1"><h2 id="g1">Shapes the build</h2><p>One line on why these come first.</p>
  <article class="ballot-card" id="card-q1" data-q="q1" data-short="When a note saves">
    <header><span class="num" aria-hidden="true">1</span><h3 id="q-q1">When should a note save?</h3>
      <p class="why">One line on why it matters.</p><span class="state">Not picked</span></header>
    <div class="ballot-opts" role="radiogroup" aria-labelledby="q-q1">
      <button type="button" class="ballot-opt" role="radio" aria-checked="false" data-k="A" data-rec="Recommended">
        <span class="vis" aria-hidden="true"><!-- a mockup in spans (see .mock-*), or an img --></span>
        <span class="name"><b>A</b> As you type</span>
        <span class="effect">One line on what happens.</span>
      </button>
      <!-- B, C: the same; only one option carries data-rec. Put the recommended option first. -->
      <!-- a text option: no .vis, one plain .detail line; data-warn adds a chip that names the cost -->
      <button type="button" class="ballot-opt" role="radio" aria-checked="false" data-k="B" data-warn="Can't undo">
        <span class="name"><b>B</b> Delete at once</span>
        <span class="detail">One plain line on what happens.</span>
      </button>
    </div>
    <p class="skip"><b>If you skip this:</b> A, the ★ option.</p>
  </article>
</section>

<!-- multi-select card: data-kind="multi"; each option is a div with its own toggle, then one Ship none -->
<div class="ballot-opts" role="group" aria-labelledby="q-q4">
  <div class="ballot-opt" data-k="A" data-rec="Recommended"><span class="vis" aria-hidden="true">…</span><span class="name"><b>A</b> Word count</span><span class="effect">…</span>
    <button type="button" class="ballot-ship" aria-pressed="false">Ship this</button></div>
</div>
<div class="ballot-none"><button type="button" data-none aria-pressed="false">Ship none</button></div>

<!-- reference cards: <section class="ballot-group"><h2>Already decided</h2><p>…</p><div class="ballot-dones"><article class="ballot-done"><h3>…</h3><p>…</p></article></div></section> -->

<!-- the tray, last in main. The script fills the jump dots and the review rows; Copy picks is the only primary button. -->
<div class="ballot-tray" role="region" aria-label="Your picks">
  <div class="ballot-bar"><p class="ballot-tally">0 of 4 picked</p><ol class="ballot-pips" aria-label="Jump to a decision"></ol>
    <div class="ballot-actions"><button type="button" data-copy>Copy picks</button></div></div>
  <div class="ballot-tools"><button type="button" data-pick-rec>Pick all ★</button>
    <details class="ballot-review"><summary>Review picks</summary><ol class="ballot-rows"></ol>
      <label class="ballot-note"><span>Anything else?</span><input type="text" maxlength="300" autocomplete="off"></label></details></div>
  <div class="ballot-meta"><p class="ballot-status" aria-live="polite">Tap an option on any card. Your picks collect here.</p>
    <span class="ballot-save">Saved in this browser</span><button type="button" data-json>Copy JSON</button></div>
  <div class="ballot-fallback" hidden><label for="ballot-fallback-text">The text is selected. Press Ctrl+C (⌘C on a Mac), then paste it into the chat.</label>
    <textarea id="ballot-fallback-text" readonly></textarea><button type="button" data-close>Close</button></div>
</div>
Show the markup for the other kinds

The default kind is text. Set data-kind for the rest. Every field needs a stable data-q.

<!-- multi: checkboxes, several answers; the textarea is an optional reason -->
<fieldset class="answer-field" data-q="q3" data-kind="multi">
  <legend>Which parts need work?</legend>
  <label><input type="checkbox" value="Intro"> Intro</label>
  <label><input type="checkbox" value="Method"> Method</label>
  <textarea id="q3-why" rows="2" aria-label="Why"></textarea>
</fieldset>

<!-- scale: radios 1 to 5 -->
<fieldset class="answer-field" data-q="q4" data-kind="scale">
  <legend>How clear is this page?</legend>
  <p class="hint">1 is unclear, 5 is clear.</p>
  <label><input type="radio" name="q4" value="1"> 1</label>
  <label><input type="radio" name="q4" value="2"> 2</label>
  <label><input type="radio" name="q4" value="3"> 3</label>
  <label><input type="radio" name="q4" value="4"> 4</label>
  <label><input type="radio" name="q4" value="5"> 5</label>
</fieldset>

<!-- rank: the reader moves items, the order is the answer. Every item has a data-id and one span. The script adds
     Move up, Move down, Move to top, "This order is right" and the spoken status. The optional textarea is the reason. -->
<fieldset class="answer-field" data-q="q5" data-kind="rank">
  <legend>Put these in order, most important first.</legend>
  <ol>
    <li data-id="speed"><span>Speed</span></li>
    <li data-id="cost"><span>Cost</span></li>
    <li data-id="safety"><span>Safety</span></li>
  </ol>
  <textarea id="q5-why" rows="2" aria-label="Why"></textarea>
</fieldset>

<!-- buckets: 2 to 5 labels in data-buckets, split by |. Every item has a unique data-id and a data-rec that names one of the
     labels (the writer's pick, marked ★). Each item is a b (the title) and a span (one line). Up to 15 items. -->
<fieldset class="answer-field" data-q="q7" data-kind="buckets" data-buckets="Now|Next|Later|Not now">
  <legend>Which of these should we build first?</legend>
  <p class="hint">Tap a bucket for each item. My pick is set and marked ★.</p>
  <ol>
    <li data-id="search" data-rec="Now"><b>Fix the slow search</b><span>Search takes four seconds on a phone.</span></li>
    <li data-id="logo" data-rec="Later"><b>Change the logo</b><span>A new logo on the sign-in page.</span></li>
  </ol>
</fieldset>

<!-- confirm: understood, agree or concern, plus a comment -->
<fieldset class="answer-field" data-q="q6" data-kind="confirm">
  <legend>Is this chapter clear and acceptable?</legend>
  <label><input type="radio" name="q6" value="understood"> Understood</label>
  <label><input type="radio" name="q6" value="agree"> Agree</label>
  <label><input type="radio" name="q6" value="concern"> Concern</label>
  <textarea id="q6-why" rows="2" aria-label="Comment"></textarea>
</fieldset>
The progress row of a questionnaire

A questionnaire's first screen shows one dot per question. A dot links to its question and fills in once you answer it.

The questions on this page

About five minutes

Take: answer in any order. The count and the dots keep up with you.

Remember: your answers stay on your device until you copy or download them.

Recap

  1. Anything yellow is something the page is holding for you; you can stop holding it.
  2. If a colour shows up, it is telling you something; if nothing is coloured, nothing needs you.
  3. Read a diagram's caption first; the caption is the point, the drawing is the proof.
  4. A purple card always tells you the recommended option and what happens if you ignore it.
  5. The cobalt dot on a timeline is today; the colour of a status dot is the whole status.
  6. If you hit a hard word or a wall of detail in the reading path, the page is wrong, not you.
  7. Your answers stay on your device until you copy or download them.

What I need from you

Should every new explainer start from this system?

If you do nothing: the skill is installed and will be used the next time you ask for an html explainer.