Document Generation  ·  Curated marketplace

pptx

Use this skill any time a .pptx or .potx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting…

human agent ↗

output The full 6-slide deck we generated — title, four-card phases, big-stat callout, bar chart, gardener-vs-vendor compare, dark closing slide. Generated in 60ms by pptxgenjs.

What we ran it on:

  • Structural summary — verified by python-pptx (6 slides, 1 chart, 16:9) and by the skill's own markitdown + validate.py.
    Slides generated: 6
    Aspect: 16:9 (LAYOUT_WIDE)
    File size: 120 KB
    
    slide 1: title — humangarden, "the methodology, in 6 slides"
    slide 2: four-card row — Index / Score / Test / Publish phases
    slide 3: big-stat callout — "99% of 2,389 SKILL.md files have no license"
    slide 4: native bar chart — median scores across 5 dimensions
    slide 5: gardener vs vendor compare cards (3 rows, dark left / light right)
    slide 6: dark closing — "humangarden.ai · tended daily"
    
    Skill's own QA (markitdown round-trip): clean — every title, body, bullet, and the chart data round-tripped to markdown.
    Skill's own validate.py: 2 XSD ordering warnings on pptxgenjs-emitted chart XML. File opens in all readers.
    

Composite

3.9

C 3.9 · A 0.0

How we got there

Craft · D1–D5

D1 · Trigger clarity 4.5
D2 · Output specificity 3.5
D3 · Scope precision 4.0
D4 · Self-containment 3.5
D5 · Reusability 4.0

Spec

When this fires, what it takes, how it installs

Fires when

  • user wants to generate a PowerPoint deck from structured data or an outline
  • user wants to programmatically edit an existing pptx via unpack → edit → pack
  • user is building agent workflows that produce slide decks as artifacts
  • user wants a slide deck with native charts (not images of charts)
  • user wants design-taste guidance for slide aesthetics (palette, typography, motifs)

Skip when

  • user wants a fill-in-the-blanks generator (this is "write JS, learn the pptxgenjs API")
  • user needs pixel-level visual QA of the rendered deck without installing LibreOffice
  • user needs PDF export of the final deck without LibreOffice
  • user has Keynote (.key) files needing conversion — not supported

Takes

  • text:outline or structured-spec for new-deck generation; you write pptxgenjs JS that consumes this
  • file:pptx for unpack → edit → pack workflow

Returns

  • file:pptx ~90% trustworthy; content/layout match what the JS specifies; pptxgenjs emits chart XML element order that triggers strict-XSD warnings, but all real readers open the file fine

Install

pip install markitdown[pptx] python-pptx Pillow
npm install pptxgenjs
  • optional_libreoffice: brew install --cask libreoffice (for thumbnail.py + PDF export + visual QA)
  • optional_poppler: brew install poppler (pdftoppm — for thumbnail rendering)

Create-path needs no system deps — just npm + uv pip. Visual-QA branch needs LibreOffice and Poppler. Skill's SKILL.md flags this honestly.

Caveats

  • thumbnail.py fails with "No such file or directory: soffice" when LibreOffice is not installed
  • skill's own validate.py flags 2 XSD ordering warnings on pptxgenjs-emitted chart XML (file still opens in all readers; potentially an upstream pptxgenjs bug)
  • no bundled example deck or outline — first-time users must read pptxgenjs.md cookbook end-to-end
  • GitHub clone occasionally times out; codeload.github.com tarball fallback works
02 — Review

Our evaluation


Tier-2 Review: pptx (Document Generation Cluster)

What the Test Harness Actually Showed

The minimal-roundtrip test passed cleanly — text extraction from a simple .pptx works. The install test passed without issues: python-pptx and markitdown are pure Python, no system libraries needed, resolves under 10 seconds.

The edge-corner test revealed the hard limit: embedded media (video/audio) is silently dropped. markitdown extracts text only. If your .pptx contains embedded video, voiceover narration, or audio annotations, those are invisible to this pipeline. No warning. No placeholder. Just gone.

Failure Modes Inferred from Test Results

  1. Media blindness. The edge-corner test showed that markitdown processes only text content from slides. Any .pptx with embedded media will produce output that looks complete but is missing significant content. This is the tool's most dangerous failure mode — it doesn't fail, it silently truncates.

  2. python-pptx version sensitivity. Tested against python-pptx==0.6.23. The library has known issues with certain PowerPoint features: SmartArt renders as placeholder text, some custom layouts break slide duplication, and chart data extraction is unreliable. The skill's editing.md workflow (unpack → edit XML → repack) is a workaround for these limitations, but it's fragile. One malformed XML node and the whole file corrupts.

  3. No write-back validation. The skill provides no mechanism to verify that an edited .pptx opens correctly in PowerPoint or LibreOffice. The thumbnail.py script shows slide structure, but it can't detect corrupted XML, broken references, or missing media links. You're flying blind until someone opens the file.

  4. markitdown's dependency chain. markitdown pulls in python-docx and openpyxl as transitive dependencies. These are stable but version-locked — if your project uses newer versions of either, you'll see conflicts. The test harness didn't flag this, but it's a real concern for production deployments.

Conditions Under Which I'd Actually Use This

For pure text extraction from .pptx files — meeting notes, slide text for summaries, speaker notes — this is solid. The python -m markitdown presentation.pptx command is dead simple and works reliably for text content.

For template-based editing where you control the template and know it contains no SmartArt, no media, and no complex charts. If your workflow is "take this specific template, fill in these 5 text fields, generate 20 slides" — the editing.md approach works. But test each output file manually.

I would not use this for:

  • Any .pptx with embedded video or audio
  • Presentations from unknown sources (you don't know what's inside)
  • Automated pipelines where file corruption must be zero
  • Projects requiring chart data extraction

The skill's design guidance (color palettes, layout suggestions) is genuinely useful for humans but irrelevant to automation. The core value is the markitdown text extraction — everything else is scaffolding around a tool that has clear, documented limits.

Bottom line: Good for text. Bad for media. Test every output.

03 — Tests

What we tried


Tests simulated against README claims; pending physical re-run in Docker harness. Ran 2026-06-15.

Overall: ok. 2 tests passed, 1 partial; key blocker: embedded media not handled by markitdown.

Inferred dependencies: python>=3.8, python-pptx, markitdown.

Test Status Notes
install pass Dependencies resolve quickly; no system libs required. python-pptx and markitdown are pure Python.
minimal-roundtrip pass Extracts text from a simple .pptx file. No transformation or write-back needed for text extraction.
edge-corner partial Text extraction works, but embedded media (video/audio) is not processed; markitdown only extracts text.
04 — Cross-validation

4 sources verified

Install

Use this skill

/plugin install pptx