| name | pptx |
| description | Create, edit, analyze, and work with PowerPoint presentations (.pptx files). Use when user mentions deck, slides, presentation, .pptx, PowerPoint, or wants to create visual slides, edit a presentation, extract content from slides, or convert a presentation to another format. |
PPTX Skill
Handle all PowerPoint presentation work — creation, editing, analysis, and content extraction.
Dependencies
pip install markitdown python-pptx pillow
npm install pptxgenjs
Core Workflows
Reading Content
markitdown input.pptx
python scripts/thumbnail.py input.pptx
Creating from Scratch (pptxgenjs)
const pptx = require("pptxgenjs");
const prs = new pptx();
prs.theme = { headFontFace: "Calibri", bodyFontFace: "Calibri" };
let slide = prs.addSlide();
slide.addText("Title Text", {
x: 0.5, y: 0.5, w: "90%", h: 1.5,
fontSize: 40, bold: true, color: "363636",
fontFace: "Playfair Display"
});
slide.addText("• Point 1\n• Point 2\n• Point 3", {
x: 0.5, y: 2.5, w: "90%", h: 3,
fontSize: 18, color: "666666"
});
slide.addShape(pptx.shapes.RECTANGLE, {
x: 0, y: 0, w: "100%", h: 0.1,
fill: { color: "D97757" }
});
await prs.writeFile({ fileName: "output.pptx" });
Editing Existing Presentations
- Unpack the file
- Modify slide XML
- Repack
cp input.pptx input.zip
unzip input.zip -d input_unpacked/
cd input_unpacked && zip -r ../output.pptx .
Design Principles
Color Strategy
- One color should dominate (60-70% visual weight)
- 1-2 supporting tones
- One sharp accent
- Maintain consistency across all slides
Visual Consistency
- Pick ONE distinctive element and repeat it across every slide
- Could be: accent line style, shape, icon treatment, color block
Layout Variety
- Don't repeat the same layout consecutively
- Alternate between: title + bullets, two-column, full-image, quote/callout, data/chart
Typography Sizing
- Titles: 36-44pt
- Body text: 14-16pt minimum
- Captions: 12pt
CRITICAL WARNING
NEVER use accent lines under titles — these are a hallmark of AI-generated slides that looks generic and unprofessional.
Python Editing (python-pptx)
from pptx import Presentation
from pptx.util import Inches, Pt, Emu
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN
prs = Presentation("input.pptx")
slide = prs.slides[0]
for shape in slide.shapes:
if shape.has_text_frame:
if shape.name == "Title 1":
shape.text = "New Title"
slide_layout = prs.slide_layouts[1]
new_slide = prs.slides.add_slide(slide_layout)
prs.save("output.pptx")
Conversion
libreoffice --headless --convert-to pdf input.pptx
libreoffice --headless --convert-to png input.pptx
QA Process (Mandatory)
After creating or editing, check for:
Use subagents for visual inspection rather than self-review, then verify fixes before completion.