pptx

Create, edit, and validate PowerPoint .pptx and .potx presentation files.

1|Updated Aug 11, 2026
One-click install
npx skills add https://github.com/Chia1104/agent-air --skill pptx-chia1104
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: pptx
Source: https://github.com/Chia1104/agent-air/tree/main/skills/claude/synced/b066812a-c7a5-4354-b574-f3c218098a45_0fdbac1f-d2db-4307-8341-b45c4d0d68f9/pptx
Command: npx skills add https://github.com/Chia1104/agent-air --skill pptx-chia1104

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: .pptx files are ZIP archives of XML with strict schema, relationship, and content-type rules, and common libraries like pptxgenjs silently produce files PowerPoint refuses to open. This Skill provides the workflows, scripts, and QA checks needed to reliably create decks from scratch, edit existing presentations and templates, and extract slide content. ## Core Features & Use Cases - Deck Creation with pptxgenjs: Generate new presentations with correct layouts, colors, charts, icons, and speaker notes while avoiding known file-corruption pitfalls. - Template-Based Editing: Unpack .pptx/.potx files, duplicate slides with full package bookkeeping via add_slide.py, edit slide XML directly, and clean orphaned parts with clean.py. - Content Extraction and Visual QA: Dump slide text with markitdown, render labeled thumbnail grids with thumbnail.py, and validate output against OOXML schemas with validate.py. - Use Case: A user asks for a pitch deck based on a company template. The Skill thumbnails the template to pick layouts, duplicates and fills template slides, validates the result against the original, and renders slide images for visual inspection before delivery. ## Quick Start Create a five-slide PowerPoint presentation about our quarterly results using the pptx skill, then validate and visually check the output.

Frequently Asked Questions about pptx

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

FAQPage Schema
How do I create a PowerPoint file programmatically with pptxgenjs?▼

Write a Node script that requires pptxgenjs, set pres.layout before adding slides, and call writeFile. Use hex colors without '#', add isTextBox: true to every addText call, and run validate.py afterward to catch chart and slide XML defects PowerPoint rejects.

How to edit an existing .pptx template in Python?▼

Unzip the .pptx into a directory, duplicate slides with add_slide.py (which handles content types, relationships, and sldIdLst registration), edit ppt/slides/slideN.xml directly, run clean.py after deletions, then rezip from inside the directory and validate with --original.

Why does PowerPoint say my pptxgenjs file is corrupt?▼

Common 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 a slide or preserve formatting?▼

python-pptx cannot duplicate slides (only add_slide(layout)), and assigning text_frame.text collapses paragraphs into a single unstyled run. Use the add_slide.py script for duplication and assign run.text to preserve formatting.

How do I convert a legacy .ppt file to .pptx?▼

Run the LibreOffice wrapper: python scripts/office/soffice.py --headless --convert-to pptx file.ppt. The wrapper configures a temporary user profile and socket shim so soffice works in sandboxed environments where bare soffice hangs.

How do I check a generated deck for visual problems?▼

Convert the .pptx to PDF with soffice.py, then run pdftoppm to produce per-slide JPEGs and inspect each image for text overflow, overlaps, low contrast, and misalignment. Also run markitdown to catch missing content or leftover placeholder text.