npx claudepluginhub jawhnycooke/claude-plugins --plugin ms-office-suiteWant just this skill?
Then install: npx claudepluginhub u/[userId]/[slug]
Creates, edits, and analyzes PowerPoint presentations (.pptx files), including slide design, chart and table insertion, HTML-to-PPTX conversion, and template-based generation. Activates when the user works with .pptx files or requests presentation authoring.
This skill uses the workspace's default tool permissions.
references/html2pptx.mdreferences/ooxml.mdPowerPoint (.pptx) Guide
This guide covers creating, editing, and analyzing PowerPoint presentations. For HTML-to-PPTX conversion, see html2pptx.md. For OOXML technical details, see ooxml.md.
Workflows Overview
| Task | Approach | Reference |
|---|---|---|
| Read/analyze slides | Markdown conversion or raw XML | This file |
| Create from HTML | html2pptx library | html2pptx.md |
| Create from template | Python scripts | This file |
| Edit existing PPTX | Unpack/modify/repack | ooxml.md |
Important: .pptx files are ZIP archives containing XML and resources.
Reading & Analysis
Convert to Markdown
# Using markitdown
markitdown presentation.pptx > slides.md
Access Raw XML
# Unpack
python ooxml/scripts/unpack.py presentation.pptx unpacked/
# View slide content
cat unpacked/ppt/slides/slide1.xml
# View speaker notes
cat unpacked/ppt/notesSlides/notesSlide1.xml
Create Thumbnail Grid
python scripts/thumbnail.py presentation.pptx thumbnails/
Creates a visual grid showing all slides for quick analysis.
Creating New Presentations
Using html2pptx (Recommended)
- Create HTML slides with proper dimensions
- Convert using html2pptx library
- Add charts/data programmatically
See html2pptx.md for complete guide.
Using Template
# 1. Analyze template
python scripts/inventory.py template.pptx > inventory.json
# 2. Create replacements JSON
# Map placeholder text to new content
# 3. Apply replacements
python scripts/replace.py template.pptx replacements.json output.pptx
Design Principles
Required
- State design approach before writing code
- Use web-safe fonts only: Arial, Helvetica, Times New Roman, Georgia, Courier New, Verdana, Tahoma, Trebuchet MS
- Ensure text contrast ratio ≥ 4.5:1 for readability
- Validate output immediately after creation
Recommended
- Content-informed design (colors/style match topic)
- Consistent visual hierarchy across slides
- Maximum 6 bullet points per slide
- Meaningful use of whitespace
Example Color Palettes
Choose palette based on content:
| Style | Background | Primary | Secondary | Accent |
|---|---|---|---|---|
| Corporate | FFFFFF | 2C3E50 | 34495E | 3498DB |
| Creative | F5F5F5 | E74C3C | F39C12 | 9B59B6 |
| Tech | 1A1A2E | 16213E | 0F3460 | E94560 |
| Nature | F0F4F0 | 27AE60 | 2ECC71 | 16A085 |
| Elegant | FAF9F5 | 141413 | B0AEA5 | D97757 |
Supporting Scripts
thumbnail.py
Creates thumbnail grids for visual analysis.
python scripts/thumbnail.py input.pptx output_dir/ [--columns 5]
inventory.py
Extracts all text shapes with properties.
python scripts/inventory.py input.pptx > inventory.json
Output includes:
- Slide number and shape ID
- Text content and formatting
- Position (x, y) and dimensions
- Overflow detection
replace.py
Applies text replacements from JSON.
python scripts/replace.py input.pptx replacements.json output.pptx
Replacements format:
{
"slide_1": {
"shape_2": "New title text",
"shape_5": "Updated bullet points"
}
}
rearrange.py
Duplicates, reorders, or deletes slides.
python scripts/rearrange.py input.pptx operations.json output.pptx
Operations format (0-indexed):
{
"operations": [
{"action": "duplicate", "source": 0, "count": 2},
{"action": "delete", "index": 5},
{"action": "move", "from": 3, "to": 1}
]
}
validate.py
Validates PPTX structure and content.
python ooxml/scripts/validate.py output.pptx
Checks:
- XML well-formedness
- Required files present
- Relationship integrity
- Content overflow
Editing Existing Presentations
Workflow
- Unpack:
python ooxml/scripts/unpack.py input.pptx unpacked/ - Modify: Edit XML files directly
- Validate:
python ooxml/scripts/validate.py unpacked/ - Repack:
python ooxml/scripts/pack.py unpacked/ output.pptx
Common Modifications
- Text changes: Edit
<a:t>elements in slide XML - Add images: Add to
ppt/media/, update relationships - Reorder slides: Modify
presentation.xml<p:sldIdLst>
See ooxml.md for detailed XML patterns.
Dependencies
# Python
pip install markitdown python-pptx Pillow defusedxml
# JavaScript (for html2pptx)
npm install pptxgenjs playwright sharp
# System tools (for thumbnails)
brew install libreoffice poppler # macOS
apt-get install libreoffice poppler-utils # Ubuntu
Best Practices
- Always validate output immediately after creation
- Use web-safe fonts to ensure cross-platform compatibility
- Check overflow - text that doesn't fit won't render
- Batch similar operations for efficiency
- Keep unused resources out of final file (fonts, media)
- Test on target platform - PowerPoint vs Keynote vs Google Slides
Similar Skills
You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.