3.3 KiB
3.3 KiB
Simple deck checklist
Run before emitting <artifact>. P0 must pass.
P0 — must pass
- Every
<section class="slide">has a theme class. Each is exactly one of:light,dark,hero light,hero dark. No bareclass="slide". No bareclass="slide hero". - No 3+ same-theme slides in a row. Mentally list the classes from slide 1 to N — if you see
light light lightanywhere, change the middle one. - For 8+ slides: at least one
hero darkAND at least onehero light. A long all-light deck is sleepy; a long all-dark deck is heavy. - Display headlines use
var(--font-display)(serif)..h-hero,.h-xl,.h-mdand.quote-textall enforce this — don't override. - No raw hex outside
:root. Every color isvar(--bg)/--fg/--muted/--border/--accent/--surface. Grep#[0-9a-fA-F]{3,8}outside:root{}should return nothing. - Accent appears at most twice on any single slide. On stat slides, the number itself is the only accent. Don't also color the eyebrow + a button + a border.
- The 5-rule nav script is intact. Don't replace
scroller()withdocument.body. Don't drop one of the dual capture-phase listeners. Don't usescrollIntoView(). (The seed has the working version — leave it.) - No
scrollIntoView()calls. Breaks iframe boundaries. data-screen-labelon every slide (e.g."01 Cover","05 Big stat"). Used by chat for "edit slide 5".- No invented metrics. Numbers come from the brief or a real source. "10× faster" / "99.9% uptime" without source = remove.
- No emoji icons / no purple gradients / no rounded boxes with left-border accent. Anti-slop trio.
P1 — should pass
- Cover is
hero light center. Inverting cover-to-dark works only when the entire deck is dark. - Cover h1 ≤ 8 words. A long cover headline is the writing's job, not the design's.
- Body lead text under 56ch.
max-width: 56chenforces this — don't override. - Big-stat slides have one number, not three. If you have 3 numbers, give them 3 slides.
- One quote per deck. Two pull-quote slides feel like a brochure; one feels like a punctuation mark.
- Closing slide is decisive. A clear ask, a takeaway sentence, a date — not a "thank you".
- Numerics in mono. Stats, prices, version numbers, dates use
font-family: var(--font-mono)(the.stat-numalready does;.metadoes). - At 1280×800 and 1440×900, no overflow. Test by setting the browser to those sizes; nothing clips.
P2 — nice to have
- Position persists across refresh (the seed's
localStoragesave/restore handles this). - Top progress bar fills as you advance (already in seed).
- Counter pill is visible at all times (already in seed).
Theme rhythm spot-check
After you finish, run:
grep 'class="slide' index.html
Read the class list as a single sequence. The healthy patterns look like:
hero lightlighthero darklightdarkhero lightlighthero darkhero lightlightlightdarkhero lightdarkhero dark
Bad patterns:
light light light light light light— flatdark dark dark dark dark dark— heavyhero hero hero hero— no rest
If your sequence is bad, swap a few middle slides to rebalance.