The Skill
Seven steps from intent to deck. Ten phases of compilation.
transition: slide-left
Seven-Step Workflow
graph LR
A["Mode"] --> B["Sources"]
B --> C["Intake"]
C --> D["Direction"]
D --> E["Spec"]
E --> F["Compile"]
F --> G["Validate"]
style A fill:#dde3ec,stroke:#3b5f87,color:#2e3440
style B fill:#dde3ec,stroke:#3b5f87,color:#2e3440
style C fill:#3b5f87,stroke:#3b5f87,color:#eceff4
style D fill:#3b5f87,stroke:#3b5f87,color:#eceff4
style E fill:#dde3ec,stroke:#3b5f87,color:#2e3440
style F fill:#dde3ec,stroke:#3b5f87,color:#2e3440
style G fill:#dde3ec,stroke:#3b5f87,color:#2e3440
linkStyle default stroke:#3b5f87,stroke-width:2px
- Mode — new deck or update to existing
- Sources — gather README, ARCHITECTURE, CHANGELOG, LESSONS_LEARNED
- Intake — normalize title, goal, audience, tone, target length
- Direction — offer 2-3 visual directions in words only
- Spec — write
deck.spec.md before any slides
- Compile — generate slides, styles, layouts, components
- Validate — spec matches slides, density controlled, abstractions justified
layout: SplitInsight
transition: wipe-right
Source-of-Truth Model
::left::
Planning Layer
deck.spec.md is the blueprint
- Structure, tokens, boundaries
- Structural changes start here
- Must stay in sync with slides
::right::
Presentation Layer
slides.md is the compiled output
- Native Slidev Markdown
styles/, layouts/, components/
- Implementation serves the spec
transition: slide-up
Ten Compilation Phases
- Gather sources — read project docs, extract facts and stories
- Normalize spec — resolve meta, tokens, slide and layout inventory
- Decide level — escalation ladder per slide: Markdown first
- Write headmatter — theme, fonts, colorSchema, transition
- Write slides — clean Markdown, one idea per slide, v-clicks on lists
- Write tokens —
--deck-bg, --deck-fg, --deck-accent, --deck-muted
- Write theme — typography, color application, v-click animations
8-10: Custom layouts, custom components, prune dead code — only when justified.
transition: fade
The Skill Rejects These Patterns
Every item here has appeared in a generated deck at least once.
- No generic stock phrases ("Let's dive in", "In conclusion")
- No ad-hoc transitions — each type has a fixed semantic meaning
- No same layout for every content slide — vary the rhythm
- No hardcoded hex in
<style scoped> — use var(--deck-*) only
- No "install command" closings — resolve the opening instead
- No blanket
.slidev-layout { background } overrides on themed decks
layout: section
transition: iris
Narrative Architecture
Slide kinds, through-lines, and story structure.
transition: slide-left
14 Canonical Slide Kinds
- cover / end — opening and closing frames
- section — chapter breaks that create visual rhythm
- default-content — the workhorse explanatory slide
- center-statement / fact / quote-pull — single-idea emphasis
- split-insight / comparison — side-by-side reasoning
- metrics-grid — comparable metrics in a grid
- image-caption / visual-evidence — image with context
Plus timeline, through-line-echo (resurfaces the deck's thread mid-deck, max 2-3).
layout: TufteSlide
transition: slide-up
Through-Line Types
The through-line is the conceptual thread that holds the deck together. It must come from the source material, not be imposed on it.
Five types, each a different rhetorical shape:
- Question — posed early, answered repeatedly
- Metaphor — concrete image mapping to abstract concept
- Concept — technical idea connecting all sections
- Provocation — bold claim the deck proves
- Design-rule — constraint that shaped every decision
::sidenote::
The through-line appears in 5-6 slides, gaining new meaning each time. Cover introduces it. Sections refract it. End resolves it.
Bookend syndrome: the through-line appears only on cover and closing. The middle forgets it exists. This is the most common failure.
transition: morph-fade
Narrative Arc and Structural Rhythm
Every deck follows a four-part story structure:
- Tension — open with a problem, contradiction, or surprising fact
- Exploration — walk through the journey, showing real decisions
- Insight — present a counterintuitive finding or unexpected result
- Resolution — close with a memorable takeaway
Slides alternate in a rhythm: section divider, 2-3 content slides, then a pause (quote, diagram, or fact). Repeat. This prevents visual monotony.
transition: slide-left
War Stories and Source Citations
Every deck of 10+ slides needs at least one war story — a specific moment where something broke or a false trail was followed.
- War stories are concrete, not abstract: "The cache was 2.3 GB" beats "We encountered challenges"
- Every war story cites specific evidence: file path, commit, screenshot
- Every content slide with facts needs a
Sources: block in presenter notes
<!-- Presenter notes here...
Sources:
- https://github.com/user/project/blob/main/README.md — overview
- file:LESSONS_LEARNED.md — the production incident
-->
layout: section
transition: iris
Quality Gates
Density guardrails, the acceptance checklist, and the priority stack.
transition: slide-left
Hard Limits Prevent Overflow
- 7 bullets maximum per slide — split if exceeded
- 8 code lines maximum per code block — truncate or split
- 60 characters maximum per bullet — rewrite if exceeded
- One idea per slide — if you need to scroll, split it
- 3-5 bullets is normal — one strong stat beats six weak ones
If the slide needs tiny text, the slide needs redesigning.
transition: fade
A Deck Passes When All of These Hold
The acceptance checklist:
- No generic stock phrases, no ad-hoc transitions
- At least 3 different layout types used
- Bullet lists use
<v-clicks> for progressive reveal
- At least 1
v-motion element, 1 hover-interactive element
- Mermaid nodes: light fills get dark text, dark fills get light text
- No slide overflows (7 bullets, 8 code lines, 60 char bullets)
- Closing echoes or resolves the opening
1---2name: pages3description: The Skill4---56# The Skill78Seven steps from intent to deck. Ten phases of compilation.910---11transition: slide-left12---1314# Seven-Step Workflow1516```mermaid {scale: 0.8}17graph LR18 A["Mode"] --> B["Sources"]19 B --> C["Intake"]20 C --> D["Direction"]21 D --> E["Spec"]22 E --> F["Compile"]23 F --> G["Validate"]24 style A fill:#dde3ec,stroke:#3b5f87,color:#2e344025 style B fill:#dde3ec,stroke:#3b5f87,color:#2e344026 style C fill:#3b5f87,stroke:#3b5f87,color:#eceff427 style D fill:#3b5f87,stroke:#3b5f87,color:#eceff428 style E fill:#dde3ec,stroke:#3b5f87,color:#2e344029 style F fill:#dde3ec,stroke:#3b5f87,color:#2e344030 style G fill:#dde3ec,stroke:#3b5f87,color:#2e344031 linkStyle default stroke:#3b5f87,stroke-width:2px32```3334<v-clicks>3536- **Mode** — new deck or update to existing37- **Sources** — gather README, ARCHITECTURE, CHANGELOG, LESSONS_LEARNED38- **Intake** — normalize title, goal, audience, tone, target length39- **Direction** — offer 2-3 visual directions in words only40- **Spec** — write `deck.spec.md` before any slides41- **Compile** — generate slides, styles, layouts, components42- **Validate** — spec matches slides, density controlled, abstractions justified4344</v-clicks>4546<!-- The Skill's workflow enforces direction-before-content. Visual identity is decided at step 4, before a single slide is written at step 6.4748[click] Mode — new deck or update to existing. This determines which workflow branches apply.4950[click] Sources — gather README, ARCHITECTURE, CHANGELOG, LESSONS_LEARNED. The raw material the deck is built from.5152[click] Intake — normalize title, goal, audience, tone, target length. Establish what the deck needs to accomplish.5354[click] Direction — offer 2-3 visual directions in words only. No slides yet. This is the anti-generic mechanism.5556[click] Spec — write deck.spec.md before any slides. The blueprint that prevents both generic and brittle output.5758[click] Compile — generate slides, styles, layouts, components. This is where the actual presentation is built.5960[click] Validate — spec matches slides, density controlled, abstractions justified. The final quality gate.6162Sources:63- file:slide-maker/SKILL.md — workflow steps 1-764- file:slide-maker/COMPILER_RULES.md — compilation phases -->6566---67layout: SplitInsight68transition: wipe-right69---7071# Source-of-Truth Model7273::left::7475### Planning Layer7677<v-clicks>7879- `deck.spec.md` is the blueprint80- Structure, tokens, boundaries81- Structural changes start here82- Must stay in sync with slides8384</v-clicks>8586::right::8788### Presentation Layer8990<v-clicks>9192- `slides.md` is the compiled output93- Native Slidev Markdown94- `styles/`, `layouts/`, `components/`95- Implementation serves the spec9697</v-clicks>9899<!-- The dual-layer architecture prevents both failure modes. The spec layer prevents generic output by forcing visual direction choices before compilation. The presentation layer prevents brittle output by compiling to native Slidev Markdown. Edit the spec to change direction. Edit slides.md to change content.100101Sources:102- file:slide-maker/SKILL.md — source-of-truth model103- file:slide-maker/DECK_SPEC.md — planning schema specification -->104105---106transition: slide-up107---108109# Ten Compilation Phases110111<v-clicks>1121131. **Gather sources** — read project docs, extract facts and stories1142. **Normalize spec** — resolve meta, tokens, slide and layout inventory1153. **Decide level** — escalation ladder per slide: Markdown first1164. **Write headmatter** — theme, fonts, colorSchema, transition1175. **Write slides** — clean Markdown, one idea per slide, v-clicks on lists1186. **Write tokens** — `--deck-bg`, `--deck-fg`, `--deck-accent`, `--deck-muted`1197. **Write theme** — typography, color application, v-click animations120121</v-clicks>122123<v-click>1241258-10: **Custom layouts**, **custom components**, **prune dead code** — only when justified.126127</v-click>128129<!-- Phases 1-7 run on every deck. Phases 8-10 are conditional.130131[click] Gather sources — read project docs, extract facts and stories. The raw material.132133[click] Normalize spec — resolve meta, tokens, slide and layout inventory. Establish the planning layer.134135[click] Decide level — the escalation ladder per slide. Markdown first. This is the anti-brittle mechanism.136137[click] Write headmatter — theme, fonts, colorSchema, transition. The Slidev configuration block.138139[click] Write slides — clean Markdown, one idea per slide, v-clicks on lists. The core compilation.140141[click] Write tokens — --deck-bg, --deck-fg, --deck-accent, --deck-muted. The design system foundation.142143[click] Write theme — typography, color application, v-click animations. Tokens applied to layout classes.144145Sources:146- file:slide-maker/COMPILER_RULES.md — phases 1-10 specification -->147148---149transition: fade150---151152# The Skill Rejects These Patterns153154Every item here has appeared in a generated deck at least once.155156- No generic stock phrases ("Let's dive in", "In conclusion")157- No ad-hoc transitions — each type has a fixed semantic meaning158- No same layout for every content slide — vary the rhythm159- No hardcoded hex in `<style scoped>` — use `var(--deck-*)` only160- No "install command" closings — resolve the opening instead161- No blanket `.slidev-layout { background }` overrides on themed decks162163<!-- Anti-patterns are the negative space of the Skill. They define what a generated deck should never look like. The most common failure: every slide uses the default layout with the same transition, producing visual monotony. The hardcoded hex rule prevents palette drift when presets change.164165Sources:166- file:slide-maker/COMPILER_RULES.md — anti-patterns list -->167168---169layout: section170transition: iris171---172173# Narrative Architecture174175Slide kinds, through-lines, and story structure.176177---178transition: slide-left179---180181# 14 Canonical Slide Kinds182183<v-clicks>184185- **cover** / **end** — opening and closing frames186- **section** — chapter breaks that create visual rhythm187- **default-content** — the workhorse explanatory slide188- **center-statement** / **fact** / **quote-pull** — single-idea emphasis189- **split-insight** / **comparison** — side-by-side reasoning190- **metrics-grid** — comparable metrics in a grid191- **image-caption** / **visual-evidence** — image with context192193</v-clicks>194195<v-click>196197Plus **timeline**, **through-line-echo** (resurfaces the deck's thread mid-deck, max 2-3).198199</v-click>200201<!-- 14 canonical slide kinds, each with a default implementation level.202203[click] cover / end — opening and closing frames. These bookend the argument.204205[click] section — chapter breaks that create visual rhythm. Use iris transition.206207[click] default-content — the workhorse explanatory slide. 80% of all slides.208209[click] center-statement / fact / quote-pull — single-idea emphasis. Different weights for different rhetorical purposes.210211[click] split-insight / comparison — side-by-side reasoning. When two ideas need juxtaposition.212213Sources:214- file:slide-maker/SLIDE_KINDS.md — canonical kinds and escalation rules215- file:slide-maker/SLIDE_KINDS.md — density guardrails -->216217---218layout: TufteSlide219transition: slide-up220---221222# Through-Line Types223224The through-line is the conceptual thread that holds the deck together. It must come from the source material, not be imposed on it.225226Five types, each a different rhetorical shape:227228- **Question** — posed early, answered repeatedly229- **Metaphor** — concrete image mapping to abstract concept230- **Concept** — technical idea connecting all sections231- **Provocation** — bold claim the deck proves232- **Design-rule** — constraint that shaped every decision233234::sidenote::235236<Sidenote number="1">The through-line appears in 5-6 slides, gaining new meaning each time. Cover introduces it. Sections refract it. End resolves it.</Sidenote>237238<Sidenote number="2">Bookend syndrome: the through-line appears only on cover and closing. The middle forgets it exists. This is the most common failure.</Sidenote>239240<!-- The through-line IS: present in 5-6 slides, gaining meaning, resolved at close. The through-line IS NOT: a tagline on cover and close only (bookend syndrome), a decorative metaphor with no analytical function, or multiple competing threads.241242Sources:243- file:slide-maker/COMPILER_RULES.md — through-line types and anti-patterns244- file:slide-maker/COMPILER_RULES.md — per-slide-type through-line placement -->245246---247transition: morph-fade248---249250# Narrative Arc and Structural Rhythm251252Every deck follows a four-part story structure:253254<v-clicks>255256- **Tension** — open with a problem, contradiction, or surprising fact257- **Exploration** — walk through the journey, showing real decisions258- **Insight** — present a counterintuitive finding or unexpected result259- **Resolution** — close with a memorable takeaway260261</v-clicks>262263<v-click>264265Slides alternate in a rhythm: **section divider**, 2-3 **content slides**, then a **pause** (quote, diagram, or fact). Repeat. This prevents visual monotony.266267</v-click>268269<!-- Every deck follows a four-part story structure. "Decks are arguments, not outlines."270271[click] Tension — open with a problem, contradiction, or surprising fact. Never an agenda slide. Provocative openings only.272273[click] Exploration — walk through the journey, showing real decisions. This is where war stories and evidence live.274275[click] Insight — present a counterintuitive finding or unexpected result. The "aha" moment the deck builds toward.276277[click] Resolution — close with a memorable takeaway. Never "Questions?" or "Thank you." Circle back to the opening tension and resolve it.278279Sources:280- file:slide-maker/COMPILER_RULES.md — narrative arc: tension, exploration, insight, resolution281- file:docs/PRESENTATION_PHILOSOPHY.md — dialectical progression, provocative openings, resonant closings -->282283---284transition: slide-left285---286287# War Stories and Source Citations288289Every deck of 10+ slides needs at least one **war story** — a specific moment where something broke or a false trail was followed.290291<v-clicks>292293- War stories are concrete, not abstract: "The cache was 2.3 GB" beats "We encountered challenges"294- Every war story cites specific evidence: file path, commit, screenshot295- Every content slide with facts needs a `Sources:` block in presenter notes296297</v-clicks>298299<v-click>300301```html302<!-- Presenter notes here...303304Sources:305- https://github.com/user/project/blob/main/README.md — overview306- file:LESSONS_LEARNED.md — the production incident307-->308```309310</v-click>311312<!-- Source citations ensure no slide makes an unsourced claim. The format: each entry starts with `- ` followed by a URL or `file:` path, then ` — ` and a brief annotation. Exempt: cover (unless it makes a factual claim), section dividers, end slides, and self-quoting quote layouts.313314Sources:315- file:slide-maker/COMPILER_RULES.md — source citation format and rules316- file:slide-maker/COMPILER_RULES.md — war story requirements -->317318---319layout: section320transition: iris321---322323# Quality Gates324325Density guardrails, the acceptance checklist, and the priority stack.326327---328transition: slide-left329---330331# Hard Limits Prevent Overflow332333- **7 bullets maximum** per slide — split if exceeded334- **8 code lines maximum** per code block — truncate or split335- **60 characters maximum** per bullet — rewrite if exceeded336- **One idea per slide** — if you need to scroll, split it337- **3-5 bullets is normal** — one strong stat beats six weak ones338339If the slide needs tiny text, the slide needs redesigning.340341<!-- Density guardrails prevent the most common slide failure: cramming too much onto one screen. These are hard limits, not suggestions. The overflow guard runs during phase 5 (write slides) and again during validation. Mermaid diagrams have their own limits: 8 nodes for flowcharts, 12 for mindmaps, 6 for timelines.342343Sources:344- file:slide-maker/SLIDE_KINDS.md — density guardrails345- file:slide-maker/COMPILER_RULES.md — overflow guard limits -->346347---348transition: fade349---350351# A Deck Passes When All of These Hold352353The acceptance checklist:354355<v-clicks>356357- No generic stock phrases, no ad-hoc transitions358- At least 3 different layout types used359- Bullet lists use `<v-clicks>` for progressive reveal360- At least 1 `v-motion` element, 1 hover-interactive element361- Mermaid nodes: light fills get dark text, dark fills get light text362- No slide overflows (7 bullets, 8 code lines, 60 char bullets)363- Closing echoes or resolves the opening364365</v-clicks>366367<!-- The acceptance checklist has 30+ items. These seven are the most commonly failed.368369[click] No generic stock phrases, no ad-hoc transitions — the most basic quality gate.370371[click] At least 3 different layout types used — prevents visual monotony.372373[click] Bullet lists use v-clicks for progressive reveal — pacing the audience.374375[click] At least 1 v-motion element, 1 hover-interactive element — minimum interactivity.376377[click] Mermaid nodes: light fills get dark text, dark fills get light text — readability in diagrams.378379[click] No slide overflows (7 bullets, 8 code lines, 60 char bullets) — density guardrails.380381[click] Closing echoes or resolves the opening — narrative coherence. The full checklist adds project-specific requirements: through-line in 3+ slides, 2+ source materials digested, project colors override preset palette.382383Sources:384- file:slide-maker/COMPILER_RULES.md — acceptance checklist (full list) -->