Skill
Community

creating-presentations

Install
1
Install the plugin
$
npx claudepluginhub jawhnycooke/claude-plugins --plugin ms-office-suite

Want just this skill?

Then install: npx claudepluginhub u/[userId]/[slug]

Description

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.

Tool Access

This skill uses the workspace's default tool permissions.

Supporting Assets
View in Repository
references/html2pptx.md
references/ooxml.md
Skill Content

PowerPoint (.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

TaskApproachReference
Read/analyze slidesMarkdown conversion or raw XMLThis file
Create from HTMLhtml2pptx libraryhtml2pptx.md
Create from templatePython scriptsThis file
Edit existing PPTXUnpack/modify/repackooxml.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)

  1. Create HTML slides with proper dimensions
  2. Convert using html2pptx library
  3. 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:

StyleBackgroundPrimarySecondaryAccent
CorporateFFFFFF2C3E5034495E3498DB
CreativeF5F5F5E74C3CF39C129B59B6
Tech1A1A2E16213E0F3460E94560
NatureF0F4F027AE602ECC7116A085
ElegantFAF9F5141413B0AEA5D97757

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

  1. Unpack: python ooxml/scripts/unpack.py input.pptx unpacked/
  2. Modify: Edit XML files directly
  3. Validate: python ooxml/scripts/validate.py unpacked/
  4. 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

  1. Always validate output immediately after creation
  2. Use web-safe fonts to ensure cross-platform compatibility
  3. Check overflow - text that doesn't fit won't render
  4. Batch similar operations for efficiency
  5. Keep unused resources out of final file (fonts, media)
  6. Test on target platform - PowerPoint vs Keynote vs Google Slides
Stats
Stars4
Forks0
Last CommitFeb 17, 2026

Similar Skills