From ac-document-gen
Generates professional .pptx presentations using python-pptx with title/content slides, bullets, shapes, images, tables, and custom professional themes.
npx claudepluginhub alteredcraft/claude-code-plugins --plugin ac-document-genThis skill uses the workspace's default tool permissions.
Create professional PowerPoint presentations programmatically using python-pptx.
Creates PowerPoint presentations from Markdown outlines, JSON structures, topics, or data sources. Supports built-in/custom templates, charts/tables from CSV/JSON, and AI-generated images. Use for slides, pitch decks, reports.
Generate, edit, and read PowerPoint presentations: create with PptxGenJS (cover/TOC/content/summary slides), edit via XML, extract text with markitdown.
Creates and modifies PowerPoint PPTX presentations via direct XML manipulation with Node.js scripts. Supports adding/editing slides, layouts, images, shapes, POTX templates. Activates on 'presentation', 'slides', 'deck', '.pptx'.
Share bugs, ideas, or general feedback.
Create professional PowerPoint presentations programmatically using python-pptx.
This skill enables creation of .pptx files with:
All temporary files go in /tmp/claude/pptx-project/ to avoid filesystem clutter.
Before starting, ask where to save the final .pptx:
~/Desktop/presentation.pptx~/Downloads/presentation.pptxmkdir -p /tmp/claude/pptx-project && cd /tmp/claude/pptx-project
uv init && uv add python-pptx Pillow
Write or adapt a script based on user requirements. Use scripts/create_presentation.py as reference.
cd /tmp/claude/pptx-project
uv run python create_presentation.py ~/Desktop/presentation.pptx
rm -rf /tmp/claude/pptx-project
DO NOT create "pastel and bubbly" designs. Common mistakes:
DO create bold, professional designs:
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
def add_background(slide, color: RGBColor):
"""Set slide background to solid color."""
fill = slide.background.fill
fill.solid()
fill.fore_color.rgb = color
# 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()
# 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
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 |
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"
When user asks: "Create a presentation about Q4 results"
.pptxcd /tmp/claude/pptx-project && uv init && uv add python-pptxscripts/create_presentation.py - Complete template with all slide typesreferences/layouts.md - Layout indices and placeholder detailsreferences/styling.md - Extended color schemes and styling patterns.pptx templateInches() and Pt() for consistent sizingMSO_SHAPE.RECTANGLE) over text characters for bullets