jimliu avatar

Baoyu Slide Deck

jimliu/baoyu-skills
8.9k

This skill converts content from Markdown into professional slide decks with customizable styles, audiences, and languages. It offers features like outline-only generation, style presets, and output merging into PowerPoint or PDF formats, making it suitable for educators, presenters, and professionals needing visually engaging presentations. The tool simplifies deck creation through streamlined workflows and adjustable styling options for tailored, shareable slides.

npx skills add https://github.com/jimliu/baoyu-skills --skill baoyu-slide-deck

Slide Deck Generator

Transform content into professional slide deck images.

Usage

/baoyu-slide-deck path/to/content.md
/baoyu-slide-deck path/to/content.md --style sketch-notes
/baoyu-slide-deck path/to/content.md --audience executives
/baoyu-slide-deck path/to/content.md --lang zh
/baoyu-slide-deck path/to/content.md --slides 10
/baoyu-slide-deck path/to/content.md --outline-only
/baoyu-slide-deck  # Then paste content

Script Directory

Agent Execution Instructions:

  1. Determine this SKILL.md file's directory path as {baseDir}
  2. Script path = {baseDir}/scripts/<script-name>.ts
  3. Resolve ${BUN_X} runtime: if bun installed → bun; if npx available → npx -y bun; else suggest installing bun Script Purpose scripts/merge-to-pptx.ts Merge slides into PowerPoint scripts/merge-to-pdf.ts Merge slides into PDF

Options

Option Description --style <name> Visual style: preset name, custom, or custom style name --audience <type> Target: beginners, intermediate, experts, executives, general --lang <code> Output language (en, zh, ja, etc.) --slides <number> Target slide count (8-25 recommended, max 30) --outline-only Generate outline only, skip image generation --prompts-only Generate outline + prompts, skip images --images-only Generate images from existing prompts directory --regenerate <N> Regenerate specific slide(s): --regenerate 3 or --regenerate 2,5,8 Slide Count by Content Length: Content Slides < 1000 words 5-10 1000-3000 words 10-18 3000-5000 words 15-25 > 5000 words 20-30 (consider splitting)

Style System

Presets

Preset Dimensions Best For blueprint (Default) grid + cool + technical + balanced Architecture, system design chalkboard organic + warm + handwritten + balanced Education, tutorials corporate clean + professional + geometric + balanced Investor decks, proposals minimal clean + neutral + geometric + minimal Executive briefings sketch-notes organic + warm + handwritten + balanced Educational, tutorials watercolor organic + warm + humanist + minimal Lifestyle, wellness dark-atmospheric clean + dark + editorial + balanced Entertainment, gaming notion clean + neutral + geometric + dense Product demos, SaaS bold-editorial clean + vibrant + editorial + balanced Product launches, keynotes editorial-infographic clean + cool + editorial + dense Tech explainers, research fantasy-animation organic + vibrant + handwritten + minimal Educational storytelling intuition-machine clean + cool + technical + dense Technical docs, academic pixel-art pixel + vibrant + technical + balanced Gaming, developer talks scientific clean + cool + technical + dense Biology, chemistry, medical vector-illustration clean + vibrant + humanist + balanced Creative, children's content vintage paper + warm + editorial + balanced Historical, heritage

Style Dimensions

Dimension Options Description Texture clean, grid, organic, pixel, paper Visual texture and background treatment Mood professional, warm, cool, vibrant, dark, neutral Color temperature and palette style Typography geometric, humanist, handwritten, editorial, technical Headline and body text styling Density minimal, balanced, dense Information density per slide Full specs: references/dimensions/*.md

Auto Style Selection

Content Signals Preset tutorial, learn, education, guide, beginner sketch-notes classroom, teaching, school, chalkboard chalkboard architecture, system, data, analysis, technical blueprint creative, children, kids, cute vector-illustration briefing, academic, research, bilingual intuition-machine executive, minimal, clean, simple minimal saas, product, dashboard, metrics notion investor, quarterly, business, corporate corporate launch, marketing, keynote, magazine bold-editorial entertainment, music, gaming, atmospheric dark-atmospheric explainer, journalism, science communication editorial-infographic story, fantasy, animation, magical fantasy-animation gaming, retro, pixel, developer pixel-art biology, chemistry, medical, scientific scientific history, heritage, vintage, expedition vintage lifestyle, wellness, travel, artistic watercolor Default blueprint

Design Philosophy

Decks designed for reading and sharing, not live presentation:

  • Each slide self-explanatory without verbal commentary
  • Logical flow when scrolling
  • All necessary context within each slide
  • Optimized for social media sharing See references/design-guidelines.md for:
  • Audience-specific principles
  • Visual hierarchy
  • Content density guidelines
  • Color and typography selection
  • Font recommendations See references/layouts.md for layout options.

File Management

Output Directory

slide-deck/{topic-slug}/
├── source-{slug}.{ext}
├── outline.md
├── prompts/
│   └── 01-slide-cover.md, 02-slide-{slug}.md, ...
├── 01-slide-cover.png, 02-slide-{slug}.png, ...
├── {topic-slug}.pptx
└── {topic-slug}.pdf

Slug: Extract topic (2-4 words, kebab-case). Example: "Introduction to Machine Learning" → intro-machine-learning Conflict Handling: See Step 1.3 for existing content detection and user options.

Language Handling

Detection Priority:

  1. --lang flag (explicit)
  2. EXTEND.md language setting
  3. User's conversation language (input language)
  4. Source content language Rule: ALL responses use user's preferred language:
  • Questions and confirmations
  • Progress reports
  • Error messages
  • Completion summaries Technical terms (style names, file paths, code) remain in English.

Workflow

Copy this checklist and check off items as you complete them:

Slide Deck Progress:
- [ ] Step 1: Setup & Analyze
  - [ ] 1.1 Load preferences
  - [ ] 1.2 Analyze content
  - [ ] 1.3 Check existing ⚠️ REQUIRED
- [ ] Step 2: Confirmation ⚠️ REQUIRED (Round 1, optional Round 2)
- [ ] Step 3: Generate outline
- [ ] Step 4: Review outline (conditional)
- [ ] Step 5: Generate prompts
- [ ] Step 6: Review prompts (conditional)
- [ ] Step 7: Generate images
- [ ] Step 8: Merge to PPTX/PDF
- [ ] Step 9: Output summary

Flow

Input → Preferences → Analyze → [Check Existing?] → Confirm (1-2 rounds) → Outline → [Review Outline?] → Prompts → [Review Prompts?] → Images → Merge → Complete

Step 1: Setup & Analyze

1.1 Load Preferences (EXTEND.md) Check EXTEND.md existence (priority order):

# macOS, Linux, WSL, Git Bash
test -f .baoyu-skills/baoyu-slide-deck/EXTEND.md && echo "project"
test -f "${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-slide-deck/EXTEND.md" && echo "xdg"
test -f "$HOME/.baoyu-skills/baoyu-slide-deck/EXTEND.md" && echo "user"
# PowerShell (Windows)
if (Test-Path .baoyu-skills/baoyu-slide-deck/EXTEND.md) { "project" }
$xdg = if ($env:XDG_CONFIG_HOME) { $env:XDG_CONFIG_HOME } else { "$HOME/.config" }
if (Test-Path "$xdg/baoyu-skills/baoyu-slide-deck/EXTEND.md") { "xdg" }
if (Test-Path "$HOME/.baoyu-skills/baoyu-slide-deck/EXTEND.md") { "user" }

┌──────────────────────────────────────────────────┬───────────────────┐ │ Path │ Location │ ├──────────────────────────────────────────────────┼───────────────────┤ │ .baoyu-skills/baoyu-slide-deck/EXTEND.md │ Project directory │ ├──────────────────────────────────────────────────┼───────────────────┤ │ $HOME/.baoyu-skills/baoyu-slide-deck/EXTEND.md │ User home │ └──────────────────────────────────────────────────┴───────────────────┘ When EXTEND.md Found → Read, parse, output summary to user:

📋 Loaded preferences from [full path]
├─ Style: [preset/custom name]
├─ Audience: [audience or "auto-detect"]
├─ Language: [language or "auto-detect"]
└─ Review: [enabled/disabled]

When EXTEND.md Not Found → First-time setup using AskUserQuestion or proceed with defaults. EXTEND.md Supports: Preferred style | Custom dimensions | Default audience | Language preference | Review preference Schema: references/config/preferences-schema.md 1.2 Analyze Content

  1. Save source content (if pasted, save as source.md)
    • Backup rule: If source.md exists, rename to source-backup-YYYYMMDD-HHMMSS.md
  2. Follow references/analysis-framework.md for content analysis
  3. Analyze content signals for style recommendations
  4. Detect source language
  5. Determine recommended slide count
  6. Generate topic slug from content 1.3 Check Existing Content ⚠️ REQUIRED MUST execute before proceeding to Step 2. Use Bash to check if output directory exists:
test -d "slide-deck/{topic-slug}" && echo "exists"

If directory exists, use AskUserQuestion:

header: "Existing"
question: "Existing content found. How to proceed?"
options:
  - label: "Regenerate outline"
    description: "Keep images, regenerate outline only"
  - label: "Regenerate images"
    description: "Keep outline, regenerate images only"
  - label: "Backup and regenerate"
    description: "Backup to {slug}-backup-{timestamp}, then regenerate all"
  - label: "Exit"
    description: "Cancel, keep existing content unchanged"

Save to analysis.md with:

  • Topic, audience, content signals
  • Recommended style (based on Auto Style Selection)
  • Recommended slide count
  • Language detection

Step 2: Confirmation ⚠️ REQUIRED

Two-round confirmation: Round 1 always, Round 2 only if "Custom dimensions" selected. Language: Use user's input language or saved language preference. Display summary:

  • Content type + topic identified
  • Language: [from EXTEND.md or detected]
  • Recommended style: [preset] (based on content signals)
  • Recommended slides: [N] (based on content length)

Round 1 (Always)

Use AskUserQuestion for all 5 questions: Question 1: Style

header: "Style"
question: "Which visual style for this deck?"
options:
  - label: "{recommended_preset} (Recommended)"
    description: "Best match based on content analysis"
  - label: "{alternative_preset}"
    description: "[alternative style description]"
  - label: "Custom dimensions"
    description: "Choose texture, mood, typography, density separately"

Question 2: Audience

header: "Audience"
question: "Who is the primary reader?"
options:
  - label: "General readers (Recommended)"
    description: "Broad appeal, accessible content"
  - label: "Beginners/learners"
    description: "Educational focus, clear explanations"
  - label: "Experts/professionals"
    description: "Technical depth, domain knowledge"
  - label: "Executives"
    description: "High-level insights, minimal detail"

Question 3: Slide Count

header: "Slides"
question: "How many slides?"
options:
  - label: "{N} slides (Recommended)"
    description: "Based on content length"
  - label: "Fewer ({N-3} slides)"
    description: "More condensed, less detail"
  - label: "More ({N+3} slides)"
    description: "More detailed breakdown"

Question 4: Review Outline

header: "Outline"
question: "Review outline before generating prompts?"
options:
  - label: "Yes, review outline (Recommended)"
    description: "Review slide titles and structure"
  - label: "No, skip outline review"
    description: "Proceed directly to prompt generation"

Question 5: Review Prompts

header: "Prompts"
question: "Review prompts before generating images?"
options:
  - label: "Yes, review prompts (Recommended)"
    description: "Review image generation prompts"
  - label: "No, skip prompt review"
    description: "Proceed directly to image generation"

Round 2 (Only if "Custom dimensions" selected)

Use AskUserQuestion for all 4 dimensions: Question 1: Texture

header: "Texture"
question: "Which visual texture?"
options:
  - label: "clean"
    description: "Pure solid color, no texture"
  - label: "grid"
    description: "Subtle grid overlay, technical"
  - label: "organic"
    description: "Soft textures, hand-drawn feel"
  - label: "pixel"
    description: "Chunky pixels, 8-bit aesthetic"

(Note: "paper" available via Other) Question 2: Mood

header: "Mood"
question: "Which color mood?"
options:
  - label: "professional"
    description: "Cool-neutral, navy/gold"
  - label: "warm"
    description: "Earth tones, friendly"
  - label: "cool"
    description: "Blues, grays, analytical"
  - label: "vibrant"
    description: "High saturation, bold"

(Note: "dark", "neutral" available via Other) Question 3: Typography

header: "Typography"
question: "Which typography style?"
options:
  - label: "geometric"
    description: "Modern sans-serif, clean"
  - label: "humanist"
    description: "Friendly, readable"
  - label: "handwritten"
    description: "Marker/brush, organic"
  - label: "editorial"
    description: "Magazine style, dramatic"

(Note: "technical" available via Other) Question 4: Density

header: "Density"
question: "Information density?"
options:
  - label: "balanced (Recommended)"
    description: "2-3 key points per slide"
  - label: "minimal"
    description: "One focus point, maximum whitespace"
  - label: "dense"
    description: "Multiple data points, compact"

After Round 2: Store custom dimensions as the style configuration. After Confirmation:

  1. Update analysis.md with confirmed preferences
  2. Store skip_outline_review flag from Question 4
  3. Store skip_prompt_review flag from Question 5
  4. → Step 3

Step 3: Generate Outline

Create outline using the confirmed style from Step 2. Style Resolution:

  • If preset selected → Read references/styles/{preset}.md
  • If custom dimensions → Read dimension files from references/dimensions/ and combine Generate:
  1. Follow references/outline-template.md for structure
  2. Build STYLE_INSTRUCTIONS from style or dimensions
  3. Apply confirmed audience, language, slide count
  4. Save as outline.md After generation:
  • If --outline-only, stop here
  • If skip_outline_review is true → Skip Step 4, go to Step 5
  • If skip_outline_review is false → Continue to Step 4

Step 4: Review Outline (Conditional)

Skip this step if user selected "No, skip outline review" in Step 2. Purpose: Review outline structure before prompt generation. Language: Use user's input language or saved language preference. Display:

  • Total slides: N
  • Style: [preset name or "custom: texture+mood+typography+density"]
  • Slide-by-slide summary table:
| # | Title | Type | Layout |
|---|-------|------|--------|
| 1 | [title] | Cover | title-hero |
| 2 | [title] | Content | [layout] |
| 3 | [title] | Content | [layout] |
| ... | ... | ... | ... |

Use AskUserQuestion:

header: "Confirm"
question: "Ready to generate prompts?"
options:
  - label: "Yes, proceed (Recommended)"
    description: "Generate image prompts"
  - label: "Edit outline first"
    description: "I'll modify outline.md before continuing"
  - label: "Regenerate outline"
    description: "Create new outline with different approach"

After response:

  1. If "Edit outline first" → Inform user to edit outline.md, ask again when ready
  2. If "Regenerate outline" → Back to Step 3
  3. If "Yes, proceed" → Continue to Step 5

Step 5: Generate Prompts

  1. Read references/base-prompt.md
  2. For each slide in outline:
    • Extract STYLE_INSTRUCTIONS from outline (not from style file again)
    • Add slide-specific content
    • If Layout: specified, include layout guidance from references/layouts.md
  3. Save to prompts/ directory
    • Backup rule: If prompt file exists, rename to prompts/NN-slide-{slug}-backup-YYYYMMDD-HHMMSS.md After generation:
  • If --prompts-only, stop here and output prompt summary
  • If skip_prompt_review is true → Skip Step 6, go to Step 7
  • If skip_prompt_review is false → Continue to Step 6

Step 6: Review Prompts (Conditional)

Skip this step if user selected "No, skip prompt review" in Step 2. Purpose: Review prompts before image generation. Language: Use user's input language or saved language preference. Display:

  • Total prompts: N
  • Style: [preset name or custom dimensions]
  • Prompt list:
| # | Filename | Slide Title |
|---|----------|-------------|
| 1 | 01-slide-cover.md | [title] |
| 2 | 02-slide-xxx.md | [title] |
| ... | ... | ... |
  • Path to prompts directory: prompts/ Use AskUserQuestion:
header: "Confirm"
question: "Ready to generate slide images?"
options:
  - label: "Yes, proceed (Recommended)"
    description: "Generate all slide images"
  - label: "Edit prompts first"
    description: "I'll modify prompts before continuing"
  - label: "Regenerate prompts"
    description: "Create new prompts with different approach"

After response:

  1. If "Edit prompts first" → Inform user to edit prompts, ask again when ready
  2. If "Regenerate prompts" → Back to Step 5
  3. If "Yes, proceed" → Continue to Step 7

Step 7: Generate Images

For --images-only: Start here with existing prompts. For --regenerate N: Only regenerate specified slide(s). Standard flow:

  1. Select available image generation skill
  2. Generate session ID: slides-{topic-slug}-{timestamp}
  3. For each slide:
    • Backup rule: If image file exists, rename to NN-slide-{slug}-backup-YYYYMMDD-HHMMSS.png
    • Generate image sequentially with same session ID
  4. Report progress: "Generated X/N" (in user's language)
  5. Auto-retry once on failure before reporting error

Step 8: Merge to PPTX and PDF

${BUN_X} {baseDir}/scripts/merge-to-pptx.ts <slide-deck-dir>
${BUN_X} {baseDir}/scripts/merge-to-pdf.ts <slide-deck-dir>

Step 9: Output Summary

Language: Use user's input language or saved language preference.

Slide Deck Complete!
Topic: [topic]
Style: [preset name or custom dimensions]
Location: [directory path]
Slides: N total
- 01-slide-cover.png - Cover
- 02-slide-intro.png - Content
- ...
- {NN}-slide-back-cover.png - Back Cover
Outline: outline.md
PPTX: {topic-slug}.pptx
PDF: {topic-slug}.pdf

Partial Workflows

Option Workflow --outline-only Steps 1-3 only (stop after outline) --prompts-only Steps 1-5 (generate prompts, skip images) --images-only Skip to Step 7 (requires existing prompts/) --regenerate N Regenerate specific slide(s) only

Using --prompts-only

Generate outline and prompts without images:

/baoyu-slide-deck content.md --prompts-only

Output: outline.md + prompts/*.md ready for review/editing.

Using --images-only

Generate images from existing prompts (starts at Step 7):

/baoyu-slide-deck slide-deck/topic-slug/ --images-only

Prerequisites:

  • prompts/ directory with slide prompt files
  • outline.md with style information

Using --regenerate

Regenerate specific slides:

# Single slide
/baoyu-slide-deck slide-deck/topic-slug/ --regenerate 3
# Multiple slides
/baoyu-slide-deck slide-deck/topic-slug/ --regenerate 2,5,8

Flow:

  1. Read existing prompts for specified slides
  2. Regenerate images only for those slides
  3. Regenerate PPTX/PDF

Slide Modification

Quick Reference

Action Command Manual Steps Edit --regenerate N Update prompt file FIRST → Regenerate image → Regenerate PDF Add Manual Create prompt → Generate image → Renumber subsequent → Update outline → Regenerate PDF Delete Manual Remove files → Renumber subsequent → Update outline → Regenerate PDF

Edit Single Slide

  1. Update prompt file FIRST in prompts/NN-slide-{slug}.md
  2. Run: /baoyu-slide-deck <dir> --regenerate N
  3. Or manually regenerate image + PDF IMPORTANT: When updating slides, ALWAYS update the prompt file (prompts/NN-slide-{slug}.md) FIRST before regenerating. This ensures changes are documented and reproducible.

Add New Slide

  1. Create prompt at position: prompts/NN-slide-{new-slug}.md
  2. Generate image using same session ID
  3. Renumber: Subsequent files NN+1 (slugs unchanged)
  4. Update outline.md
  5. Regenerate PPTX/PDF

Delete Slide

  1. Remove NN-slide-{slug}.png and prompts/NN-slide-{slug}.md
  2. Renumber: Subsequent files NN-1 (slugs unchanged)
  3. Update outline.md
  4. Regenerate PPTX/PDF

File Naming

Format: NN-slide-[slug].png

  • NN: Two-digit sequence (01, 02, ...)
  • slug: Kebab-case from content (2-5 words, unique) Renumbering Rule: Only NN changes, slugs remain unchanged. See references/modification-guide.md for complete details.

References

File Content references/analysis-framework.md Content analysis for presentations references/outline-template.md Outline structure and format references/modification-guide.md Edit, add, delete slide workflows references/content-rules.md Content and style guidelines references/design-guidelines.md Audience, typography, colors, visual elements references/layouts.md Layout options and selection tips references/base-prompt.md Base prompt for image generation references/dimensions/*.md Dimension specifications (texture, mood, typography, density) references/dimensions/presets.md Preset → dimension mapping references/styles/<style>.md Full style specifications (legacy) references/config/preferences-schema.md EXTEND.md structure

Notes

  • Image generation: 10-30 seconds per slide
  • Auto-retry once on generation failure
  • Use stylized alternatives for sensitive public figures
  • Maintain style consistency via session ID
  • Step 2 confirmation required - do not skip (style, audience, slides, outline review, prompt review)
  • Step 4 conditional - only if user requested outline review in Step 2
  • Step 6 conditional - only if user requested prompt review in Step 2

Extension Support

Custom configurations via EXTEND.md. See Step 1.1 for paths and supported options.

GitHub Owner

Owner: jimliu

SKILL.md


name: baoyu-slide-deck description: Generates professional slide deck images from content. Creates outlines with style instructions, then generates individual slide images. Use when user asks to "create slides", "make a presentation", "generate deck", "slide deck", or "PPT". version: 1.56.1 metadata: openclaw: homepage: https://github.com/JimLiu/baoyu-skills#baoyu-slide-deck requires: anyBins: - bun - npx

Slide Deck Generator

Transform content into professional slide deck images.

Usage

/baoyu-slide-deck path/to/content.md
/baoyu-slide-deck path/to/content.md --style sketch-notes
/baoyu-slide-deck path/to/content.md --audience executives
/baoyu-slide-deck path/to/content.md --lang zh
/baoyu-slide-deck path/to/content.md --slides 10
/baoyu-slide-deck path/to/content.md --outline-only
/baoyu-slide-deck  # Then paste content

Script Directory

Agent Execution Instructions:

  1. Determine this SKILL.md file's directory path as {baseDir}
  2. Script path = {baseDir}/scripts/<script-name>.ts
  3. Resolve ${BUN_X} runtime: if bun installed → bun; if npx available → npx -y bun; else suggest installing bun | Script | Purpose | |--------|---------| | scripts/merge-to-pptx.ts | Merge slides into PowerPoint | | scripts/merge-to-pdf.ts | Merge slides into PDF |

Options

OptionDescription
--style <name>Visual style: preset name, custom, or custom style name
--audience <type>Target: beginners, intermediate, experts, executives, general
--lang <code>Output language (en, zh, ja, etc.)
--slides <number>Target slide count (8-25 recommended, max 30)
--outline-onlyGenerate outline only, skip image generation
--prompts-onlyGenerate outline + prompts, skip images
--images-onlyGenerate images from existing prompts directory
--regenerate <N>Regenerate specific slide(s): --regenerate 3 or --regenerate 2,5,8
Slide Count by Content Length:
ContentSlides
-----------------
< 1000 words5-10
1000-3000 words10-18
3000-5000 words15-25
> 5000 words20-30 (consider splitting)

Style System

Presets

PresetDimensionsBest For
blueprint (Default)grid + cool + technical + balancedArchitecture, system design
chalkboardorganic + warm + handwritten + balancedEducation, tutorials
corporateclean + professional + geometric + balancedInvestor decks, proposals
minimalclean + neutral + geometric + minimalExecutive briefings
sketch-notesorganic + warm + handwritten + balancedEducational, tutorials
watercolororganic + warm + humanist + minimalLifestyle, wellness
dark-atmosphericclean + dark + editorial + balancedEntertainment, gaming
notionclean + neutral + geometric + denseProduct demos, SaaS
bold-editorialclean + vibrant + editorial + balancedProduct launches, keynotes
editorial-infographicclean + cool + editorial + denseTech explainers, research
fantasy-animationorganic + vibrant + handwritten + minimalEducational storytelling
intuition-machineclean + cool + technical + denseTechnical docs, academic
pixel-artpixel + vibrant + technical + balancedGaming, developer talks
scientificclean + cool + technical + denseBiology, chemistry, medical
vector-illustrationclean + vibrant + humanist + balancedCreative, children's content
vintagepaper + warm + editorial + balancedHistorical, heritage

Style Dimensions

DimensionOptionsDescription
Textureclean, grid, organic, pixel, paperVisual texture and background treatment
Moodprofessional, warm, cool, vibrant, dark, neutralColor temperature and palette style
Typographygeometric, humanist, handwritten, editorial, technicalHeadline and body text styling
Densityminimal, balanced, denseInformation density per slide
Full specs: references/dimensions/*.md

Auto Style Selection

Content SignalsPreset
tutorial, learn, education, guide, beginnersketch-notes
classroom, teaching, school, chalkboardchalkboard
architecture, system, data, analysis, technicalblueprint
creative, children, kids, cutevector-illustration
briefing, academic, research, bilingualintuition-machine
executive, minimal, clean, simpleminimal
saas, product, dashboard, metricsnotion
investor, quarterly, business, corporatecorporate
launch, marketing, keynote, magazinebold-editorial
entertainment, music, gaming, atmosphericdark-atmospheric
explainer, journalism, science communicationeditorial-infographic
story, fantasy, animation, magicalfantasy-animation
gaming, retro, pixel, developerpixel-art
biology, chemistry, medical, scientificscientific
history, heritage, vintage, expeditionvintage
lifestyle, wellness, travel, artisticwatercolor
Defaultblueprint

Design Philosophy

Decks designed for reading and sharing, not live presentation:

  • Each slide self-explanatory without verbal commentary
  • Logical flow when scrolling
  • All necessary context within each slide
  • Optimized for social media sharing See references/design-guidelines.md for:
  • Audience-specific principles
  • Visual hierarchy
  • Content density guidelines
  • Color and typography selection
  • Font recommendations See references/layouts.md for layout options.

File Management

Output Directory

slide-deck/{topic-slug}/
├── source-{slug}.{ext}
├── outline.md
├── prompts/
│   └── 01-slide-cover.md, 02-slide-{slug}.md, ...
├── 01-slide-cover.png, 02-slide-{slug}.png, ...
├── {topic-slug}.pptx
└── {topic-slug}.pdf

Slug: Extract topic (2-4 words, kebab-case). Example: "Introduction to Machine Learning" → intro-machine-learning Conflict Handling: See Step 1.3 for existing content detection and user options.

Language Handling

Detection Priority:

  1. --lang flag (explicit)
  2. EXTEND.md language setting
  3. User's conversation language (input language)
  4. Source content language Rule: ALL responses use user's preferred language:
  • Questions and confirmations
  • Progress reports
  • Error messages
  • Completion summaries Technical terms (style names, file paths, code) remain in English.

Workflow

Copy this checklist and check off items as you complete them:

Slide Deck Progress:
- [ ] Step 1: Setup & Analyze
  - [ ] 1.1 Load preferences
  - [ ] 1.2 Analyze content
  - [ ] 1.3 Check existing ⚠️ REQUIRED
- [ ] Step 2: Confirmation ⚠️ REQUIRED (Round 1, optional Round 2)
- [ ] Step 3: Generate outline
- [ ] Step 4: Review outline (conditional)
- [ ] Step 5: Generate prompts
- [ ] Step 6: Review prompts (conditional)
- [ ] Step 7: Generate images
- [ ] Step 8: Merge to PPTX/PDF
- [ ] Step 9: Output summary

Flow

Input → Preferences → Analyze → [Check Existing?] → Confirm (1-2 rounds) → Outline[Review Outline?] → Prompts → [Review Prompts?] → Images → Merge → Complete

Step 1: Setup & Analyze

1.1 Load Preferences (EXTEND.md) Check EXTEND.md existence (priority order):

# macOS, Linux, WSL, Git Bash
test -f .baoyu-skills/baoyu-slide-deck/EXTEND.md && echo "project"
test -f "${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-slide-deck/EXTEND.md" && echo "xdg"
test -f "$HOME/.baoyu-skills/baoyu-slide-deck/EXTEND.md" && echo "user"
# PowerShell (Windows)
if (Test-Path .baoyu-skills/baoyu-slide-deck/EXTEND.md) { "project" }
$xdg = if ($env:XDG_CONFIG_HOME) { $env:XDG_CONFIG_HOME } else { "$HOME/.config" }
if (Test-Path "$xdg/baoyu-skills/baoyu-slide-deck/EXTEND.md") { "xdg" }
if (Test-Path "$HOME/.baoyu-skills/baoyu-slide-deck/EXTEND.md") { "user" }

┌──────────────────────────────────────────────────┬───────────────────┐ │ Path │ Location │ ├──────────────────────────────────────────────────┼───────────────────┤ │ .baoyu-skills/baoyu-slide-deck/EXTEND.md │ Project directory │ ├──────────────────────────────────────────────────┼───────────────────┤ │ $HOME/.baoyu-skills/baoyu-slide-deck/EXTEND.md │ User home │ └──────────────────────────────────────────────────┴───────────────────┘ When EXTEND.md Found → Read, parse, output summary to user:

📋 Loaded preferences from [full path]
├─ Style: [preset/custom name]
├─ Audience: [audience or "auto-detect"]
├─ Language: [language or "auto-detect"]
└─ Review: [enabled/disabled]

When EXTEND.md Not Found → First-time setup using AskUserQuestion or proceed with defaults. EXTEND.md Supports: Preferred style | Custom dimensions | Default audience | Language preference | Review preference Schema: references/config/preferences-schema.md 1.2 Analyze Content

  1. Save source content (if pasted, save as source.md)
    • Backup rule: If source.md exists, rename to source-backup-YYYYMMDD-HHMMSS.md
  2. Follow references/analysis-framework.md for content analysis
  3. Analyze content signals for style recommendations
  4. Detect source language
  5. Determine recommended slide count
  6. Generate topic slug from content 1.3 Check Existing Content ⚠️ REQUIRED MUST execute before proceeding to Step 2. Use Bash to check if output directory exists:
test -d "slide-deck/{topic-slug}" && echo "exists"

If directory exists, use AskUserQuestion:

header: "Existing"
question: "Existing content found. How to proceed?"
options:
  - label: "Regenerate outline"
    description: "Keep images, regenerate outline only"
  - label: "Regenerate images"
    description: "Keep outline, regenerate images only"
  - label: "Backup and regenerate"
    description: "Backup to {slug}-backup-{timestamp}, then regenerate all"
  - label: "Exit"
    description: "Cancel, keep existing content unchanged"

Save to analysis.md with:

  • Topic, audience, content signals
  • Recommended style (based on Auto Style Selection)
  • Recommended slide count
  • Language detection

Step 2: Confirmation ⚠️ REQUIRED

Two-round confirmation: Round 1 always, Round 2 only if "Custom dimensions" selected. Language: Use user's input language or saved language preference. Display summary:

  • Content type + topic identified
  • Language: [from EXTEND.md or detected]
  • Recommended style: [preset] (based on content signals)
  • Recommended slides: [N] (based on content length)

Round 1 (Always)

Use AskUserQuestion for all 5 questions: Question 1: Style

header: "Style"
question: "Which visual style for this deck?"
options:
  - label: "{recommended_preset} (Recommended)"
    description: "Best match based on content analysis"
  - label: "{alternative_preset}"
    description: "[alternative style description]"
  - label: "Custom dimensions"
    description: "Choose texture, mood, typography, density separately"

Question 2: Audience

header: "Audience"
question: "Who is the primary reader?"
options:
  - label: "General readers (Recommended)"
    description: "Broad appeal, accessible content"
  - label: "Beginners/learners"
    description: "Educational focus, clear explanations"
  - label: "Experts/professionals"
    description: "Technical depth, domain knowledge"
  - label: "Executives"
    description: "High-level insights, minimal detail"

Question 3: Slide Count

header: "Slides"
question: "How many slides?"
options:
  - label: "{N} slides (Recommended)"
    description: "Based on content length"
  - label: "Fewer ({N-3} slides)"
    description: "More condensed, less detail"
  - label: "More ({N+3} slides)"
    description: "More detailed breakdown"

Question 4: Review Outline

header: "Outline"
question: "Review outline before generating prompts?"
options:
  - label: "Yes, review outline (Recommended)"
    description: "Review slide titles and structure"
  - label: "No, skip outline review"
    description: "Proceed directly to prompt generation"

Question 5: Review Prompts

header: "Prompts"
question: "Review prompts before generating images?"
options:
  - label: "Yes, review prompts (Recommended)"
    description: "Review image generation prompts"
  - label: "No, skip prompt review"
    description: "Proceed directly to image generation"

Round 2 (Only if "Custom dimensions" selected)

Use AskUserQuestion for all 4 dimensions: Question 1: Texture

header: "Texture"
question: "Which visual texture?"
options:
  - label: "clean"
    description: "Pure solid color, no texture"
  - label: "grid"
    description: "Subtle grid overlay, technical"
  - label: "organic"
    description: "Soft textures, hand-drawn feel"
  - label: "pixel"
    description: "Chunky pixels, 8-bit aesthetic"

(Note: "paper" available via Other) Question 2: Mood

header: "Mood"
question: "Which color mood?"
options:
  - label: "professional"
    description: "Cool-neutral, navy/gold"
  - label: "warm"
    description: "Earth tones, friendly"
  - label: "cool"
    description: "Blues, grays, analytical"
  - label: "vibrant"
    description: "High saturation, bold"

(Note: "dark", "neutral" available via Other) Question 3: Typography

header: "Typography"
question: "Which typography style?"
options:
  - label: "geometric"
    description: "Modern sans-serif, clean"
  - label: "humanist"
    description: "Friendly, readable"
  - label: "handwritten"
    description: "Marker/brush, organic"
  - label: "editorial"
    description: "Magazine style, dramatic"

(Note: "technical" available via Other) Question 4: Density

header: "Density"
question: "Information density?"
options:
  - label: "balanced (Recommended)"
    description: "2-3 key points per slide"
  - label: "minimal"
    description: "One focus point, maximum whitespace"
  - label: "dense"
    description: "Multiple data points, compact"

After Round 2: Store custom dimensions as the style configuration. After Confirmation:

  1. Update analysis.md with confirmed preferences
  2. Store skip_outline_review flag from Question 4
  3. Store skip_prompt_review flag from Question 5
  4. → Step 3

Step 3: Generate Outline

Create outline using the confirmed style from Step 2. Style Resolution:

  • If preset selected → Read references/styles/{preset}.md
  • If custom dimensions → Read dimension files from references/dimensions/ and combine Generate:
  1. Follow references/outline-template.md for structure
  2. Build STYLE_INSTRUCTIONS from style or dimensions
  3. Apply confirmed audience, language, slide count
  4. Save as outline.md After generation:
  • If --outline-only, stop here
  • If skip_outline_review is true → Skip Step 4, go to Step 5
  • If skip_outline_review is false → Continue to Step 4

Step 4: Review Outline (Conditional)

Skip this step if user selected "No, skip outline review" in Step 2. Purpose: Review outline structure before prompt generation. Language: Use user's input language or saved language preference. Display:

  • Total slides: N
  • Style: [preset name or "custom: texture+mood+typography+density"]
  • Slide-by-slide summary table:
| # | Title | Type | Layout |
|---|-------|------|--------|
| 1 | [title] | Cover | title-hero |
| 2 | [title] | Content | [layout] |
| 3 | [title] | Content | [layout] |
| ... | ... | ... | ... |

Use AskUserQuestion:

header: "Confirm"
question: "Ready to generate prompts?"
options:
  - label: "Yes, proceed (Recommended)"
    description: "Generate image prompts"
  - label: "Edit outline first"
    description: "I'll modify outline.md before continuing"
  - label: "Regenerate outline"
    description: "Create new outline with different approach"

After response:

  1. If "Edit outline first" → Inform user to edit outline.md, ask again when ready
  2. If "Regenerate outline" → Back to Step 3
  3. If "Yes, proceed" → Continue to Step 5

Step 5: Generate Prompts

  1. Read references/base-prompt.md
  2. For each slide in outline:
    • Extract STYLE_INSTRUCTIONS from outline (not from style file again)
    • Add slide-specific content
    • If Layout: specified, include layout guidance from references/layouts.md
  3. Save to prompts/ directory
    • Backup rule: If prompt file exists, rename to prompts/NN-slide-{slug}-backup-YYYYMMDD-HHMMSS.md After generation:
  • If --prompts-only, stop here and output prompt summary
  • If skip_prompt_review is true → Skip Step 6, go to Step 7
  • If skip_prompt_review is false → Continue to Step 6

Step 6: Review Prompts (Conditional)

Skip this step if user selected "No, skip prompt review" in Step 2. Purpose: Review prompts before image generation. Language: Use user's input language or saved language preference. Display:

  • Total prompts: N
  • Style: [preset name or custom dimensions]
  • Prompt list:
| # | Filename | Slide Title |
|---|----------|-------------|
| 1 | 01-slide-cover.md | [title] |
| 2 | 02-slide-xxx.md | [title] |
| ... | ... | ... |
  • Path to prompts directory: prompts/ Use AskUserQuestion:
header: "Confirm"
question: "Ready to generate slide images?"
options:
  - label: "Yes, proceed (Recommended)"
    description: "Generate all slide images"
  - label: "Edit prompts first"
    description: "I'll modify prompts before continuing"
  - label: "Regenerate prompts"
    description: "Create new prompts with different approach"

After response:

  1. If "Edit prompts first" → Inform user to edit prompts, ask again when ready
  2. If "Regenerate prompts" → Back to Step 5
  3. If "Yes, proceed" → Continue to Step 7

Step 7: Generate Images

For --images-only: Start here with existing prompts. For --regenerate N: Only regenerate specified slide(s). Standard flow:

  1. Select available image generation skill
  2. Generate session ID: slides-{topic-slug}-{timestamp}
  3. For each slide:
    • Backup rule: If image file exists, rename to NN-slide-{slug}-backup-YYYYMMDD-HHMMSS.png
    • Generate image sequentially with same session ID
  4. Report progress: "Generated X/N" (in user's language)
  5. Auto-retry once on failure before reporting error

Step 8: Merge to PPTX and PDF

${BUN_X} {baseDir}/scripts/merge-to-pptx.ts <slide-deck-dir>
${BUN_X} {baseDir}/scripts/merge-to-pdf.ts <slide-deck-dir>

Step 9: Output Summary

Language: Use user's input language or saved language preference.

Slide Deck Complete!
Topic: [topic]
Style: [preset name or custom dimensions]
Location: [directory path]
Slides: N total
- 01-slide-cover.png - Cover
- 02-slide-intro.png - Content
- ...
- {NN}-slide-back-cover.png - Back Cover
Outline: outline.md
PPTX: {topic-slug}.pptx
PDF: {topic-slug}.pdf

Partial Workflows

OptionWorkflow
--outline-onlySteps 1-3 only (stop after outline)
--prompts-onlySteps 1-5 (generate prompts, skip images)
--images-onlySkip to Step 7 (requires existing prompts/)
--regenerate NRegenerate specific slide(s) only

Using --prompts-only

Generate outline and prompts without images:

/baoyu-slide-deck content.md --prompts-only

Output: outline.md + prompts/*.md ready for review/editing.

Using --images-only

Generate images from existing prompts (starts at Step 7):

/baoyu-slide-deck slide-deck/topic-slug/ --images-only

Prerequisites:

  • prompts/ directory with slide prompt files
  • outline.md with style information

Using --regenerate

Regenerate specific slides:

# Single slide
/baoyu-slide-deck slide-deck/topic-slug/ --regenerate 3
# Multiple slides
/baoyu-slide-deck slide-deck/topic-slug/ --regenerate 2,5,8

Flow:

  1. Read existing prompts for specified slides
  2. Regenerate images only for those slides
  3. Regenerate PPTX/PDF

Slide Modification

Quick Reference

ActionCommandManual Steps
Edit--regenerate NUpdate prompt file FIRST → Regenerate image → Regenerate PDF
AddManualCreate prompt → Generate image → Renumber subsequent → Update outline → Regenerate PDF
DeleteManualRemove files → Renumber subsequent → Update outline → Regenerate PDF

Edit Single Slide

  1. Update prompt file FIRST in prompts/NN-slide-{slug}.md
  2. Run: /baoyu-slide-deck <dir> --regenerate N
  3. Or manually regenerate image + PDF IMPORTANT: When updating slides, ALWAYS update the prompt file (prompts/NN-slide-{slug}.md) FIRST before regenerating. This ensures changes are documented and reproducible.

Add New Slide

  1. Create prompt at position: prompts/NN-slide-{new-slug}.md
  2. Generate image using same session ID
  3. Renumber: Subsequent files NN+1 (slugs unchanged)
  4. Update outline.md
  5. Regenerate PPTX/PDF

Delete Slide

  1. Remove NN-slide-{slug}.png and prompts/NN-slide-{slug}.md
  2. Renumber: Subsequent files NN-1 (slugs unchanged)
  3. Update outline.md
  4. Regenerate PPTX/PDF

File Naming

Format: NN-slide-[slug].png

  • NN: Two-digit sequence (01, 02, ...)
  • slug: Kebab-case from content (2-5 words, unique) Renumbering Rule: Only NN changes, slugs remain unchanged. See references/modification-guide.md for complete details.

References

FileContent
references/analysis-framework.mdContent analysis for presentations
references/outline-template.mdOutline structure and format
references/modification-guide.mdEdit, add, delete slide workflows
references/content-rules.mdContent and style guidelines
references/design-guidelines.mdAudience, typography, colors, visual elements
references/layouts.mdLayout options and selection tips
references/base-prompt.mdBase prompt for image generation
references/dimensions/*.mdDimension specifications (texture, mood, typography, density)
references/dimensions/presets.mdPreset → dimension mapping
references/styles/<style>.mdFull style specifications (legacy)
references/config/preferences-schema.mdEXTEND.md structure

Notes

  • Image generation: 10-30 seconds per slide
  • Auto-retry once on generation failure
  • Use stylized alternatives for sensitive public figures
  • Maintain style consistency via session ID
  • Step 2 confirmation required - do not skip (style, audience, slides, outline review, prompt review)
  • Step 4 conditional - only if user requested outline review in Step 2
  • Step 6 conditional - only if user requested prompt review in Step 2

Extension Support

Custom configurations via EXTEND.md. See Step 1.1 for paths and supported options.

More skills