slide-generation
Use this skill to create presentation slides from structured content. Triggers: "create slides", "generate presentation", "make powerpoint", "create pptx", "build slides", "presentation from content", "slide deck", "slides for" Outputs: PPTX files, Markdown slides, or HTML presentations. Used by: pitch-deck-agent, market-researcher-agent, and other agents needing slides.
What this skill does
# Slide Generation Skill
Create presentation slides from structured content.
**This is a low-level generation skill** that other agents use to create actual slide files.
## What It Creates
| Format | Method | Best For |
|--------|--------|----------|
| **PPTX** | `python-pptx` library | PowerPoint, Google Slides import |
| **Markdown** | Marp/Slidev format | Developer presentations |
| **HTML** | Reveal.js template | Web-based presentations |
## Prerequisites
```bash
# Required for PPTX generation
pip install python-pptx Pillow
# Optional for Markdown slides
npm install -g @marp-team/marp-cli
```
## Usage
### Script: `slides.py`
```bash
# Basic slide creation
python slides.py --content slides.json --output presentation.pptx
# With theme
python slides.py --content slides.json --theme modern-dark --output deck.pptx
# Markdown output
python slides.py --content slides.json --format markdown --output slides.md
```
### Input Format: `slides.json`
```json
{
"metadata": {
"title": "Presentation Title",
"author": "Author Name",
"theme": "modern-dark"
},
"slides": [
{
"type": "title",
"title": "Main Title",
"subtitle": "Subtitle or tagline",
"image": "logo.png"
},
{
"type": "content",
"title": "Slide Title",
"bullets": [
"First point",
"Second point",
"Third point"
],
"notes": "Speaker notes for this slide"
},
{
"type": "image",
"title": "Visual Slide",
"image": "chart.png",
"caption": "Optional caption"
},
{
"type": "two-column",
"title": "Comparison",
"left": {
"heading": "Before",
"bullets": ["Point 1", "Point 2"]
},
"right": {
"heading": "After",
"bullets": ["Point 1", "Point 2"]
}
},
{
"type": "quote",
"quote": "This is a customer testimonial or important quote.",
"attribution": "- Customer Name, Company"
},
{
"type": "stats",
"title": "Key Metrics",
"stats": [
{"value": "10x", "label": "Faster"},
{"value": "50%", "label": "Cost Savings"},
{"value": "1M+", "label": "Users"}
]
}
]
}
```
---
## Slide Types
### 1. Title Slide
```json
{
"type": "title",
"title": "Company Name",
"subtitle": "Tagline goes here",
"image": "logo.png",
"date": "January 2026"
}
```
### 2. Content Slide (Bullets)
```json
{
"type": "content",
"title": "Slide Title",
"bullets": ["Point 1", "Point 2", "Point 3"],
"image": "optional-side-image.png",
"notes": "Speaker notes"
}
```
### 3. Image Slide
```json
{
"type": "image",
"title": "Product Screenshot",
"image": "screenshot.png",
"caption": "Our new dashboard"
}
```
### 4. Two-Column Slide
```json
{
"type": "two-column",
"title": "Before & After",
"left": {"heading": "Before", "bullets": ["Problem 1"]},
"right": {"heading": "After", "bullets": ["Solution 1"]}
}
```
### 5. Quote Slide
```json
{
"type": "quote",
"quote": "This product changed our business.",
"attribution": "- CEO, Fortune 500 Company",
"image": "headshot.png"
}
```
### 6. Stats Slide
```json
{
"type": "stats",
"title": "By the Numbers",
"stats": [
{"value": "10x", "label": "Faster"},
{"value": "$1M", "label": "Saved"}
]
}
```
### 7. Chart Slide
```json
{
"type": "chart",
"title": "Market Size",
"chart_type": "bar",
"data": {
"labels": ["TAM", "SAM", "SOM"],
"values": [50, 10, 2]
}
}
```
### 8. Section Divider
```json
{
"type": "section",
"title": "Part 2: The Solution"
}
```
### 9. Closing Slide
```json
{
"type": "closing",
"title": "Thank You",
"subtitle": "Questions?",
"contact": "[email protected]"
}
```
---
## Themes
| Theme | Description |
|-------|-------------|
| `modern-dark` | Dark background, light text, bold accents |
| `modern-light` | Light background, clean minimalist |
| `corporate` | Professional, blue tones |
| `startup` | Bold colors, energetic |
| `minimal` | Maximum whitespace, typography focus |
### Custom Theme
```json
{
"theme": {
"background": "#1a1a2e",
"text": "#ffffff",
"accent": "#e94560",
"heading_font": "Montserrat",
"body_font": "Open Sans"
}
}
```
---
## Integration with Other Skills
### pitch-deck-agent workflow:
```
1. pitch-deck-agent generates slide content as JSON
2. Calls image-generation for visuals
3. Calls slide-generation to create PPTX
4. Returns actual .pptx file
```
### market-researcher-agent workflow:
```
1. market-researcher-agent creates market report
2. Converts report to slide format
3. Calls slide-generation for presentation
4. Returns market-report.pptx
```
---
## Output
```
✅ Presentation created: presentation.pptx
Slides: 12
Theme: modern-dark
Images: 5 embedded
Open with:
- Microsoft PowerPoint
- Google Slides (import)
- LibreOffice Impress
```
---
## Limitations
- Charts are basic (for complex charts, use image-generation)
- Animations not supported (static slides only)
- Custom layouts require theme customization
- Large images are resized to fit
## For Advanced PowerPoint Operations
For more complex PowerPoint tasks, use the **[pptx skill](../pptx/)** which supports:
- Editing existing presentations (OOXML)
- Working with templates (duplicate, rearrange, replace)
- HTML → PowerPoint conversion
- Advanced layout and typography control
- Comments and speaker notes
---
## Example Prompts
**From other agents:**
> `slide-generation` is called programmatically, not directly by users
**Direct use:**
> "Create slides from this content: [paste JSON]"
> "Generate a PowerPoint from my outline"
Related in Web Dev
generating-lwc-components
IncludedLightning Web Components with PICKLES methodology and 165-point scoring. Use this skill when the user creates or edits LWC components, builds wire service patterns, or writes Jest tests for LWC. TRIGGER when: user creates/edits LWC components, touches lwc/**/*.js, .html, .css, .js-meta.xml files, or asks about wire service, SLDS, or Jest LWC tests. DO NOT TRIGGER when: Apex classes (use generating-apex), Aura components, or Visualforce.
tanstack-query
IncludedManage server state in React with TanStack Query v5. Set up queries with useQuery, mutations with useMutation, configure QueryClient caching strategies, implement optimistic updates, and handle infinite scroll with useInfiniteQuery. Use when: setting up data fetching in React projects, migrating from v4 to v5, or fixing object syntax required errors, query callbacks removed issues, cacheTime renamed to gcTime, isPending vs isLoading confusion, keepPreviousData removed problems.
document-processor-api
IncludedProcess documents with Nutrient DWS. Use when the user wants to generate PDFs from HTML or URLs, convert Office/images/PDFs, assemble or split packets, OCR scans, extract text/tables/key-value pairs, redact PII, watermark, sign, fill forms, optimize PDFs, or produce compliance outputs like PDF/A or PDF/UA. Triggers include convert to PDF, merge these PDFs, OCR this scan, extract tables, redact PII, sign this PDF, make this PDF/A, or linearize for web delivery.
nutrient-document-processing
IncludedProcess documents with Nutrient DWS. Use when the user wants to generate PDFs from HTML or URLs, convert Office/images/PDFs, assemble or split packets, OCR scans, extract text/tables/key-value pairs, redact PII, watermark, sign, fill forms, optimize PDFs, or produce compliance outputs like PDF/A or PDF/UA. Triggers include convert to PDF, merge these PDFs, OCR this scan, extract tables, redact PII, sign this PDF, make this PDF/A, or linearize for web delivery.
tanstack-query
IncludedManage server state in React with TanStack Query v5. Covers useMutationState, simplified optimistic updates, throwOnError, network mode (offline/PWA), and infiniteQueryOptions. Use when setting up data fetching, fixing v4→v5 migration errors (object syntax, gcTime, isPending, keepPreviousData), or debugging SSR/hydration issues with streaming server components.
accelint-nextjs-best-practices
IncludedNext.js performance optimization and best practices. Use when writing Next.js code (App Router or Pages Router); implementing Server Components, Server Actions, or API routes; optimizing RSC serialization, data fetching, or server-side rendering; reviewing Next.js code for performance issues; fixing authentication in Server Actions; or implementing Suspense boundaries, parallel data fetching, or request deduplication.