PPTX Generation Skill
Domain: Presentation Generation
Purpose: Programmatic PowerPoint creation via PptxGenJS
Expertise: Data-driven slides, Markdown conversion, Alex brand templates
Staleness Watch: See EXTERNAL-API-REGISTRY.md for source URLs and recheck cadence
Capabilities
| Capability |
Description |
| Markdown → PPTX |
Convert .md files to branded presentations |
| Data-Driven Slides |
Generate charts/tables from JSON data |
| Template System |
Alex brand Slide Masters (title, content, section, chart) |
| Multi-Format Export |
File output or base64 for web delivery |
Activation Triggers
- "create presentation", "generate slides", "make pptx"
- "convert markdown to powerpoint", "md to pptx"
- "data visualization slides", "chart presentation"
- "alex branded deck", "presentation template"
Slide Types
| Type |
Use Case |
Data Shape |
title |
Opening slide with main title + subtitle |
{ title, subtitle?, notes? } |
content |
Bullet list slide |
{ title, bullets[], notes? } |
section |
Section divider |
{ title, subtitle? } |
chart |
Data visualization |
{ chartType, series[], title? } |
table |
Tabular data |
{ headers[], rows[][] } |
image |
Image slide |
{ path|base64, caption? } |
twoColumn |
Side-by-side content |
{ left: {title, bullets}, right: {title, bullets} } |
Chart Types
bar — Category comparison
line — Trend over time
pie — Part-of-whole (use ≤6 segments)
doughnut — Pie variant with center hole
area — Volume over time
scatter — Correlation analysis
Alex Brand Colors
| Name |
Fill |
Text |
Border |
| Blue |
ddf4ff |
0550ae |
80ccff |
| Green |
d3f5db |
1a7f37 |
6fdd8b |
| Purple |
d8b9ff |
6639ba |
bf8aff |
| Gold |
fff8c5 |
9a6700 |
d4a72c |
| Gray |
eaeef2 |
24292f |
afb8c1 |
Example: Markdown Input
# Quarterly Review
## Executive Summary
---
# Q4 2024 Results
## Performance Overview
- Revenue up 23% YoY
- Customer acquisition: 1,200 new accounts
- NPS improved from 45 to 62
> Speaker notes: Highlight the NPS improvement as key win
---
## Next Quarter [section]
Focus areas for Q1 2025
---
# Strategic Priorities
- Expand enterprise segment
- Launch self-serve tier
- Hire 15 engineers
Example: Programmatic API
import { generateAndSavePresentation, SlideContent } from './pptxGenerator';
const slides: SlideContent[] = [
{ type: 'title', title: 'Q4 Review', subtitle: 'Performance & Strategy' },
{ type: 'content', title: 'Highlights', bullets: ['Revenue +23%', 'NPS 62'] },
{ type: 'chart', title: 'Revenue Trend', data: {
chartType: 'line',
series: [{ name: 'Revenue', labels: ['Q1','Q2','Q3','Q4'], values: [100,120,115,146] }]
}}
];
await generateAndSavePresentation(slides, { title: 'Q4 Review' }, 'review.pptx');
CLI Usage
# From markdown (planned)
# node .github/muscles/pptxgen-cli.cjs --input slides.md --output deck.pptx
# Quick content (planned)
# node .github/muscles/pptxgen-cli.cjs --content "Welcome to Alex|Point 1|Point 2" --output quick.pptx
Integration Points
| Integration |
Description |
| Chat command |
/pptx <topic> to generate slides from topic |
| Memory export |
Convert episodic memories to slides |
| Skill output |
Any skill can request PPTX output |
| Data connectors |
Azure SQL / Power BI → charts |
Constraints
- Offline-only (no cloud dependencies)
- 16:9 default layout (4:3, 16:10 available)
- Max recommended: 50 slides per deck
- Images: local path, URL, or base64
1---2name: pptx-generation3description: Programmatic PowerPoint creation via PptxGenJS with data-driven slides and Markdown conversion4---56# PPTX Generation Skill78**Domain**: Presentation Generation 9**Purpose**: Programmatic PowerPoint creation via PptxGenJS 10**Expertise**: Data-driven slides, Markdown conversion, Alex brand templates 1112> **Staleness Watch**: See [EXTERNAL-API-REGISTRY.md](../../EXTERNAL-API-REGISTRY.md) for source URLs and recheck cadence1314---1516## Capabilities1718| Capability | Description |19|------------|-------------|20| **Markdown → PPTX** | Convert `.md` files to branded presentations |21| **Data-Driven Slides** | Generate charts/tables from JSON data |22| **Template System** | Alex brand Slide Masters (title, content, section, chart) |23| **Multi-Format Export** | File output or base64 for web delivery |2425---2627## Activation Triggers2829- "create presentation", "generate slides", "make pptx"30- "convert markdown to powerpoint", "md to pptx"31- "data visualization slides", "chart presentation"32- "alex branded deck", "presentation template"3334---3536## Slide Types3738| Type | Use Case | Data Shape |39|------|----------|-----------|40| `title` | Opening slide with main title + subtitle | `{ title, subtitle?, notes? }` |41| `content` | Bullet list slide | `{ title, bullets[], notes? }` |42| `section` | Section divider | `{ title, subtitle? }` |43| `chart` | Data visualization | `{ chartType, series[], title? }` |44| `table` | Tabular data | `{ headers[], rows[][] }` |45| `image` | Image slide | `{ path\|base64, caption? }` |46| `twoColumn` | Side-by-side content | `{ left: {title, bullets}, right: {title, bullets} }` |4748---4950## Chart Types5152- `bar` — Category comparison53- `line` — Trend over time54- `pie` — Part-of-whole (use ≤6 segments)55- `doughnut` — Pie variant with center hole56- `area` — Volume over time57- `scatter` — Correlation analysis5859---6061## Alex Brand Colors6263| Name | Fill | Text | Border |64|------|------|------|--------|65| Blue | `ddf4ff` | `0550ae` | `80ccff` |66| Green | `d3f5db` | `1a7f37` | `6fdd8b` |67| Purple | `d8b9ff` | `6639ba` | `bf8aff` |68| Gold | `fff8c5` | `9a6700` | `d4a72c` |69| Gray | `eaeef2` | `24292f` | `afb8c1` |7071---7273## Example: Markdown Input7475```markdown76# Quarterly Review7778## Executive Summary7980---8182# Q4 2024 Results8384## Performance Overview8586- Revenue up 23% YoY87- Customer acquisition: 1,200 new accounts88- NPS improved from 45 to 628990> Speaker notes: Highlight the NPS improvement as key win9192---9394## Next Quarter [section]9596Focus areas for Q1 20259798---99100# Strategic Priorities101102- Expand enterprise segment103- Launch self-serve tier104- Hire 15 engineers105```106107---108109## Example: Programmatic API110111```typescript112import { generateAndSavePresentation, SlideContent } from './pptxGenerator';113114const slides: SlideContent[] = [115 { type: 'title', title: 'Q4 Review', subtitle: 'Performance & Strategy' },116 { type: 'content', title: 'Highlights', bullets: ['Revenue +23%', 'NPS 62'] },117 { type: 'chart', title: 'Revenue Trend', data: {118 chartType: 'line',119 series: [{ name: 'Revenue', labels: ['Q1','Q2','Q3','Q4'], values: [100,120,115,146] }]120 }}121];122123await generateAndSavePresentation(slides, { title: 'Q4 Review' }, 'review.pptx');124```125126---127128## CLI Usage129130```bash131# From markdown (planned)132# node .github/muscles/pptxgen-cli.cjs --input slides.md --output deck.pptx133134# Quick content (planned)135# node .github/muscles/pptxgen-cli.cjs --content "Welcome to Alex|Point 1|Point 2" --output quick.pptx136```137138---139140## Integration Points141142| Integration | Description |143|-------------|-------------|144| **Chat command** | `/pptx <topic>` to generate slides from topic |145| **Memory export** | Convert episodic memories to slides |146| **Skill output** | Any skill can request PPTX output |147| **Data connectors** | Azure SQL / Power BI → charts |148149---150151## Constraints152153- Offline-only (no cloud dependencies)154- 16:9 default layout (4:3, 16:10 available)155- Max recommended: 50 slides per deck156- Images: local path, URL, or base64