
`pptx`: Anthropic's opinionated slide-generation skill with a mandatory bug-hunt loop
Anthropic's `pptx` skill (inside the 142,000-star `anthropics/skills` repo) goes beyond 'generate slides': 10 named color palettes, 8 font pairings, 10 explicit anti-AI-slop design rules, and a mandatory QA loop that spawns fresh subagents to visually inspect every render before declaring success. The article covers all three operational modes, the full dependency stack, 4 open bugs (including macOS .DS_Store contamination, Keynote OOXML failure, Docker LibreOffice retry, and Windows AF_UNIX crash), and six specific 'when NOT to use' scenarios.

Research Brief
Your agent knows how to write JavaScript. Ask it to "make a deck," and it will — default Arial font, white background, accent lines under every title, identical two-bullet layout on every slide. The output looks like it was generated by an AI. Because it was.
Anthropic's
pptx skill, part of the official anthropics/skills repository (142,000 stars, 16,800 forks as of May 2026), takes a different position: the skill ships 10 named color palettes, 8 typography pairings, 10 explicit "never do this" design rules, and a mandatory QA loop that treats every first render as a bug-ridden draft. 1 It doesn't just generate slides — it forces a design discipline onto the generation process.Loading content card…
What the skill does
The
pptx skill handles three distinct workflows, triggered any time a .pptx file is "involved in any way — as input, output, or both" 2:- Read/analyze an existing presentation via
python -m markitdown— extract text, structure, and content for downstream tasks - Edit an existing deck using a template-based XML manipulation pipeline (unpack → edit → pack)
- Create from scratch using PptxGenJS, a Node.js library that generates
.pptxfiles programmatically
The skill also provides Anthropic's own AI-powered PowerPoint add-in, Claude for PowerPoint, which is a native add-in for PowerPoint on the web, Windows (Microsoft 365 build 16.0.13127.20296+), and Mac (version 16.46+). 3 That add-in reads your slide master, layouts, fonts, and color schemes from open decks and generates new slides that match your existing template — no manual palette selection needed.
The skill is listed as part of the
document-skills plugin alongside docx, pdf, and xlsx. All four are labeled "source-available, not open source" — Anthropic describes them as the skills that "power Claude's document capabilities under the hood," shared for developer reference. 1Supported agents and install steps
The skill runs on Claude Code, Claude.ai paid plans (pre-loaded, no install needed), and the Claude API via the Skills API. 4 The Agent Skills standard was published as an open standard on December 18, 2025, but explicit support from Cursor, Codex, or Windsurf has not been confirmed in any public source. 5
Claude Code install:
# Register the marketplace first (if not already done)
/plugin marketplace add anthropics/skills
# Then install
/plugin install document-skills@anthropic-agent-skillsFull dependency stack for local use:
pip install "markitdown[pptx]" Pillow
npm install -g pptxgenjs
npm install -g react-icons react react-dom sharp # for icon rendering
# Plus: LibreOffice (soffice) and Poppler (pdftoppm) from your system package managerThat dependency list is longer than most skills in the ecosystem. LibreOffice is required for the PDF conversion step in the QA loop — if you're running in Docker, read the known issues section below before you proceed.
The design system: 10 palettes, 8 font pairings, and rules that read like a style guide
The skill's most distinctive feature isn't the generation — it's the constraints it imposes on generation. The SKILL.md file opens with: "Don't create boring slides. Plain bullets on a white background won't impress anyone." 2
10 built-in color palettes, each with Primary / Secondary / Accent hex codes:
| Palette name | Primary | Secondary | Accent |
|---|---|---|---|
| Midnight Executive | #1E2761 navy | #CADCFC ice blue | #FFFFFF white |
| Forest & Moss | #2C5F2D forest | #97BC62 moss | #F5F5F5 cream |
| Coral Energy | #F96167 coral | #F9E795 gold | #2F3C7E navy |
| Warm Terracotta | #B85042 | #E7E8D1 sand | #A7BEAE sage |
| Ocean Gradient | #065A82 deep blue | #1C7293 teal | #21295C midnight |
| Charcoal Minimal | #36454F charcoal | #F2F2F2 off-white | #212121 black |
| Teal Trust | #028090 | #00A896 seafoam | #02C39A mint |
| Berry & Cream | #6D2E46 berry | #A26769 dusty rose | #ECE2D0 cream |
| Sage Calm | #84B59F | #69A297 eucalyptus | #50808E slate |
| Cherry Bold | #990011 cherry | #FCF6F5 off-white | #2F3C7E navy |
The skill enforces a "dominance over equality" principle: one color should carry 60–70% of visual weight, with one or two supporting tones and a single sharp accent. 2 It also recommends a "sandwich" structure — dark backgrounds for title and conclusion slides, light backgrounds for content slides — or a fully dark deck for a premium feel.
8 font pairings (header / body): Georgia / Calibri, Arial Black / Arial, Calibri / Calibri Light, Cambria / Calibri, Trebuchet MS / Calibri, Impact / Arial, Palatino / Garamond, Consolas / Calibri. Size hierarchy: slide titles 36–44pt bold, section headers 20–24pt bold, body 14–16pt, captions 10–12pt muted. 2
The 10 design anti-rules
The skill's "Common Mistakes" section is a direct list of hallmarks to eliminate from AI-generated slides 2:
- NEVER use accent lines under titles — "these are a hallmark of AI-generated slides; use whitespace or background color instead"
- Don't repeat the same layout — vary columns, cards, and callouts across slides
- Don't center body text — left-align paragraphs and lists; center only titles
- Don't skimp on size contrast — titles need 36pt+ to stand out from 14–16pt body
- Don't default to blue — pick colors that reflect the specific topic
- Don't mix spacing randomly — choose 0.3″ or 0.5″ gaps and apply consistently
- Don't style one slide and leave the rest plain
- Don't create text-only slides — every slide needs an image, chart, icon, or shape
- Don't forget text box padding —
margin: 0when aligning text with shapes - Don't use low-contrast elements — icons AND text need strong contrast against background
The rule about accent lines is worth calling out. It's not a style preference — it's a deliberate signal that the deck was generated. The fact that Anthropic baked it in as rule #1 says something about how often their own models produce it by default.
There are also PptxGenJS-specific pitfalls documented separately 6: never prefix hex colors with
# (causes file corruption), never encode opacity as an 8-character hex string, and never reuse option objects across addSlide calls — PptxGenJS mutates them in place.The QA loop: "Your first render is almost never correct"
This is the part of the skill most agents skip, and the part Anthropic is most explicit about. 2
The mandatory QA workflow has four stages:
1. Generate: Create the
.pptx file via the editing or PptxGenJS workflow.2. Convert to images:
soffice --headless --convert-to pdf output.pptx
pdftoppm -jpeg -r 150 output.pdf slide
# produces slide-01.jpg, slide-02.jpg, etc.3. Content QA: Run
python -m markitdown output.pptx and grep for placeholder residue:grep -iE "xxxx|lorem|ipsum|this.*(page|slide).*layout"4. Visual QA via subagents: The skill requires spawning fresh subagents to inspect the slide images. The reasoning: "You've been staring at the code and will see what you expect, not what's there. Subagents have fresh eyes." 2 The checklist covers overlapping elements, text overflow, decorative line misalignment, columns that don't align, low-contrast text, and leftover placeholder content.
The skill's exit condition: "Do not declare success until you've completed at least one fix-and-verify cycle." 2 That applies even for two- or three-slide decks. If your QA pass found zero issues, the skill says you weren't looking hard enough.
Loading content card…
Known bugs and active issues
This is where the skill's production reality gets honest. Four issues are currently unresolved in the repository:
macOS
.DS_Store bundling (issue #1012, reported April 23, 2026): On macOS, pack.py includes Finder-generated .DS_Store files in the output .pptx. Microsoft Office, which checks against the [Content_Types].xml manifest per OOXML spec, surfaces a repair dialog or refuses to open the file. LibreOffice handles it silently, so CI tests pass without catching this. 7Keynote incompatibility (issue #1167, reported May 19, 2026): Files produced by
python-pptx fail to import into Apple Keynote due to three OOXML compliance issues: widescreen dimensions declared alongside a screen4x3 type flag, a missing notesMasterIdLst element, and an embedded Windows printer settings stub. PowerPoint and LibreOffice open the files without complaint. 8 The workaround MYCL94 found: upload through OneDrive and re-download — PowerPoint Online silently normalizes the OOXML structure during the round-trip.Docker LibreOffice failures (PR #1043, April 26, 2026): LibreOffice
soffice --convert-to fails intermittently in containerized environments because of stale .~lock.* files, concurrent processes, or corrupted user profiles. The original code called soffice once with no retry and swallowed stderr into a generic error message. 9 PR #1043 adds a --norestore flag, three retries with 2-second intervals, lock-file cleanup, and a 120-second timeout. The fix was submitted but had not merged as of the most recent repo check.Windows crash (PR #1158, May 17, 2026):
socket.AF_UNIX is not available on Windows Python, which causes pptx, docx, and xlsx skills to crash on startup. 10 A fix was submitted but unmerged.When NOT to use this skill
Loading content card…
You want to open the result in Keynote. The OOXML compliance issues are documented and unfixed. Until #1167 merges, Keynote users should route through PowerPoint Online for the normalization round-trip — not a viable workflow for anything time-sensitive.
You're running on macOS and using the template-editing workflow. The
.DS_Store contamination in pack.py means Microsoft Office will flag your output as potentially corrupt. If your delivery target is a stakeholder using Office on Windows, they'll see a repair dialog before they see your slides.You're running in Docker. The LibreOffice conversion failure is intermittent but unmitigated in the current codebase. The fix from PR #1043 is available but unmerged — consider patching
soffice.py manually if this environment is part of your deployment.You need Cursor, Codex, or Windsurf support. The Agent Skills standard is published as an open spec, but confirmed support is limited to Claude Code, Claude.ai, the Claude Agent SDK, and the Claude Developer Platform. 5 No public adoption cases have been documented for third-party agents.
You need brand color auto-detection. The skill's 10 palettes are curated but fixed. There is no mechanism to extract colors from a brand kit or existing slide master (that detection only exists in the Claude for PowerPoint add-in, which reads the open deck's theme directly). You select a palette or supply your own hex codes.
You want a quick throwaway deck. The dependency install alone — LibreOffice, Poppler, PptxGenJS, markitdown, Pillow, react-icons, sharp — is a meaningful setup cost. The mandatory QA loop adds another round-trip. If you need five slides in five minutes, this workflow is not designed for that.
Key metadata
| Field | Value |
|---|---|
| Skill | pptx (part of document-skills plugin) |
| Repository | anthropics/skills — 142,000 stars, 16,800 forks |
| License | Proprietary (source-available, not open source) |
| Last commit | 2026-05-19 by rlancemartin |
| Supported agents | Claude Code, Claude.ai (paid plans), Claude API (Skills API), Claude Agent SDK |
| Claude for PowerPoint | Pro, Max, Team, Enterprise plans; PowerPoint web / Windows (16.0.13127.20296+) / Mac (16.46+) |
| Open bugs | #1012 (macOS .DS_Store), #1167 (Keynote import), #1043 (Docker LibreOffice retry — fix pending), #1158 (Windows AF_UNIX crash — fix pending) |
Cover image: AI-generated concept illustration
References
- 1anthropics/skills — GitHub
- 2Anthropic: pptx SKILL.md
- 3Anthropic Help Center: Use Claude for PowerPoint
- 4Anthropic Help Center: Using Skills in Claude
- 5Anthropic Engineering Blog: Equipping agents for the real world with Agent Skills
- 6Anthropic: pptxgenjs.md
- 7TerryChengTW: pack.py bundles .DS_Store on macOS
- 8MYCL94: pptx skill produces .pptx files that fail to import into Apple Keynote
- 9ZLeventer: fix(pptx): retry LibreOffice PDF conversion on lock-file failures
- 10yahyasaqban-lab: fix: handle missing socket.AF_UNIX on Windows
Add more perspectives or context around this Drop.