Create, edit, and analyze PowerPoint (.pptx) presentations: generate decks (pitch/QBR/training), apply templates/masters, add charts/images/tables, manage speaker notes, and extract slide content...
Use this skill to create, edit, inspect, troubleshoot, or automate PowerPoint presentations programmatically.
Keep the skill focused on tool choice, template safety, notes and chart workflows, and repairability. Use the helper scripts and references instead of carrying long inline library manuals in SKILL.md.
| Need | Default Tool | When to Use |
|---|---|---|
| fresh editable deck in Python workflow | python-pptx |
generation, extraction, notes, standard charts |
| fresh editable deck in JS/TS or browser flow | PptxGenJS |
Node/browser export, HTML-heavy workflows |
| designer-owned branded template | PPTX-Automizer or template-safe library flow |
replace named template elements |
| inspect masters, layouts, placeholders, and notes | scripts/pptx_inventory.py |
before editing branded templates |
| extract or back up notes | scripts/pptx_extract_notes.py |
speaker-note export |
| inspect damaged deck or OOXML parts | scripts/pptx_ooxml_inspect.py |
repair dialogs, broken rels, missing targets |
Deciding whether to open a branded .pptx template or build from a blank Presentation() is the single highest-leverage call in this skill — get it wrong and every downstream slide inherits the mistake.
.pptx/.potx, or the request mentions "our deck," "our template," or a company name.scripts/pptx_inventory.py). A plausible-looking hex code that isn't the actual brand color is worse than asking..pptx/.potx and the job is narrow, named-element replacement (chart data, a metric, a photo) — not general content authoring. Automizer is not a general slide-generation library; it merges into an existing structure.PPTX request
|
v
Classify job
|-- fresh editable deck ------> build narrative + choose library
|-- branded template fill ----> inspect masters/layouts/placeholders first
|-- notes extraction ---------> scripts/pptx_extract_notes.py
|-- troubleshoot / repair ----> scripts/pptx_ooxml_inspect.py
|
v
Choose stack
|-- Python reporting ---------> python-pptx
|-- JS/TS export -------------> PptxGenJS
|-- named template elements --> PPTX-Automizer
|
v
Generate or edit slides
|
v
Validate
|-- one takeaway per slide
|-- chart data source + units + timeframe
|-- speaker notes
|-- accessibility and PowerPoint repair check
| Situation | Default |
|---|---|
| Python-heavy reporting or extraction | python-pptx |
| JS/TS pipeline, browser export, or HTML-heavy content | PptxGenJS |
| designer-maintained branded template with named replacements | PPTX-Automizer |
| advanced animation editing | avoid promising full preservation; inspect and test carefully |
python-pptx has no animation API (no build/entrance effects) and no slide-transition API; both require direct OOXML <p:timing>/<p:transition> manipulation — see references/pptx-animations-transitions.md before promising motion.python-pptx cannot create a true combo chart (e.g., column + line) from scratch — it has no multi-plot chart constructor. Style a single-type chart, or use PptxGenJS/manual PowerPoint editing when a real combo is required.python-pptx has no native gradient-fill API and no supported way to edit theme colors (theme1.xml) through its object model — both require direct XML manipulation with a pre-edit backup.RGBColor (from pptx.dml.color), not RgbColor — a one-letter-case mistake here silently raises ImportError at runtime.References
Scripts
Templates
Before applying this skill on a non-trivial task, read learnings.consolidated.md in this directory (and learnings.md if present).
After applying it, if you encountered a pattern worth remembering, a mistake worth preventing, or a domain fact that surprised you, append one dated bullet to learnings.md via agents-skills-feedback-loop/scripts/append_learning.py. Do not modify SKILL.md itself.