# ppt-master

> A Claude Code skill that converts a PDF, DOCX, URL, or Markdown source into a natively editable .pptx — real PowerPoint shapes (DrawingML) rendered through an SVG intermediate, not exported images. Multi-role pipeline (Strategist → Image Generator → Executor) with strict serial execution.

**Use case**: Generate a .pptx where every text box and shape is editable in PowerPoint, not flattened to images

**Canonical URL**: https://agentcookbooks.com/skills/ppt-master/

**Topics**: claude-code, skills, pptx

**Trigger phrases**: "generate a deck from this PDF", "convert this doc to PPTX", "make slides from this markdown"

**Source**: [Hugo He](https://github.com/hugohe3/ppt-master/tree/main/skills/ppt-master)

**License**: MIT

---

## What it does

`ppt-master` is a Claude Code skill that turns source documents (PDF, DOCX, PPTX, URL, Markdown) into a `.pptx` file where every element is a real PowerPoint shape — clickable, editable, repositionable inside Microsoft Office. The differentiator the upstream repo states explicitly: *"if a file can't be opened and edited in PowerPoint, it shouldn't be called a PPT."* That rules out the common AI-deck pattern of rendering each slide as an image and stuffing it into a `.pptx` shell.

The skill drives a multi-role internal pipeline: **Strategist** (eight confirmations on structure, audience, narrative arc) → optional **Image Generator** (when the deck needs imagery) → **Executor** (lays out each slide as SVG) → quality check → SVG-to-PPTX post-processing → export. The SVG intermediate is the design-time canvas; the final conversion step turns each SVG primitive into a corresponding DrawingML object so the PowerPoint output is genuinely editable.

A separate `verify-charts` sub-workflow handles decks containing data charts (bar, line, pie, radar) — it calibrates chart-coordinate math against the SVG plot area before the final conversion, since chart geometry is the part that most often breaks the "real shapes" promise.

## When to use it

- A PDF whitepaper or DOCX brief that needs to become a deck the team can edit slide-by-slide
- A markdown spec that needs to become an internal presentation without a designer in the loop
- Building from a URL (e.g., a long-form blog post) where you want the resulting deck to remain editable
- Decks with data charts where you specifically need the bars and lines to be PPTX shapes, not embedded images

When *not* to reach for it:

- Image-only or "slide as visual" decks — the editable-shapes promise stops mattering
- Quick one-off internal slides where Google Slides or Keynote with a manual paste is faster than running a pipeline
- Highly templated brand decks where you already have a `.pptx` master and just need text replaced — that's a different problem
- Environments where you can't run Python 3.10+ locally or call out to an LLM for the strategist/executor roles

## Install

From [hugohe3/ppt-master](https://github.com/hugohe3/ppt-master). The skill lives at `skills/ppt-master/SKILL.md` with supporting `references/`, `scripts/`, `templates/`, and `workflows/` folders. Requires **Python 3.10+** and `pip install -r requirements.txt` from the repo root. The skill calls an LLM for the strategist and executor roles (Claude Opus or Sonnet recommended; GPT, Gemini, Kimi also supported); optional AI image generation needs separate API keys configured via `.env`.

A dedicated Windows install guide ships in the repo because the toolchain has platform-specific setup steps. Everything except the LLM call runs locally — no mandatory cloud upload of the source document.

## What a session looks like

1. **Source conversion.** Run the appropriate `scripts/source_to_md/` converter (`pdf_to_md.py`, `doc_to_md.py`, `ppt_to_md.py`, or `web_to_md.py`) against the source file or URL. The skill normalizes everything to markdown first.
2. **Project init.** `scripts/project_manager.py init <name> --format ppt169` creates a project folder with the right canvas template (16:9 the default). Import the markdown source via `import-sources`.
3. **Strategist phase.** The skill runs the strategist role through *eight confirmations* — audience, goal, structural arc, slide count, tone, visual register, density, key takeaways. Nothing executes until those confirmations are explicit.
4. **Image generation (optional).** For decks that need imagery, `scripts/image_gen.py` generates per-slide images with aspect-ratio control. `scripts/analyze_images.py` validates the output set against the deck plan.
5. **Executor phase.** Lays out each slide as an SVG file in `svg_output/`, applying layout templates and the icon library. The output of each step is the input of the next — strict serial discipline, no parallel slide rendering.
6. **Quality check.** `scripts/svg_quality_checker.py` flags malformed shapes, overflow, or missing elements before post-processing.
7. **Chart calibration (only for chart decks).** Identify chart pages with `grep -l "chart-plot-area" svg_output/*.svg`, then run `scripts/svg_position_calculator.py calc {bar|line|pie|radar}` per page with the right `--data` and `--area` arguments. Skip this entire step if the deck has no charts.
8. **Post-processing pipeline.** Run sequentially, one command at a time: `total_md_split.py` → `finalize_svg.py` → `svg_to_pptx.py -s final`. The serial discipline is enforced by the skill — non-blocking adjacent steps may chain, but blocking ones wait.
9. **Export.** A `.pptx` lands in the project folder. Open it in PowerPoint and click any element to confirm it's a real shape, not an image.

The discipline that makes it work: the strategist's eight confirmations and the strict step ordering. The skill explicitly refuses to skip ahead — outputs of one step are inputs to the next, and partial states aren't acceptable hand-offs.

## Receipts

_TODO — to be filled in from a real generation run. Once the skill has been used to generate a deck end-to-end, this section will capture: which source format was used, how many slides the strategist's eight confirmations produced versus what the executor actually shipped, whether the SVG-to-PPTX step preserved every shape as editable (open in PowerPoint, click each element, verify), and how the chart calibration sub-workflow held up if the deck contained charts._

## Source and attribution

From [Hugo He's ppt-master repository](https://github.com/hugohe3/ppt-master/tree/main/skills/ppt-master). The repo describes itself as a "workflow/skill package, not an app or service scaffold" — meaning it's intentionally shaped to drop into `~/.claude/skills/` as a single, self-contained Claude Code skill rather than a service to deploy.

License: MIT.

The wedge is the editable-shapes promise. Most AI-deck tools render each slide as a flat image and wrap it in a `.pptx` container so it opens in PowerPoint without being editable in any meaningful sense. `ppt-master`'s SVG-to-DrawingML pipeline keeps each text box, shape, and chart element as a real PPTX object — which is what makes the output usable for teams who actually need to edit the deck after generation.