powerpoint

Create, read, and edit PowerPoint .pptx decks using pptxgenjs and direct OOXML manipulation.

16|Updated Sep 22, 2026
One-click install
npx skills add https://github.com/igniteenow/robo --skill powerpoint-igniteenow
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: powerpoint
Source: https://github.com/igniteenow/robo/tree/main/skills/productivity/powerpoint
Command: npx skills add https://github.com/igniteenow/robo --skill powerpoint-igniteenow

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires pptxgenjs, markitdown, Pillow, defusedxml, lxml, react-icons, react, react-dom, sharp, and includes scripts (resource) components.

What problem does it solve? Working with PowerPoint files programmatically is error-prone: a .pptx is a ZIP archive of XML parts with strict schema, relationship, and content-type rules, and small mistakes (bad hex colors, undeclared chart axes, orphaned slides) produce files PowerPoint refuses to open. This Skill provides the scripts, validation tooling, and hard-won gotchas to generate, edit, and QA decks that actually open and look designed. ## Core Features & Use Cases - From-scratch deck generation: Write pptxgenjs scripts with correct layout, color, chart, icon, and speaker-note handling, avoiding the library's known file-corrupting footguns. - Template-based editing: Unpack existing .pptx/.potx files, duplicate or add slides with full package bookkeeping via add_slide.py, edit slide XML directly, and clean orphaned parts with clean.py. - Validation and visual QA: Run schema, relationship, and chart checks with validate.py (baselined against the original template), then render slides to images via LibreOffice and pdftoppm for visual inspection. - Use Case: A user asks for a 10-slide pitch deck from a corporate template. The Skill thumbnails the template to pick layouts, maps content onto slides, edits the XML, validates the output against the template, and renders every slide to catch text overflow before delivery. ## Quick Start Ask the agent to create a PowerPoint presentation on your topic, or to edit and restyle an existing .pptx file you provide.

Frequently Asked Questions about powerpoint

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I create a PowerPoint presentation programmatically?▼

Write a Node script using pptxgenjs: set pres.layout before adding slides, use hex colors without '#', add speaker notes via slide.addNotes(), and keep charts native with addChart(). After writeFile(), validate the output with the included validate.py script to catch chart and slide XML defects PowerPoint rejects.

How to edit an existing pptx file or template?▼

Unzip the .pptx (it is a ZIP of XML), use add_slide.py to duplicate slides with full package registration, edit ppt/slides/slideN.xml content, run clean.py to remove orphaned parts, then rezip from inside the directory. Validate with validate.py --original against the source template.

Why does PowerPoint say my generated pptx file is corrupt?▼

Common pptxgenjs causes include hex colors with '#' or 8 digits, negative shadow offsets, dataLabelPosition 'outEnd' on stacked charts, and combo charts missing valAxes/catAxes entries. The validate.py script detects these faults and names the fix for each.

Can python-pptx duplicate slides or preserve formatting?▼

python-pptx cannot duplicate slides (only add_slide(layout)), collapses formatting when assigning text_frame.text, and cannot read SVG/EMF template art. Use the add_slide.py script for duplication and assign run.text instead to preserve run styling.

How do I extract text from a pptx file?▼

Run markitdown on the .pptx file; it outputs one text block per slide under <!-- Slide number: N --> markers. For a visual overview of layouts, use thumbnail.py to generate a labeled grid image of every slide.

Does this work with legacy .ppt or .potx template files?▼

Legacy .ppt files must first be converted to .pptx using the soffice.py LibreOffice wrapper. .potx templates unpack and repack identically to .pptx; keep the .potx extension on the output file.