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.

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

Source Hugo He
License MIT
First documented

Trigger phrases

Phrases that activate this skill when typed to Claude Code:

  • generate a deck from this PDF
  • convert this doc to PPTX
  • make slides from this markdown

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. 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.pyfinalize_svg.pysvg_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. 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.