Pm-skills utility-slideshow-creator
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 and supports custom themes via utility-slideshow-themer.
git clone https://github.com/product-on-purpose/pm-skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/product-on-purpose/pm-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/utility-slideshow-creator" ~/.claude/skills/product-on-purpose-pm-skills-utility-slideshow-creator && rm -rf "$T"
skills/utility-slideshow-creator/SKILL.mdSlideshow 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
to produce .pptx. Optionally runnode scripts/generate-deck.js deck-spec.json
for PDF. Deterministic rendering, zero token cost.node scripts/export-pdf.mjs deck-spec.json
Both outputs come from the same JSON spec, so .pptx and .pdf always match.
18 Slide Types
| # | Type Key | Purpose | Default Variant |
|---|---|---|---|
| 1 | | Opening slide (bold) | dark only |
| 2 | | Opening slide (internal/lighter) | light only |
| 3 | | Section divider | dark |
| 4 | | Paragraph explanation | light |
| 5 | | 3-6 key points | light |
| 6 | | Side-by-side comparison | light |
| 7 | | Single key metric | light |
| 8 | | Two metrics compared | dark |
| 9 | | Testimonial or pull quote | dark |
| 10 | | Three parallel concepts | dark |
| 11 | | Four concepts in 2x2 grid | dark |
| 12 | | Dates or milestones (max 6) | light |
| 13 | | Sequential workflow (max 5) | light |
| 14 | | Meeting agenda (max 7) | light |
| 15 | | Key finding or executive summary | light |
| 16 | | Tabular data | light |
| 17 | | Feature list with markers (max 4) | light |
| 18 | | 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) | |
| Opening the deck (internal) | |
| Transitioning between topics | |
| Paragraph explanation | |
| List of 3-6 points | |
| Side-by-side comparison | |
| Single key metric | |
| Two metrics compared | |
| Testimonial or pull quote | |
| Three parallel concepts | |
| Four concepts in a grid | |
| Dates or milestones | |
| Sequential workflow | |
| Meeting agenda | |
| Key finding or summary | |
| Tabular data | |
| Feature list with markers | |
| Ending the deck | |
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
- Every slide has a valid type key (one of the 18 defined types)
- All content slots respect character limits from
references/slide-types.md - Dark/light variants alternate for visual rhythm (no 3+ consecutive same-variant slides)
- Deck has a title slide (first) and a closing slide (last)
- Section dividers separate distinct topics in decks > 6 slides
- Speaker notes included for key slides (stats, highlights, transitions)
- JSON is valid (no trailing commas, proper quoting, correct nesting)
- Color values are valid theme tokens or 6-character hex strings (no
prefix)#
References
| File | Purpose |
|---|---|
| JSON deck specification template with field documentation |
| Worked example: Q3 Product Update deck (9 slides) |
| All 18 slide types: content slots, character limits, variants |
| Content pattern → slide type mapping, variant strategy, deck sizing |
| pptxgenjs requirements, Google Slides compatibility, output format |