Slideshow Creator
Generate professional presentations (.pptx and .pdf) from a JSON deck specification. Zero design decisions at generation time - Claude selects slide types and fills content slots; all visual properties are pre-decided by the theme.
When to Use
- Creating slide decks for stakeholder updates, product reviews, team presentations
- Generating professional .pptx files from content briefs
- Producing consistent presentations without manual formatting
- Exporting presentations to PDF for sharing or archiving
When NOT to Use
- Creating complex data visualizations (use dedicated charting tools)
- Building interactive web presentations (this produces .pptx, not HTML)
- Editing existing PowerPoint files (this creates new decks from scratch)
How It Works
Two-phase architecture:
- Spec phase (Claude) - Read the content brief, select slide types using decision logic, write a JSON deck specification. Content slots have character limits calibrated to prevent overflow. This is the only phase that costs tokens.
- Generation phase (Local script) - Run
node scripts/generate-deck.js deck-spec.json to produce .pptx. Optionally run node scripts/export-pdf.mjs deck-spec.json for PDF. Deterministic rendering, zero token cost.
Both outputs come from the same JSON spec, so .pptx and .pdf always match.
18 Slide Types
| # |
Type Key |
Purpose |
Default Variant |
| 1 |
title_dark |
Opening slide (bold) |
dark only |
| 2 |
title_light |
Opening slide (internal/lighter) |
light only |
| 3 |
section |
Section divider |
dark |
| 4 |
content |
Paragraph explanation |
light |
| 5 |
bullets |
3-6 key points |
light |
| 6 |
two_col |
Side-by-side comparison |
light |
| 7 |
stat |
Single key metric |
light |
| 8 |
dual_stat |
Two metrics compared |
dark |
| 9 |
quote |
Testimonial or pull quote |
dark |
| 10 |
three_card |
Three parallel concepts |
dark |
| 11 |
four_grid |
Four concepts in 2x2 grid |
dark |
| 12 |
timeline |
Dates or milestones (max 6) |
light |
| 13 |
process_flow |
Sequential workflow (max 5) |
light |
| 14 |
agenda |
Meeting agenda (max 7) |
light |
| 15 |
highlight |
Key finding or executive summary |
light |
| 16 |
table |
Tabular data |
light |
| 17 |
icon_rows |
Feature list with markers (max 4) |
light |
| 18 |
closing |
End slide |
dark only |
Full slot definitions and character limits: references/slide-types.md
Decision Logic (Quick Reference)
| Content Pattern |
Use |
| Opening the deck (bold) |
title_dark |
| Opening the deck (internal) |
title_light |
| Transitioning between topics |
section |
| Paragraph explanation |
content |
| List of 3-6 points |
bullets |
| Side-by-side comparison |
two_col |
| Single key metric |
stat |
| Two metrics compared |
dual_stat |
| Testimonial or pull quote |
quote |
| Three parallel concepts |
three_card |
| Four concepts in a grid |
four_grid |
| Dates or milestones |
timeline |
| Sequential workflow |
process_flow |
| Meeting agenda |
agenda |
| Key finding or summary |
highlight |
| Tabular data |
table |
| Feature list with markers |
icon_rows |
| Ending the deck |
closing |
Full decision logic with variant strategy: references/decision-logic.md
JSON Deck Spec Format
{
"title": "Q3 Product Update",
"author": "Product Team",
"footerText": "Internal . Q3 Review",
"slides": [
{ "type": "title_dark", "title": "Q3 Product Update", "subtitle": "October 2026" },
{ "type": "stat", "stat": "94%", "label": "Customer satisfaction score", "accentColor": "secondary" },
{ "type": "bullets", "title": "What Shipped", "bullets": ["Feature A", "Feature B", "Feature C"] },
{ "type": "closing" }
]
}
Colors accept theme token names ("accent", "secondary", "tertiary", "warm") or 6-character hex strings ("2563EB").
Full schema and workflow: references/TEMPLATE.md and references/platform-rules.md
Instructions
- Read the content brief - Understand topic, audience, length, specific requirements
- Plan the deck - Select slide types using the decision logic table. Assign dark/light variants for visual rhythm (alternate to avoid monotony).
- Write the JSON deck specification - Fill content slots, respecting character limits from
references/slide-types.md
- Run the generation script -
node scripts/generate-deck.js deck-spec.json
- Optionally export PDF -
node scripts/export-pdf.mjs deck-spec.json output.pdf
- Report the output - Tell the user where the file(s) are
Output Contract
- Planning artifact: JSON deck specification (the file Claude writes)
- Final output: .pptx file (+ optional .pdf), generated locally from the spec
- Quality gate: All items in the quality checklist pass
Quality Checklist
References
| File |
Purpose |
references/TEMPLATE.md |
JSON deck specification template with field documentation |
references/EXAMPLE.md |
Worked example: Q3 Product Update deck (9 slides) |
references/slide-types.md |
All 18 slide types: content slots, character limits, variants |
references/decision-logic.md |
Content pattern → slide type mapping, variant strategy, deck sizing |
references/platform-rules.md |
pptxgenjs requirements, Google Slides compatibility, output format |
1---
2name: utility-slideshow-creator
3description: Generates professional presentations from a JSON deck specification using 18 slide types with dark/light variants, content-to-layout decision logic, and calibrated character limits. Ships with a default professional theme.
4license: Apache-2.0
5metadata:
6 classification: utility
7 version: "1.0.1"
8 updated: 2026-06-10
9 category: communication
10 frameworks:
11 - pptxgenjs
12 author: product-on-purpose
13---
14
15<!-- PM-Skills | https://github.com/product-on-purpose/pm-skills | Apache 2.0 -->
16
17# Slideshow Creator
18
19Generate professional presentations (.pptx and .pdf) from a JSON deck specification. Zero design decisions at generation time - Claude selects slide types and fills content slots; all visual properties are pre-decided by the theme.
20
21## When to Use
22
23- Creating slide decks for stakeholder updates, product reviews, team presentations
24- Generating professional .pptx files from content briefs
25- Producing consistent presentations without manual formatting
26- Exporting presentations to PDF for sharing or archiving
27
28## When NOT to Use
29
30- Creating complex data visualizations (use dedicated charting tools)
31- Building interactive web presentations (this produces .pptx, not HTML)
32- Editing existing PowerPoint files (this creates new decks from scratch)
33
34## How It Works
35
36**Two-phase architecture:**
37
381. **Spec phase (Claude)** - Read the content brief, select slide types using decision logic, write a JSON deck specification. Content slots have character limits calibrated to prevent overflow. This is the only phase that costs tokens.
392. **Generation phase (Local script)** - Run `node scripts/generate-deck.js deck-spec.json` to produce .pptx. Optionally run `node scripts/export-pdf.mjs deck-spec.json` for PDF. Deterministic rendering, zero token cost.
40
41Both outputs come from the same JSON spec, so .pptx and .pdf always match.
42
43## 18 Slide Types
44
45| # | Type Key | Purpose | Default Variant |
46|---|----------|---------|-----------------|
47| 1 | `title_dark` | Opening slide (bold) | dark only |
48| 2 | `title_light` | Opening slide (internal/lighter) | light only |
49| 3 | `section` | Section divider | dark |
50| 4 | `content` | Paragraph explanation | light |
51| 5 | `bullets` | 3-6 key points | light |
52| 6 | `two_col` | Side-by-side comparison | light |
53| 7 | `stat` | Single key metric | light |
54| 8 | `dual_stat` | Two metrics compared | dark |
55| 9 | `quote` | Testimonial or pull quote | dark |
56| 10 | `three_card` | Three parallel concepts | dark |
57| 11 | `four_grid` | Four concepts in 2x2 grid | dark |
58| 12 | `timeline` | Dates or milestones (max 6) | light |
59| 13 | `process_flow` | Sequential workflow (max 5) | light |
60| 14 | `agenda` | Meeting agenda (max 7) | light |
61| 15 | `highlight` | Key finding or executive summary | light |
62| 16 | `table` | Tabular data | light |
63| 17 | `icon_rows` | Feature list with markers (max 4) | light |
64| 18 | `closing` | End slide | dark only |
65
66Full slot definitions and character limits: `references/slide-types.md`
67
68## Decision Logic (Quick Reference)
69
70| Content Pattern | Use |
71|---|---|
72| Opening the deck (bold) | `title_dark` |
73| Opening the deck (internal) | `title_light` |
74| Transitioning between topics | `section` |
75| Paragraph explanation | `content` |
76| List of 3-6 points | `bullets` |
77| Side-by-side comparison | `two_col` |
78| Single key metric | `stat` |
79| Two metrics compared | `dual_stat` |
80| Testimonial or pull quote | `quote` |
81| Three parallel concepts | `three_card` |
82| Four concepts in a grid | `four_grid` |
83| Dates or milestones | `timeline` |
84| Sequential workflow | `process_flow` |
85| Meeting agenda | `agenda` |
86| Key finding or summary | `highlight` |
87| Tabular data | `table` |
88| Feature list with markers | `icon_rows` |
89| Ending the deck | `closing` |
90
91Full decision logic with variant strategy: `references/decision-logic.md`
92
93## JSON Deck Spec Format
94
95```json
96{
97 "title": "Q3 Product Update",
98 "author": "Product Team",
99 "footerText": "Internal . Q3 Review",
100 "slides": [
101 { "type": "title_dark", "title": "Q3 Product Update", "subtitle": "October 2026" },
102 { "type": "stat", "stat": "94%", "label": "Customer satisfaction score", "accentColor": "secondary" },
103 { "type": "bullets", "title": "What Shipped", "bullets": ["Feature A", "Feature B", "Feature C"] },
104 { "type": "closing" }
105 ]
106}
107```
108
109Colors accept theme token names (`"accent"`, `"secondary"`, `"tertiary"`, `"warm"`) or 6-character hex strings (`"2563EB"`).
110
111Full schema and workflow: `references/TEMPLATE.md` and `references/platform-rules.md`
112
113## Instructions
114
1151. **Read the content brief** - Understand topic, audience, length, specific requirements
1162. **Plan the deck** - Select slide types using the decision logic table. Assign dark/light variants for visual rhythm (alternate to avoid monotony).
1173. **Write the JSON deck specification** - Fill content slots, respecting character limits from `references/slide-types.md`
1184. **Run the generation script** - `node scripts/generate-deck.js deck-spec.json`
1195. **Optionally export PDF** - `node scripts/export-pdf.mjs deck-spec.json output.pdf`
1206. **Report the output** - Tell the user where the file(s) are
121
122## Output Contract
123
124- **Planning artifact**: JSON deck specification (the file Claude writes)
125- **Final output**: .pptx file (+ optional .pdf), generated locally from the spec
126- **Quality gate**: All items in the quality checklist pass
127
128## Quality Checklist
129
130- [ ] Every slide has a valid type key (one of the 18 defined types)
131- [ ] All content slots respect character limits from `references/slide-types.md`
132- [ ] Dark/light variants alternate for visual rhythm (no 3+ consecutive same-variant slides)
133- [ ] Deck has a title slide (first) and a closing slide (last)
134- [ ] Section dividers separate distinct topics in decks > 6 slides
135- [ ] Speaker notes included for key slides (stats, highlights, transitions)
136- [ ] JSON is valid (no trailing commas, proper quoting, correct nesting)
137- [ ] Color values are valid theme tokens or 6-character hex strings (no `#` prefix)
138
139## References
140
141| File | Purpose |
142|------|---------|
143| `references/TEMPLATE.md` | JSON deck specification template with field documentation |
144| `references/EXAMPLE.md` | Worked example: Q3 Product Update deck (9 slides) |
145| `references/slide-types.md` | All 18 slide types: content slots, character limits, variants |
146| `references/decision-logic.md` | Content pattern → slide type mapping, variant strategy, deck sizing |
147| `references/platform-rules.md` | pptxgenjs requirements, Google Slides compatibility, output format |