Presentation Generator
Version: 1.0
Generate a lecture-ready PowerPoint presentation from an intelligent textbook project. The presentation is designed for live delivery — visual, story-driven, with progressive disclosure, audience interaction beats, and speaker notes that script the entire performance.
Core Philosophy: The Medium IS the Message
The presentation doesn't teach about communication or subject-matter frameworks. It is the framework in action. The audience should experience principles before being told about them. Every slide must answer: "Is this slide itself an example of the principle it discusses?"
This means:
- When teaching structure, the presentation IS structured (Pyramid Principle — governing thought in minute 2, not minute 55)
- When teaching brevity, the slide has seven words maximum
- When teaching storytelling, the lecture IS a story (4-act arc)
- When teaching about cognitive load, no slide overloads the audience
- Meta-moments: The speaker reveals "what I just did was [framework name]" AFTER demonstrating it. The audience learns through experience, then gets the vocabulary.
When to Use This Skill
Use when:
- An intelligent textbook exists (MkDocs project with chapters, course-description.md, learning graph)
- The user wants a lecture presentation for live delivery
- The user wants to convert textbook content into a slide deck
- The user says "create a presentation", "make slides", "build a deck", "lecture slides"
Do NOT use when:
- No textbook content exists yet (use course-description-analyzer and chapter generators first)
- The user wants a document, not a presentation (use docx skill)
- The user wants to edit an existing presentation (use the pptx editing workflow)
Prerequisites
- Node.js installed
npm install pptxgenjs (install locally in the output directory)
- An intelligent textbook project with:
docs/course-description.md
docs/chapters/ with chapter content
CLAUDE.md with project conventions (optional but helpful)
Workflow
Step 1: Read the Textbook
Read these files to understand the content:
- Course description (
docs/course-description.md) — extract title, audience, key topics, learning outcomes
- CLAUDE.md — extract tone, style, color palette, mascot info
- Chapter index files — scan
docs/chapters/*/index.md for chapter titles, key concepts, and the pedagogical flow
- Student feedback (if available in
input-knowledge/) — what resonated with prior audiences
- Original lecture notes (if available) — the speaker's natural flow and stories
Step 2: Design the Presentation Structure
Design a 4-act structure following Klein's storytelling model applied to the lecture itself:
| Act |
Purpose |
Slides |
Time |
| I: The Wake-Up Call |
Hook, establish stakes, live challenge |
6-8 |
~10 min |
| II: The Toolkit |
Core frameworks with before/after demos |
10-14 |
~20 min |
| III: The Power Tools |
Advanced techniques, persuasion, AI |
6-10 |
~12 min |
| IV: The Close |
Action plan, textbook link, final quote |
4-6 |
~8 min |
Target: 25-35 slides for a 50-60 minute lecture. At ~1.5 min/slide average. Fewer slides = more speaker time per slide = more engaging.
Present the proposed structure to the user for approval before generating.
Step 3: Design the Visual System
Extract or create a color palette from the textbook's CLAUDE.md:
const C = {
primary: "XXXXXX", // From CLAUDE.md palette
primaryDark: "XXXXXX",
primaryLight: "XXXXXX",
accent: "XXXXXX", // Highlight color
white: "FFFFFF",
offWhite: "F5F5F5",
black: "212121",
gray: "757575",
red: "C62828", // For "before" / negative examples
green: "2E7D32", // For "after" / positive examples
};
Typography:
- Title font: Georgia (or serif from CLAUDE.md)
- Body font: Calibri (or sans-serif from CLAUDE.md)
- Title size: 32-44pt
- Body size: 14-20pt (never below 13pt)
Layout rules:
- No more than 7 words per line of body text
- One idea per slide
- Dark backgrounds (primary dark) for section dividers, title, close
- Light backgrounds (white) for content slides
- Accent color for emphasis bars, numbers, highlights
Step 4: Generate the Presentation
Create a Node.js script that uses pptxgenjs to generate the .pptx file. Read references/slide-patterns.md for the reusable slide pattern library.
Slide categories and their patterns:
- Title slide — dark bg, large title, subtitle, author, accent bar
- Section divider — dark bg, large text, subtitle, accent bar
- Big number — dark bg, one massive stat (80-120pt), context below
- Before/After comparison — two columns, red accent (before) vs green (after)
- Framework visual — shapes/diagrams illustrating a model (pyramid, stages, pillars)
- Evidence stack — 3 cards with accent bars showing research findings
- Interactive beat — light bg, challenge prompt in a card, instructions
- Quote — dark bg, large italic text, attribution
- Action items — numbered circles with titles and descriptions
- Resource/CTA — textbook link, QR code placeholder, stats
Step 5: Write Speaker Notes
Every slide gets detailed speaker notes. These are the real script — the slides are just visual anchors. Notes include:
- TIMING: Cumulative minutes (e.g., "TIMING: 15:00")
- SAY: The exact narrative to deliver (2-4 sentences, conversational)
- META-MOMENT: Where the speaker reveals the framework AFTER demonstrating it (e.g., "Notice what I just did? That was Klein's Dilemma stage.")
- TRANSITION: The bridge sentence to the next slide
- AUDIENCE PULSE: When to pause, ask a question, or let silence work
Step 6: Generate and Verify
- Run the Node.js script to generate the .pptx
- Verify slide count matches the design
- Extract text with
python -m markitdown output.pptx to confirm content
- Report the result to the user with slide count and timing estimate
Output
The presentation file should be saved to:
{project-root}/presentation/{kebab-case-title}.pptx
Along with the generation script:
{project-root}/presentation/generate.js
Adapting for Different Subjects
This skill works for ANY intelligent textbook, not just communication. The key adaptations:
- Subject-specific stories: Open with a story from the textbook's domain (engineering, science, business)
- Framework names: Use whatever frameworks the textbook teaches (not just Minto, Klein, etc.)
- Color palette: Derive from the textbook's CLAUDE.md
- Audience: Match the course-description.md target audience
- Interactive beats: Design exercises relevant to the subject matter
The 4-act structure and McLuhan principle remain constant regardless of subject.
References
references/slide-patterns.md — Reusable pptxgenjs code patterns for each slide type
references/speaker-notes-guide.md — How to write effective speaker notes
Best Practices
- Cut aggressively: If a slide doesn't change understanding, delete it. The Dilution Effect applies to slide decks too.
- Story first, framework second: Always demonstrate a principle through a story or example before naming the framework.
- One idea per slide: If you need two sentences to explain what a slide is about, split it into two slides.
- Speaker notes ARE the presentation: The slides are visual anchors. The speaker's narrative, pauses, and meta-moments are where learning happens.
- Test the McLuhan principle: For every slide, ask "Is this slide itself an example of what it teaches?" If not, redesign it.
1---2name: textbook-to-presentation-generator3description: Generates a lecture PowerPoint from an intelligent textbook using pptxgenjs — visual design, 4-act storytelling structure, and speaker notes. Use when converting a textbook into slides for classroom delivery.4---56# Presentation Generator78**Version:** 1.0910Generate a lecture-ready PowerPoint presentation from an intelligent textbook project. The presentation is designed for live delivery — visual, story-driven, with progressive disclosure, audience interaction beats, and speaker notes that script the entire performance.1112## Core Philosophy: The Medium IS the Message1314The presentation doesn't *teach about* communication or subject-matter frameworks. It *is* the framework in action. The audience should experience principles before being told about them. Every slide must answer: **"Is this slide itself an example of the principle it discusses?"**1516This means:17- When teaching structure, the presentation IS structured (Pyramid Principle — governing thought in minute 2, not minute 55)18- When teaching brevity, the slide has seven words maximum19- When teaching storytelling, the lecture IS a story (4-act arc)20- When teaching about cognitive load, no slide overloads the audience21- **Meta-moments**: The speaker reveals "what I just did was [framework name]" AFTER demonstrating it. The audience learns through experience, then gets the vocabulary.2223## When to Use This Skill2425Use when:26- An intelligent textbook exists (MkDocs project with chapters, course-description.md, learning graph)27- The user wants a lecture presentation for live delivery28- The user wants to convert textbook content into a slide deck29- The user says "create a presentation", "make slides", "build a deck", "lecture slides"3031Do NOT use when:32- No textbook content exists yet (use course-description-analyzer and chapter generators first)33- The user wants a document, not a presentation (use docx skill)34- The user wants to edit an existing presentation (use the pptx editing workflow)3536## Prerequisites3738- Node.js installed39- `npm install pptxgenjs` (install locally in the output directory)40- An intelligent textbook project with:41 - `docs/course-description.md`42 - `docs/chapters/` with chapter content43 - `CLAUDE.md` with project conventions (optional but helpful)4445## Workflow4647### Step 1: Read the Textbook4849Read these files to understand the content:50511. **Course description** (`docs/course-description.md`) — extract title, audience, key topics, learning outcomes522. **CLAUDE.md** — extract tone, style, color palette, mascot info533. **Chapter index files** — scan `docs/chapters/*/index.md` for chapter titles, key concepts, and the pedagogical flow544. **Student feedback** (if available in `input-knowledge/`) — what resonated with prior audiences555. **Original lecture notes** (if available) — the speaker's natural flow and stories5657### Step 2: Design the Presentation Structure5859Design a **4-act structure** following Klein's storytelling model applied to the lecture itself:6061| Act | Purpose | Slides | Time |62|-----|---------|--------|------|63| **I: The Wake-Up Call** | Hook, establish stakes, live challenge | 6-8 | ~10 min |64| **II: The Toolkit** | Core frameworks with before/after demos | 10-14 | ~20 min |65| **III: The Power Tools** | Advanced techniques, persuasion, AI | 6-10 | ~12 min |66| **IV: The Close** | Action plan, textbook link, final quote | 4-6 | ~8 min |6768**Target: 25-35 slides for a 50-60 minute lecture.** At ~1.5 min/slide average. Fewer slides = more speaker time per slide = more engaging.6970Present the proposed structure to the user for approval before generating.7172### Step 3: Design the Visual System7374Extract or create a color palette from the textbook's CLAUDE.md:7576```javascript77const C = {78 primary: "XXXXXX", // From CLAUDE.md palette79 primaryDark: "XXXXXX",80 primaryLight: "XXXXXX",81 accent: "XXXXXX", // Highlight color82 white: "FFFFFF",83 offWhite: "F5F5F5",84 black: "212121",85 gray: "757575",86 red: "C62828", // For "before" / negative examples87 green: "2E7D32", // For "after" / positive examples88};89```9091**Typography:**92- Title font: Georgia (or serif from CLAUDE.md)93- Body font: Calibri (or sans-serif from CLAUDE.md)94- Title size: 32-44pt95- Body size: 14-20pt (never below 13pt)9697**Layout rules:**98- No more than 7 words per line of body text99- One idea per slide100- Dark backgrounds (primary dark) for section dividers, title, close101- Light backgrounds (white) for content slides102- Accent color for emphasis bars, numbers, highlights103104### Step 4: Generate the Presentation105106Create a Node.js script that uses pptxgenjs to generate the .pptx file. Read `references/slide-patterns.md` for the reusable slide pattern library.107108**Slide categories and their patterns:**1091101. **Title slide** — dark bg, large title, subtitle, author, accent bar1112. **Section divider** — dark bg, large text, subtitle, accent bar1123. **Big number** — dark bg, one massive stat (80-120pt), context below1134. **Before/After comparison** — two columns, red accent (before) vs green (after)1145. **Framework visual** — shapes/diagrams illustrating a model (pyramid, stages, pillars)1156. **Evidence stack** — 3 cards with accent bars showing research findings1167. **Interactive beat** — light bg, challenge prompt in a card, instructions1178. **Quote** — dark bg, large italic text, attribution1189. **Action items** — numbered circles with titles and descriptions11910. **Resource/CTA** — textbook link, QR code placeholder, stats120121### Step 5: Write Speaker Notes122123Every slide gets detailed speaker notes. These are the real script — the slides are just visual anchors. Notes include:124125- **TIMING**: Cumulative minutes (e.g., "TIMING: 15:00")126- **SAY**: The exact narrative to deliver (2-4 sentences, conversational)127- **META-MOMENT**: Where the speaker reveals the framework AFTER demonstrating it (e.g., "Notice what I just did? That was Klein's Dilemma stage.")128- **TRANSITION**: The bridge sentence to the next slide129- **AUDIENCE PULSE**: When to pause, ask a question, or let silence work130131### Step 6: Generate and Verify1321331. Run the Node.js script to generate the .pptx1342. Verify slide count matches the design1353. Extract text with `python -m markitdown output.pptx` to confirm content1364. Report the result to the user with slide count and timing estimate137138## Output139140The presentation file should be saved to:141```142{project-root}/presentation/{kebab-case-title}.pptx143```144145Along with the generation script:146```147{project-root}/presentation/generate.js148```149150## Adapting for Different Subjects151152This skill works for ANY intelligent textbook, not just communication. The key adaptations:153154- **Subject-specific stories**: Open with a story from the textbook's domain (engineering, science, business)155- **Framework names**: Use whatever frameworks the textbook teaches (not just Minto, Klein, etc.)156- **Color palette**: Derive from the textbook's CLAUDE.md157- **Audience**: Match the course-description.md target audience158- **Interactive beats**: Design exercises relevant to the subject matter159160The 4-act structure and McLuhan principle remain constant regardless of subject.161162## References163164- `references/slide-patterns.md` — Reusable pptxgenjs code patterns for each slide type165- `references/speaker-notes-guide.md` — How to write effective speaker notes166167## Best Practices1681691. **Cut aggressively**: If a slide doesn't change understanding, delete it. The Dilution Effect applies to slide decks too.1702. **Story first, framework second**: Always demonstrate a principle through a story or example before naming the framework.1713. **One idea per slide**: If you need two sentences to explain what a slide is about, split it into two slides.1724. **Speaker notes ARE the presentation**: The slides are visual anchors. The speaker's narrative, pauses, and meta-moments are where learning happens.1735. **Test the McLuhan principle**: For every slide, ask "Is this slide itself an example of what it teaches?" If not, redesign it.