install
source · Clone the upstream repo
git clone https://github.com/plurigrid/asi
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/plurigrid/asi "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/pptx" ~/.claude/skills/plurigrid-asi-pptx-fdd81e && rm -rf "$T"
manifest:
skills/pptx/SKILL.mdsource content
PowerPoint Processing
Creating Presentations (Python)
from pptx import Presentation from pptx.util import Inches, Pt prs = Presentation() # Add title slide title_slide_layout = prs.slide_layouts[0] slide = prs.slides.add_slide(title_slide_layout) title = slide.shapes.title subtitle = slide.placeholders[1] title.text = "Hello, World!" subtitle.text = "python-pptx demo" # Add content slide bullet_slide_layout = prs.slide_layouts[1] slide = prs.slides.add_slide(bullet_slide_layout) shapes = slide.shapes title_shape = shapes.title body_shape = shapes.placeholders[1] title_shape.text = "Key Points" tf = body_shape.text_frame tf.text = "First bullet point" p = tf.add_paragraph() p.text = "Second bullet point" p.level = 1 prs.save('presentation.pptx')
Adding Images
from pptx.util import Inches blank_layout = prs.slide_layouts[6] slide = prs.slides.add_slide(blank_layout) left = Inches(1) top = Inches(1) width = Inches(5) slide.shapes.add_picture('image.png', left, top, width=width)
Adding Tables
rows, cols = 3, 4 left = Inches(1) top = Inches(2) width = Inches(6) height = Inches(1.5) table = slide.shapes.add_table(rows, cols, left, top, width, height).table # Set column widths table.columns[0].width = Inches(2) # Add content table.cell(0, 0).text = "Header 1" table.cell(1, 0).text = "Data 1"
Adding Charts
from pptx.chart.data import CategoryChartData from pptx.enum.chart import XL_CHART_TYPE chart_data = CategoryChartData() chart_data.categories = ['East', 'West', 'Midwest'] chart_data.add_series('Sales', (19.2, 21.4, 16.7)) x, y, cx, cy = Inches(2), Inches(2), Inches(6), Inches(4.5) slide.shapes.add_chart( XL_CHART_TYPE.COLUMN_CLUSTERED, x, y, cx, cy, chart_data )
Editing Existing Presentations
prs = Presentation('existing.pptx') # Access slides for slide in prs.slides: for shape in slide.shapes: if shape.has_text_frame: print(shape.text_frame.text) # Modify text slide = prs.slides[0] slide.shapes.title.text = "New Title" prs.save('modified.pptx')
Best Practices
- Use slide layouts for consistency
- Keep text minimal, use visuals
- Use Inches() or Pt() for sizing
- Save frequently during creation