Presentation Chef
Generate cinematic, Apple Keynote-style HTML presentations from any content. Single self-contained .html file with zero dependencies.
<HARD-GATE> You MUST gather all inputs interactively using AskUserQuestion before generating any HTML. Do NOT skip the input gathering phase. Do NOT generate a presentation without knowing the content, theme, and design preferences. </HARD-GATE>Process
Follow these steps exactly:
Pre-Step: Initialize Task Pipeline
Before starting Step 1, create tasks to give the user visibility into the full workflow:
TaskCreate:
subject: "Gather content source"
description: "Ask the user for their presentation content — paste, file, or topic"
activeForm: "Gathering content source"
TaskCreate:
subject: "Select theme & customize design"
description: "Analyze content, recommend a theme, and gather design customization preferences"
activeForm: "Selecting theme and design preferences"
TaskCreate:
subject: "Plan slide structure"
description: "Map content to slide types and confirm the structure with user"
activeForm: "Planning slide structure"
TaskCreate:
subject: "Build presentation"
description: "Generate the complete HTML presentation with slides, navigation, and effects"
activeForm: "Building presentation"
Update each task to in_progress when starting that phase, and completed when done:
- "Gather content source" → covers Step 1
- "Select theme & customize design" → covers Steps 2-3
- "Plan slide structure" → covers Step 4
- "Build presentation" → covers Steps 5-6
Step 1: Gather Content
TaskUpdate: Mark "Gather content source" → in_progress
Ask the user for their content source using AskUserQuestion:
AskUserQuestion:
question: "What content should I turn into a presentation?"
header: "Content"
options:
- label: "Paste or describe it"
description: "I'll type/paste content or describe what I want in the presentation"
- label: "Read from a file"
description: "I have a markdown file, text file, or other document to convert"
- label: "Generate from topic"
description: "Give me a topic and I'll create both content and design"
multiSelect: false
If the user selects "Read from a file", ask for the file path and use the Read tool to get the content. If the user selects "Generate from topic", ask what the topic is and what audience/purpose it serves. If the user pastes content, analyze it to understand its structure.
TaskUpdate: Mark "Gather content source" → completed
Step 2: Analyze Content & Suggest Theme
TaskUpdate: Mark "Select theme & customize design" → in_progress
After receiving content, analyze it to determine:
- Content type: pitch deck, portfolio, product launch, educational, report, personal story, etc.
- Tone: professional, creative, technical, casual, dramatic
- Slide count: how many slides the content naturally breaks into
Then present theme options interactively:
AskUserQuestion:
question: "What visual theme should the presentation use?"
header: "Theme"
options:
- label: "Dark Cinematic (Recommended)"
description: "[AI reasoning why this fits the content]. Pure black bg, ambient orbs, glassmorphism cards, Apple blue/purple accents"
markdown: |
DARK CINEMATIC
──────────────────────────────
Background: #000000 (pure black)
Text: #ffffff / #86868b
Accent 1: #0071e3 (Apple blue)
Accent 2: #a855f7 (purple)
Warm: #ff6723 (orange)
Success: #30d158 (green)
Effects: Ambient orbs, grain overlay
Glassmorphism cards
Gradient text on headlines
Font: SF Pro / system sans-serif
Animations: Cinematic (900ms, spring easing)
- label: "Light Minimal"
description: "Clean, Chronicle-style white canvas with bold typography and single accent color"
markdown: |
LIGHT MINIMAL
──────────────────────────────
Background: #ffffff / #fafafa
Text: #1d1d1f / #86868b
Accent: #0071e3 (or content-matched)
Border: #e5e5e5
Effects: Subtle shadows, no orbs
Clean card borders
Understated elegance
Font: Geist / clean geometric sans
Animations: Smooth (600ms, ease-out)
- label: "Warm Editorial"
description: "Magazine-style warmth with serif typography and rich earth tones"
markdown: |
WARM EDITORIAL
──────────────────────────────
Background: #1a1210 / #f5efe8
Text: #f5efe8 / #a89585
Accent: #e8734a (coral)
Secondary: #c4956a (warm gold)
Effects: Warm ambient glow
Paper-like texture
Editorial layouts
Font: Playfair Display + Source Sans
Animations: Elegant (800ms, smooth)
- label: "Neon Cyberpunk"
description: "High-energy tech aesthetic with neon accents on deep dark backgrounds"
markdown: |
NEON CYBERPUNK
──────────────────────────────
Background: #0a0a1a / #0d1117
Text: #e0e0ff / #6b7280
Accent 1: #00f0ff (cyan)
Accent 2: #ff00aa (magenta)
Glow: #7c3aed (purple)
Effects: Neon glow borders
Scanline overlay
Matrix-style grid bg
Font: JetBrains Mono + Space Grotesk
Animations: Snappy (500ms, sharp easing)
multiSelect: false
IMPORTANT: Customize the recommendation text based on the actual content analyzed. Don't use generic descriptions. For example: "Since this is a startup pitch, Dark Cinematic will make your numbers feel impactful and your product feel premium."
Step 3: Customize Design
Ask about specific design preferences:
AskUserQuestion:
question: "Any design customizations?"
header: "Customize"
options:
- label: "Use defaults"
description: "The theme preset looks great as-is, no changes needed"
- label: "Custom accent color"
description: "I want to use a specific brand color as the primary accent"
- label: "Custom fonts"
description: "I want specific fonts (e.g., Google Fonts or system fonts)"
- label: "Multiple customizations"
description: "I have specific requirements for colors, fonts, or effects"
multiSelect: false
If the user wants customizations, ask follow-up questions one at a time about each customization.
TaskUpdate: Mark "Select theme & customize design" → completed
Step 4: Map Content to Slides
TaskUpdate: Mark "Plan slide structure" → in_progress
Analyze the content and map it to the appropriate slide types. Present the slide plan:
AskUserQuestion:
question: "Here's my proposed slide structure. Does this look right?"
header: "Structure"
options:
- label: "Looks perfect"
description: "Generate the presentation with this structure"
- label: "Adjust order"
description: "I want to reorder some slides"
- label: "Add/remove slides"
description: "I want to add or remove specific slides"
- label: "Different approach"
description: "I want a different overall structure"
multiSelect: false
Before asking, present the slide plan as a numbered list in your message text. Example:
Slide 1: Hero — "Company Name" + tagline
Slide 2: Stats — 3 key metrics with count-up
Slide 3: Chapter — "The Problem"
Slide 4: Content Card — Problem description
...
TaskUpdate: Mark "Plan slide structure" → completed
Step 5: Ask Output Location
AskUserQuestion:
question: "Where should I save the presentation?"
header: "Output"
options:
- label: "Current directory"
description: "Save as presentation.html in the current working directory"