
Powerpoint
- 1 installs
- Updated February 13, 2026
- dunni3/claude-powerpoint-plugin
Create and edit PowerPoint presentations with python-pptx, adding slides, text boxes, mixed-run formatting, images, and shapes with helper functions.
About
Generates and edits .pptx presentations using python-pptx with patterns for layouts, text, images, and shapes plus helper functions. A developer uses it when asked to create or modify slides programmatically.
- Patterns for layouts, runs, images, and rounded shapes
- Reusable add_textbox and add_rounded_rect helpers
Powerpoint by the numbers
- 1 all-time installs (skills.sh)
- Ranked #565 of 688 Office & Documents skills by installs in the Skillselion catalog
- Data as of Jul 8, 2026 (Skillselion catalog sync)
npx skills add https://github.com/dunni3/claude-powerpoint-plugin --skill powerpointAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1 |
|---|---|
| Last updated | February 13, 2026 |
| Repository | dunni3/claude-powerpoint-plugin ↗ |
What it does
Create and edit PowerPoint presentations with python-pptx, adding slides, text boxes, mixed-run formatting, images, and shapes with helper functions.
Files
PowerPoint Creation Skill
This skill enables creating and editing PowerPoint presentations using Python.
Setup
Ensure python-pptx is installed:
pip install python-pptxUsage Patterns
Creating a new presentation
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor # Note: RGBColor, not RgbColor
from pptx.enum.text import PP_ALIGN
from pptx.enum.shapes import MSO_SHAPE
prs = Presentation()
# Add a title slide
slide_layout = prs.slide_layouts[6] # blank layout
slide = prs.slides.add_slide(slide_layout)
# Add shapes, text boxes, images as needed
# ...
prs.save('output.pptx')Common slide layouts
0: Title slide1: Title and content5: Title only6: Blank
Adding a text box
from pptx.util import Inches, Pt
left = Inches(1)
top = Inches(1)
width = Inches(8)
height = Inches(1)
textbox = slide.shapes.add_textbox(left, top, width, height)
frame = textbox.text_frame
frame.word_wrap = True
p = frame.paragraphs[0]
p.text = "Your text here"
p.font.size = Pt(24)
p.font.bold = True
p.alignment = PP_ALIGN.CENTERMixed formatting in text (multiple colors/styles)
To have different formatting within the same line, use runs:
p = frame.paragraphs[0]
p.alignment = PP_ALIGN.CENTER
run = p.add_run()
run.text = "P("
run.font.size = Pt(14)
run.font.color.rgb = RGBColor(0x4b, 0x55, 0x63)
run = p.add_run()
run.text = "next word"
run.font.size = Pt(14)
run.font.bold = True
run.font.color.rgb = RGBColor(0x1d, 0x4e, 0xd8) # blue
run = p.add_run()
run.text = " | previous)"
run.font.size = Pt(14)
run.font.color.rgb = RGBColor(0x4b, 0x55, 0x63)Adding an image
slide.shapes.add_picture('image.png', Inches(1), Inches(2), width=Inches(4))Adding shapes
from pptx.enum.shapes import MSO_SHAPE
shape = slide.shapes.add_shape(
MSO_SHAPE.RECTANGLE,
Inches(1), Inches(1), # position
Inches(2), Inches(1) # size
)
shape.fill.solid()
shape.fill.fore_color.rgb = RGBColor(0x1a, 0x73, 0xe8)
shape.line.fill.background() # no border
# For rounded rectangles, adjust corner radius (0 = sharp, higher = rounder)
shape = slide.shapes.add_shape(MSO_SHAPE.ROUNDED_RECTANGLE, Inches(1), Inches(1), Inches(2), Inches(1))
shape.adjustments[0] = 0.1 # small radiusSetting slide dimensions
from pptx.util import Inches
prs.slide_width = Inches(13.333) # widescreen 16:9
prs.slide_height = Inches(7.5)Useful Helper Functions
def add_textbox(slide, left, top, width, height, text, font_size=12, bold=False,
italic=False, color=RGBColor(0x11, 0x18, 0x27), align=PP_ALIGN.LEFT,
font_name="Arial"):
"""Helper to add a text box with common settings"""
txbox = slide.shapes.add_textbox(Inches(left), Inches(top), Inches(width), Inches(height))
tf = txbox.text_frame
tf.word_wrap = True
p = tf.paragraphs[0]
p.text = text
p.font.size = Pt(font_size)
p.font.bold = bold
p.font.italic = italic
p.font.color.rgb = color
p.font.name = font_name
p.alignment = align
return txbox
def add_rounded_rect(slide, left, top, width, height, fill_color, border_color=None):
"""Helper to add a rounded rectangle"""
shape = slide.shapes.add_shape(
MSO_SHAPE.ROUNDED_RECTANGLE,
Inches(left), Inches(top), Inches(width), Inches(height)
)
shape.fill.solid()
shape.fill.fore_color.rgb = fill_color
if border_color:
shape.line.color.rgb = border_color
else:
shape.line.fill.background()
shape.adjustments[0] = 0.1
return shape
def subscript(n):
"""Convert number to subscript unicode characters"""
subs = str.maketrans("0123456789", "₀₁₂₃₄₅₆₇₈₉")
return str(n).translate(subs)Limitations
- Animations and transitions are not supported
- SmartArt cannot be created (only basic shapes)
- Charts require careful construction
- Some advanced formatting may not transfer perfectly
- Dashed/dotted borders are not easily supported - use solid borders instead
- Grids require creating individual shapes (no CSS grid equivalent)
Tips
- Use
Inches()andPt()for all measurements - Blank layout (6) gives most control
- Build complex graphics from basic shapes
- For precise positioning, sketch coordinates first
- Unicode math symbols work well - use subscripts (₀₁₂₃₄₅₆₇₈₉) and superscripts (ᴴᵂᴺ) instead of PowerPoint's native formatting for inline math
- For mixed formatting in a single text box, use multiple runs (see example above)
shape.adjustments[0]controls rounded rectangle corner radius