Creating Presentations That Don't Look AI-Generated: The PPTX Skill

AI can write a presentation in seconds. The problem is it looks like it did — generic blue theme, bullet-point overload, accent lines under every title. The PPTX Agent Skill from Anthropic takes a different approach: treat slide generation like software engineering, with scripts, templates, and a proper QA loop.

What Makes It Different

Most AI-generated slides fail on three fronts: repetitive layouts, forgettable design, and broken output. The PPTX skill addresses each with a specific mechanism.

Two creation paths. Start from scratch with PptxGenJS when you have no template. Use the unpack-edit-pack workflow when you do. The skill doesn’t force one approach — it picks the right one based on what you give it.

Design system baked in. Instead of vague “make it look good” instructions, the skill ships explicit color palettes (10 curated themes), font pairings, spacing rules, and a list of layout types to vary across slides. This is the difference between “add some color” and “use Coral Energy palette — F96167 primary, F9E795 accent, 2F3C7E navy for headers.”

Verification-first QA. The skill mandates a fix-and-verify cycle: generate, convert to images, inspect with a subagent, fix issues, re-verify. It assumes the first render is wrong and treats QA as a bug hunt, not a confirmation step.

When to Use It

Pitch decks and client presentations. The template workflow shines here — use your existing branded template, unpack it, replace content at the XML level, and repack with validation. Layout fidelity is preserved because you’re editing the actual slide XML, not a PDF or image export.

Conference talks and internal training. The create-from-scratch path gives full control over every element — charts, tables, icons, custom backgrounds. The design rules in the skill prevent the “default PPT look” without requiring a designer.

Automated report generation. The script-based workflow (PptxGenJS + Node.js) means you can generate 50 standardized slides programmatically with consistent styling, data from APIs, and proper chart rendering.

Constraints and Prerequisites

Dependencies are non-trivial. You need Node.js (for pptxgenjs), Python (for markitdown and scripts), LibreOffice (for PDF conversion), and Poppler (for pdftoppm). The skill auto-configures LibreOffice for sandboxed environments via scripts/office/soffice.py, but the full toolchain is a significant install.

The template workflow is XML-level editing. You edit slide{N}.xml files directly. This gives precise control but means you’re reading PowerPoint’s XML schema. Subagents can handle the per-slide edits, but the unpack-edit-pack pipeline needs a human to set up.

PptxGenJS has sharp edges. Hex colors without #, opacity via properties not color strings, fresh shadow objects per shape call, no gradient fills — the skill documents these explicitly because they cause silent file corruption.

File format is strict. PPTX is a ZIP archive of XML files. The pack script validates and repairs, but certain operations (like reusing option objects across PptxGenJS calls) corrupt the output without obvious errors.

Installation

# Python dependencies (markitdown for text extraction, Pillow for thumbnails)
pip install "markitdown[pptx]" Pillow

# Node.js dependency (PptxGenJS for creating from scratch)
npm install -g pptxgenjs

# System tools (PDF conversion and image rendering)
# LibreOffice: https://www.libreoffice.org/download/
# Poppler: https://poppler.freedesktop.org/

On macOS: brew install libreoffice poppler

The skill scripts are included in the skill directory — no separate install needed for them.

Quick Start

Read and Analyze an Existing Presentation

# Extract all text
python -m markitdown input.pptx

# Generate visual thumbnail grid
python scripts/thumbnail.py input.pptx

Create a Presentation from Scratch

const pptxgen = require("pptxgenjs");

let pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.author = "Your Name";
pres.title = "My Presentation";

let slide = pres.addSlide();
slide.background = { color: "1E2761" };  // Navy background
slide.addText("Hello World", {
  x: 1, y: 2, w: 8, h: 1.5,
  fontSize: 44, fontFace: "Georgia",
  color: "FFFFFF", bold: true, align: "center"
});

pres.writeFile({ fileName: "output.pptx" });

Edit from a Template

# Step 1: Analyze the template
python scripts/thumbnail.py template.pptx
python -m markitdown template.pptx

# Step 2: Unpack
python scripts/office/unpack.py template.pptx unpacked/

# Step 3: Edit slides (edit XML in unpacked/slides/slide1.xml, etc.)
# Step 4: Run QA
python -m markitdown output.pptx
# Convert to images and inspect visually

# Step 5: Pack
python scripts/office/pack.py unpacked/ output.pptx --original template.pptx

Iteration Workflow

The skill enforces a specific loop for getting slides right:

  1. Generate or edit the presentation
  2. Convert to images for visual inspection
    python scripts/office/soffice.py --headless --convert-to pdf output.pptx
    pdftoppm -jpeg -r 150 output.pdf slide
  3. Inspect with a subagent — use a subagent with fresh eyes to find overlapping elements, text overflow, alignment issues, low contrast
  4. Fix issues in the source code or XML
  5. Re-verify affected slides — one fix often creates another problem
  6. Repeat until a full pass reveals no new issues

The QA prompt for subagents is included in the skill’s SKILL.md — it’s a detailed checklist covering overlapping elements, text cutoff, spacing violations, and more.

Design Rules Worth Stealing

The skill ships with design guidelines that apply beyond PPTX:

Pick a color palette that reflects the topic, not your brand guidelines. The skill provides 10 palettes — Forest & Moss, Coral Energy, Warm Terracotta, Charcoal Minimal — and the instruction to choose one that fits the content. If your palette works for any topic, it’s too generic.

Vary layouts across slides. The single biggest mistake is repeating the same layout. Two-column, icon grid, full-bleed image, stat callout, quote slide — each slide should look structurally different from the one before it.

Never use accent lines under titles. The skill explicitly bans this as a hallmark of AI-generated slides. Use whitespace or background color instead.

Typography pairings matter. Georgia + Calibri, Arial Black + Arial, Cambria + Calibri — the skill provides 8 curated pairings with specific size rules (36-44pt titles, 14-16pt body, 10-12pt captions).

Pain Points

PptxGenJS object mutation. The library mutates option objects in-place. Reusing a shadow configuration across two shapes corrupts the second one. The fix is a factory function that returns a fresh object each time.

XML-level editing is verbose. A simple text replacement in the template workflow means navigating PowerPoint’s XML schema — <a:p>, <a:r>, <a:rPr>, <a:t> chains for every paragraph. Subagents help, but the complexity is real.

No gradient fills in PptxGenJS. If you need gradients, you must create a gradient image and use it as a background. Natively, the library only supports solid fills.

LibreOffice rendering differs from PowerPoint. The QA images come from LibreOffice, but the actual rendering in PowerPoint (especially on Windows) can differ. Text overflow and font fallback are the most common discrepancies.

Conclusion

The PPTX skill is an antidote to AI-generated slide fatigue. It replaces “generate some slides” with a structured engineering workflow — code, templates, design system, QA loop — that produces presentations that look intentional rather than procedurally generated.

If you’re generating more than one presentation a month, the toolchain investment pays for itself in the first deck.

Reference: anthropics/skills/skills/pptx on GitHub

Related Posts

22 Claude Code Skills for End-to-End Content Creation: From Generation to Publish in One Workflow

22 Claude Code Skills for End-to-End Content Creation: From Generation to Publish in One Workflow

You finish a technical blog post. Now comes the headache: generate a cover image, create illustratio ...

AI Agent Skill: Caveman Mode Cuts 75% Output Tokens Without Losing Accuracy

AI Agent Skill: Caveman Mode Cuts 75% Output Tokens Without Losing Accuracy

Your AI agent talks too much. Every "Sure! I'd be happy to help you with that" is a wasted token tha ...

Why Claude's Team Is Ditching Markdown as AI Output Explodes from 10 to 1,000 Lines

Why Claude's Team Is Ditching Markdown as AI Output Explodes from 10 to 1,000 Lines

Your AI can now generate 1,000-line plans, complex flowcharts, and full code reviews in one shot. An ...

DESIGN.md: Pure-Text Design Systems That Let AI Agents Generate Pixel-Matched UI

DESIGN.md: Pure-Text Design Systems That Let AI Agents Generate Pixel-Matched UI

You tell your AI agent "build a login page" and it spits out a blue-button Bootstrap default. You as ...

How to Turn Real-World Capabilities Into an Agent Skill

General-purpose AI agents are powerful, but they lack the one thing every team has: **procedural kno ...

Tell Claude to Draw: Diagrams with /drawio in Claude Code

Tell Claude to Draw: Diagrams with /drawio in Claude Code

You're describing an architecture to Claude Code. The response includes detailed ASCII art that almo ...