pptx-from-layouts
SKILL.md
PPTX Presentation System
Generate consultant-ready PowerPoint presentations from markdown outlines.
Quick Start
# Generate from outline (Inner Chapter template)
python .claude/skills/pptx-from-layouts/scripts/generate.py outline.md -o deck.pptx
# Edit existing deck
python .claude/skills/pptx-from-layouts/scripts/edit.py deck.pptx --inventory
python .claude/skills/pptx-from-layouts/scripts/edit.py deck.pptx --replace '{"slide":3,"old":"2025","new":"2026"}'
# Validate quality
python .claude/skills/pptx-from-layouts/scripts/validate.py deck.pptx
# Profile custom template
python .claude/skills/pptx-from-layouts/scripts/profile.py template.pptx --generate-config
Core Workflow
Generate (outline → PPTX)
- Create outline with visual type declarations
- Run generate command
- Validate output
# Basic generation
python .claude/skills/pptx-from-layouts/scripts/generate.py outline.md -o output.pptx
# With validation
python .claude/skills/pptx-from-layouts/scripts/generate.py outline.md -o output.pptx --validate
# Custom template
python .claude/skills/pptx-from-layouts/scripts/generate.py outline.md -o output.pptx \
--config custom-config.json --template custom-template.pptx
# Parse only (no PPTX)
python .claude/skills/pptx-from-layouts/scripts/generate.py outline.md --layout-only -o layout.json
Edit (surgical changes)
Use for text-only changes to < 30% of slides.
# Extract content inventory
python .claude/skills/pptx-from-layouts/scripts/edit.py deck.pptx --inventory
# Replace text (inline JSON)
python .claude/skills/pptx-from-layouts/scripts/edit.py deck.pptx \
--replace '{"slide":3,"old":"Q1 2025","new":"Q2 2026"}'
# Replace from file
python .claude/skills/pptx-from-layouts/scripts/edit.py deck.pptx --replace changes.json -o edited.pptx
# Reorder slides (0-indexed)
python .claude/skills/pptx-from-layouts/scripts/edit.py deck.pptx --reorder "0,2,1,3,4" -o reordered.pptx
Validate
# Basic quality check
python .claude/skills/pptx-from-layouts/scripts/validate.py deck.pptx
# With layout coverage analysis
python .claude/skills/pptx-from-layouts/scripts/validate.py deck.pptx --template template.pptx
# Compare to reference
python .claude/skills/pptx-from-layouts/scripts/validate.py deck.pptx --reference expected.pptx
# Generate diff report
python .claude/skills/pptx-from-layouts/scripts/validate.py deck.pptx --diff other.pptx -o diff.md
Profile (custom templates)
# Profile and generate config
python .claude/skills/pptx-from-layouts/scripts/profile.py template.pptx --generate-config
# Specify output location
python .claude/skills/pptx-from-layouts/scripts/profile.py template.pptx \
--name my-template --output-dir ./configs/
Visual Types
Declare visual types in outlines with **Visual: type-name**.
| Type | Use When |
|---|---|
process-N-phase |
Sequential steps (N=2-5) |
comparison-N |
Side-by-side options (N=2-5) |
cards-N |
Non-sequential items (N=2-5) |
data-contrast |
Two opposing metrics |
quote-hero |
Powerful quote |
hero-statement |
Single punchy statement |
timeline-horizontal |
Date-based sequences |
table |
Genuinely tabular data |
bullets |
Default (3+ items) |
Decision order: sequence → comparison → parallel items → data contrast → quote → table → hero → bullets
Typography Markers
Inline
| Marker | Result |
|---|---|
{blue}text{/blue} |
IC brand blue |
{bold}text{/bold} |
Bold |
{italic}text{/italic} |
Italic |
{question}text?{/question} |
Blue italic |
{signpost}LABEL{/signpost} |
Section label |
Paragraph
| Marker | Result |
|---|---|
{bullet:-} |
Dash bullet (–) |
{bullet:1} |
Numbered |
{level:N} |
Indent level |
Example: Full Generation
# Project Overview
**Visual: hero-statement**
Transforming operations through digital innovation
# Our Approach
**Visual: process-4-phase**
[Column 1: Discover]
- Stakeholder interviews
- Competitive audit
[Image: research process]
[Column 2: Define]
- Workshop facilitation
- Strategic framework
[Image: workshop]
[Column 3: Design]
- Solution architecture
- Prototype development
[Image: design work]
[Column 4: Deliver]
- Implementation
- Training & handover
[Image: delivery]
python .claude/skills/pptx-from-layouts/scripts/generate.py outline.md -o project.pptx --validate
Example: Edit Workflow
# 1. Get inventory
python .claude/skills/pptx-from-layouts/scripts/edit.py project.pptx --inventory
# Shows: Slide 3, Shape 5: "Q1 2025"
# 2. Replace
python .claude/skills/pptx-from-layouts/scripts/edit.py project.pptx \
--replace '{"slide":3,"old":"Q1 2025","new":"Q2 2026"}' -o updated.pptx
# 3. Validate
python .claude/skills/pptx-from-layouts/scripts/validate.py updated.pptx
Mode Decision
| Change Type | Action |
|---|---|
| New presentation | generate.py |
| Typos/values (< 30% slides) | edit.py |
| Reorder slides | edit.py --reorder |
| Layout changes | Regenerate |
| Add/remove slides | Regenerate |
| > 30% slide changes | Regenerate |
Anti-Patterns
- DON'T use edit mode for layout changes (regenerate instead)
- DON'T skip visual type decisions (bullets are boring)
- DON'T edit > 30% of slides (regenerate instead)
- DON'T forget validation step
- DON'T use
hero-statementfor content with 3+ items - DON'T use tables for methodology/process flows
- DON'T use bullet lists for side-by-side comparisons
Files
| Path | Purpose |
|---|---|
template/inner-chapter.pptx |
Default IC template |
template/inner-chapter-config.json |
IC template config |
.claude/schemas/layout_plan.py |
Layout plan schema |
See Also
Detailed rules in rules/:
outline-format.md- Markdown outline syntaxvisual-types.md- Visual type selectiontypography.md- Text formatting markerscolumns.md- Column/card structurestables.md- Table patternsediting.md- Edit vs regeneratedecisions.md- Quick reference
Reference files in references/:
layouts.md- Inner Chapter template layout indices
Weekly Installs
4
Repository
tristan-mcinnis…ts-skillGitHub Stars
5
First Seen
Mar 3, 2026
Security Audits
Installed on
github-copilot4
codex4
kimi-cli4
gemini-cli4
cursor4
amp4