PowerPoint Creator Skill
Create professional PowerPoint presentations programmatically using python-pptx.
Overview
This skill enables creation of .pptx files with:
- Title, section, content, and closing slides
- Bullet points with custom markers
- Visual accents (bars, lines, backgrounds)
- Images, tables, and logos
- Custom color schemes and fonts
File Management
All temporary files go in /tmp/claude/pptx-project/ to avoid filesystem clutter.
Before starting, ask where to save the final .pptx:
- Desktop:
~/Desktop/presentation.pptx - Downloads:
~/Downloads/presentation.pptx - Current project directory
- A specific path they provide
Quick Start Workflow
1. Set Up Environment
mkdir -p /tmp/claude/pptx-project && cd /tmp/claude/pptx-project
uv init && uv add python-pptx Pillow
2. Create Script
Write or adapt a script based on user requirements. Use scripts/create_presentation.py as reference.
3. Generate and Deliver
cd /tmp/claude/pptx-project
uv run python create_presentation.py ~/Desktop/presentation.pptx
4. Cleanup
rm -rf /tmp/claude/pptx-project
Design Principles
Avoid Common Pitfalls
DO NOT create "pastel and bubbly" designs. Common mistakes:
- Soft, desaturated colors (cream, light teal, soft pink)
- Decorative circles and rounded shapes
- Too much visual clutter
DO create bold, professional designs:
- Strong, saturated primary colors
- Sharp rectangles and clean lines
- High contrast between text and background
- Generous whitespace
Recommended Design Elements
- Vertical accent bar on title slides (left edge)
- Solid color backgrounds for section dividers (use primary color)
- Top border line on content slides
- Square bullet markers instead of text bullets
- Dark background for closing slides (contrast with content)
Core Imports
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN
from pptx.enum.shapes import MSO_SHAPE # Required for rectangles/shapes
Essential Patterns
Setting Background Color
def add_background(slide, color: RGBColor):
"""Set slide background to solid color."""
fill = slide.background.fill
fill.solid()
fill.fore_color.rgb = color
Adding Accent Shapes
# Vertical accent bar (title slides)
bar = slide.shapes.add_shape(
MSO_SHAPE.RECTANGLE,
left=Inches(0), top=Inches(0),
width=Inches(0.35), height=Style.SLIDE_HEIGHT
)
bar.fill.solid()
bar.fill.fore_color.rgb = Style.PRIMARY
bar.line.fill.background() # Remove border
# Horizontal accent line
line = slide.shapes.add_shape(
MSO_SHAPE.RECTANGLE,
left=Inches(1), top=Inches(4.5),
width=Inches(2), height=Inches(0.04)
)
line.fill.solid()
line.fill.fore_color.rgb = Style.ACCENT
line.line.fill.background()
Square Bullet Markers
# Instead of text bullets, use colored squares
for i, bullet in enumerate(bullets):
y_pos = 1.8 + (i * 1.0)
# Square marker
marker = slide.shapes.add_shape(
MSO_SHAPE.RECTANGLE,
left=Inches(0.8), top=Inches(y_pos + 0.12),
width=Inches(0.12), height=Inches(0.12)
)
marker.fill.solid()
marker.fill.fore_color.rgb = Style.PRIMARY
marker.line.fill.background()
# Text to the right of marker
text_box = slide.shapes.add_textbox(
Inches(1.15), Inches(y_pos), Inches(11), Inches(0.8)
)
# ... style text
Slide Types
The template script supports these slide types:
| Type | Use Case | Visual Style |
|---|---|---|
title | Opening slide | White bg, vertical accent bar, horizontal line |
section | Section dividers | Solid primary bg, white text, accent line |
content | Bullet point slides | White bg, top border line, square bullets |
closing | Thank you / contact | Dark bg, centered text, accent line |
blank | Custom layouts | White bg, optional title |
Style Configuration
class Style:
# Use bold, saturated colors
PRIMARY = RGBColor(0, 82, 147) # Strong blue
SECONDARY = RGBColor(214, 102, 75) # Coral accent
ACCENT = RGBColor(218, 175, 65) # Gold highlight
# Clean backgrounds
BG_WHITE = RGBColor(255, 255, 255)
BG_DARK = RGBColor(33, 37, 41)
# Text colors
TEXT_PRIMARY = RGBColor(33, 37, 41)
TEXT_ON_DARK = RGBColor(255, 255, 255)
# Safe fonts
TITLE_FONT = "Arial"
BODY_FONT = "Arial"
Workflow Example
When user asks: "Create a presentation about Q4 results"
- Ask where to save final
.pptx - Gather content (title, sections, bullets)
- Ask about brand colors or use professional defaults
- Set up in temp:
cd /tmp/claude/pptx-project && uv init && uv add python-pptx - Write script adapting template patterns
- Generate and save to user's location
- Cleanup temp directory
Bundled Resources
Scripts
scripts/create_presentation.py- Complete template with all slide types
References
references/layouts.md- Layout indices and placeholder detailsreferences/styling.md- Extended color schemes and styling patterns
Limitations
- No animations or transitions (static slides only)
- Limited master slide customization
- Complex charts need additional work
- For heavy customization, start from a
.pptxtemplate
Tips
- Always use layout index 6 (Blank) for full positioning control
- Use
Inches()andPt()for consistent sizing - Test in PowerPoint, Google Slides, and Keynote for compatibility
- Keep slides simple: 3-5 bullets max, large readable fonts
- Prefer shapes (
MSO_SHAPE.RECTANGLE) over text characters for bullets
