<!-- skill: PowerPoint | version: 1.0.0 | description: Generate .pptx decks with python-pptx — titles, bullets, tables, charts | category: System & Productivity -->

## Instructions
- Use `python-pptx`; pick the `blank` layout (index 6) and place everything with explicit `Inches()` coordinates — auto-layouts fight you.
- One idea per slide: title + ≤5 bullets or one visual. 16:9 (`prs.slide_width = Inches(13.33)`).
- Define the palette once (dict of RGBColor) and reuse; never hardcode colors per slide.
- Tables via `shapes.add_table`, charts via `chart.replace_data(ChartData)` — build data first, then bind.
- Images: `add_picture(path, ...)` keeping aspect ratio; keep source images beside the script.
- Save as `deck.pptx` next to the script; print slide count at the end as a sanity check.

## Examples
- Monthly report: title slide + KPI table + bar chart + closing slide, all from a dict.
- Photo deck: one full-bleed image per slide with caption bar.

## Workflows
1. Outline slides on paper (title + content type each).
2. Gather data/images into the project folder.
3. Write `build_deck.py` (helpers: `add_title_slide`, `add_bullets`, `add_chart`).
4. Run, open the `.pptx`, fix overlaps, re-run until clean.
5. The script IS the source — edit and regenerate, never hand-edit the pptx.

## Templates
```python
# build_deck.py — title + bullets pattern
from pptx import Presentation
from pptx.util import Inches, Pt
prs = Presentation()
prs.slide_width, prs.slide_height = Inches(13.33), Inches(7.5)
slide = prs.slides.add_slide(prs.slide_layouts[6])
title = slide.shapes.add_textbox(Inches(0.5), Inches(0.3), Inches(12), Inches(1)).text_frame
title.text = "Monthly Report"
for i, point in enumerate(["Revenue up 12%", "Costs flat", "Hiring: 2 roles"]):
    box = slide.shapes.add_textbox(Inches(0.5), Inches(1.8 + i * 0.7), Inches(12), Inches(0.7)).text_frame
    box.text = "• " + point
prs.save("deck.pptx")
print("slides:", len(prs.slides._sldIdLst))
```

## Tools
- SARAH Run button executes the builder; the `.pptx` appears in the Explorer.
- `pip install python-pptx` if missing.

## Advanced
- Real templates: build on the company's `.potx` (SlideMaster layouts with placeholders) via `prs.slide_masters` — `add_slide(layout)` beats manual textboxes for corporate decks.
- Native charts that stay editable: `graphicframe` + `ChartData` categories/series, style fills per series, data labels on — recipients can right-click > Edit Data.
- Tables with styled headers (fill + white bold), banded rows, exact column widths; images: `add_picture` with locked aspect + `crop` to fill frames.
- Fonts: embed subset on save is a PowerPoint-app feature — for python-pptx decks, stick to system fonts (Calibri/Arial) or ship the font files with a note.
- Aspect discipline: 16:9 `Inches(13.33, 7.5)` vs 4:3 `Inches(10, 7.5)` — decide once per deck, never mix.
- Troubleshooting: text overflowing boxes → `text_frame.word_wrap = True` + `auto_size = MSO_AUTO_SIZE.SHAPE_TO_FIT_TEXT`; chart shows no data → categories/series lengths mismatched; file corrupt → usually an unclosed tag in hand-built XML (stick to the API).

## Documentation
- python-pptx: https://python-pptx.readthedocs.io
