Slide generate
AI Skills that create PowerPoint from your templates. Preserves brand design, fonts, colors, layouts. For Claude Code & Copilot.
npx -y skills add anyideaz/pptx-skills --skill slide-generateAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Generate a complete PowerPoint presentation from an analyzed template, matching the template's style and layout patterns.
SKILL.md
7.3 KB, as published. Nobody here has run it
Skill: slide-generate
Generate a complete PowerPoint presentation from an analyzed template. The presentation will match the template's fonts, colors, layout patterns, and visual style.
Prerequisite: The template must be analyzed first using the slide-analyze skill.
Workflow
Step 1 — Accept Input
Gather from the user (ask if not provided):
- Topic: What the presentation is about
- Template name: Which analyzed template to use (list available templates in
slide-workspace/templates/if unsure) - Slide count (optional): Desired number of slides (default: 8-10)
Step 2 — Verify Template Workspace
Check that the template workspace exists:
slide-workspace/templates/{template-name}/
guideline.md ← required
sample_code.js ← required
images/ ← may be empty
If missing, inform the user to run slide-analyze on the template first.
Step 3 — Derive Presentation Name
Derive a filesystem-safe presentation name from the topic with a timestamp suffix:
- Replace spaces and special characters with hyphens
- Convert to lowercase
- Append a timestamp in
YYYYMMDD-HHmmssformat (use the current date/time) - Example:
"Q4 Sales Review 2024"→q4-sales-review-2024-20260407-143022
The timestamp ensures each run produces a unique folder so outputs are never overwritten.
Step 4 — Create Presentation Workspace
Create the presentation workspace directory:
slide-workspace/presentations/{presentation-name}/
Step 5 — Read Template Context
Read from the template workspace:
guideline.md— design guidelinessample_code.js— primary reference: contains master definitions, layout patterns, background colors, image usage, and positioning examples- List all files in
images/directory to get available image filenames
Step 6 — Generate Outline
Read prompt rules from shared/prompts/outline-rules.md.
Using the outline rules as system instructions and the template guideline + user's topic as context, generate a presentation outline:
- Numbered list of slide titles with bullet point content
- Match slide types from the template's Layout Patterns
- Include title/cover slide and thank-you/closing slide
- Keep to the requested slide count
- Each slide includes a Data section listing every chart, table, image, stat, or text element required on that slide (see outline-rules.md for exact format)
Save the outline to:
slide-workspace/presentations/{presentation-name}/outline.md
Step 7 — Extract Preamble from sample_code.js
Extract the preamble directly from sample_code.js — no LLM generation needed.
The preamble consists of everything in sample_code.js before the first slide block, which includes:
const pptx = new PptxGenJS();pptx.defineLayout(...)(if present)- All
pptx.defineSlideMaster(...)calls - Any top-level helper functions (e.g.
function addLayout0Images(slide) {...})
A "slide block" begins when the first pptx.addSlide call appears. Stop extraction at that point.
Do NOT include any addSlide calls or pptx.writeFile(...).
Save the extracted section to:
slide-workspace/presentations/{presentation-name}/preamble.js
Step 8 — Generate Per-Slide Code
Parse the outline into individual slides (each numbered item is a slide).
Read prompt rules from shared/prompts/slide-code-rules.md.
For each slide in the outline:
- Use slide-code-rules.md as system instructions
- Provide: slide title + content, preamble.js for reference, guideline.md, sample_code.js (as style/pattern reference), available image filenames
- Generate code for ONE slide:
let slide = pptx.addSlide('MASTER_X')+ content - Each slide starts with
// Slide N: <title> - Derive master name, background color, layout images, and positioning from
sample_code.jspatterns — do NOT use context.json
Collect all per-slide code blocks.
Step 9 — Combine into Final Script
Combine the code using this structure:
// Preamble
{preamble code}
// Hoisted helper functions (any `function name() {}` extracted from slide blocks)
{hoisted functions}
// Per-slide code (each wrapped in IIFE to prevent variable conflicts)
(function() {
// Slide 1: ...
})();
(function() {
// Slide 2: ...
})();
// ... more slides ...
pptx.writeFile({ fileName: 'output.pptx' });
Important — function hoisting: If any slide code defines top-level named functions (e.g., function addLayout0Images(slide) {...}), extract them from the slide block and place them before the IIFEs so they are accessible across all slides.
Save to:
slide-workspace/presentations/{presentation-name}/code.js
Step 10 — Check Dependencies
Check that pptxgenjs is available:
node -e "require('pptxgenjs')" 2>/dev/null
If it fails, run the setup script:
- Unix/macOS:
bash shared/scripts/setup_deps.sh - Windows:
powershell -ExecutionPolicy Bypass -File shared/scripts/setup_deps.ps1
Step 11 — Run PPTXGenJS
Execute the code:
node shared/scripts/run_pptxgenjs.js \
"slide-workspace/presentations/{presentation-name}/code.js" \
"slide-workspace/templates/{template-name}/images" \
"slide-workspace/presentations/{presentation-name}/output.pptx"
Step 12 — Report Result
Report to the user:
- Output file:
slide-workspace/presentations/{presentation-name}/output.pptx - Slide count generated
- Template used
- Any warnings from the runner
Output Structure
slide-workspace/
presentations/
{presentation-name}/
outline.md ← Presentation outline
preamble.js ← PptxGenJS init + slide master definitions
code.js ← Complete combined script
output.pptx ← Generated presentation file
Error Handling
- Template not found: Prompt user to run
slide-analyzefirst - Runner exits with code 3: JavaScript execution error — check code.js for syntax issues
- Runner exits with code 4: Script ran but no .pptx produced — check that
pptx.writeFile()is called - Output too large: Reduce slide count or simplify content
Notes
- The
imagesvariable is pre-injected by run_pptxgenjs.js as{ filename: absolutePath }— never re-declare it in code.js context.jsonis NOT used during generation — all style/layout information is derived fromsample_code.jsandguideline.md- The preamble is extracted verbatim from
sample_code.js(not LLM-generated) - Each slide MUST set
slide.backgroundmatching the pattern insample_code.js - Layout helper functions (e.g.,
addLayout0Images) already defined in the preamble must be called as the FIRST statement on every slide - Multiple slide masters must never be collapsed into one
- Helper functions must be hoisted to top level, outside IIFEs