pptx
Empowers your agent to create and edit PowerPoint presentations. Useful for generating slides, extracting content, or updating existing presentations.
What it does
This tool allows you to create, edit, and read presentation files (.pptx). You can generate new presentations, modify existing ones, or extract text from them.
When to use it
- ✓Creating a new presentation from scratch.
- ✓Changing text or layout in an existing .pptx file.
- ✓Extracting all text from a presentation to use elsewhere.
Example of what to ask your AI
“Create a presentation about the history of artificial intelligence with 5 slides.”
Want more? Open the sections below.
How to use
The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.
Skill link
Ready-to-paste message
How it works
The tool works in different ways depending on the task. To create, it uses a special script. To edit, it unpacks the file, allows manual editing of internal components, and then repacks it. To read, it extracts the text from each slide.
Installation
Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.
In the terminal (Claude Code, Codex, Cursor), in your project folder:
npx skills add anthropics/skills --skill pptxOr download just the file:
curl -L https://raw.githubusercontent.com/anthropics/skills/main/skills/pptx/SKILL.md -o SKILL.mdTechnical content (original SKILL.md)
Original text by the author, straight from GitHub.
PPTX creation, editing, and analysis
A .pptx is a ZIP archive of XML files. Choose your approach by task:
| Task | Approach |
|---|---|
| Create a new deck | Write a pptxgenjs script — see gotchas below |
| Edit an existing deck, or build from a template | unzip → edit ppt/slides/slideN.xml → zip |
| Read content | markitdown deck.pptx (one block per slide under <!-- Slide number: N --> markers); visual grid: python scripts/thumbnail.py deck.pptx |
Scripts
Paths are relative to this skill's directory. Everything else is plain Python, node, or shell.
| Script | What it does |
|---|---|
scripts/thumbnail.py deck.pptx [prefix] |
Labeled grid of every slide, for picking template layouts. .pptx only. Pass prefix — it defaults to thumbnails, which overwrites the grids of any other deck done in the same directory |
scripts/add_slide.py unpacked/ slide2.xml [--after slideN.xml] |
Duplicate a slide (or a slideLayoutN.xml) with all the package bookkeeping. Also takes a .pptx directly with -o out.pptx |
scripts/clean.py unpacked/ |
Delete slides, media, and rels no longer referenced. Run after <p:sldIdLst> is final |
scripts/office/validate.py deck.pptx [--original src.pptx] |
Schema, relationship, content-type, chart and slide checks; each failure names its fix. Pass --original for any template-derived deck — it baselines the schema checks against the template, so the template's own XSD errors don't read as yours |
scripts/office/soffice.py --headless --convert-to pdf deck.pptx |
LibreOffice wrapper — bare soffice hangs in this sandbox |
Creating with pptxgenjs — gotchas
pptxgenjs is preinstalled — do not run npm install first; write the script and require('pptxgenjs') directly. Only if that require fails: npm install pptxgenjs. The model knows the API; these are the footguns:
- Set
pres.layoutbefore adding slides. The default canvas isLAYOUT_16x9= 10" × 5.625", not 13.3" wide. Coordinates past the edge are written, not clamped — the shape just isn't on the slide. (LAYOUT_WIDEis 13.3" × 7.5".) - Hex colors: never
#, never 8 digits.color: "FF0000". Both"#FF0000"and alpha baked into the hex ("00000020") corrupt the file. For translucency:transparency: 0-100on fills and images,opacity: 0.0-1.0on shadows — each is silently ignored on the other. - pptxgenjs mutates option objects in place (converts values to EMU on first use). Never share one
shadow/options object across twoadd*calls — build a fresh object each time. - Shadow
offsetmust be ≥ 0 — a negative offset corrupts the file. To cast a shadow upward, useangle: 270with a positive offset. letterSpacingis silently ignored — the real option ischarSpacing.- Lists:
bullet: trueon each item, never a literal•(renders double bullets). SetbreakLine: trueon every array item except the last. Space bulleted paragraphs withparaSpaceAfter, notlineSpacing(huge gaps). - One
new pptxgen()per output file — never reuse an instance. rectRadiusonly works onROUNDED_RECTANGLE, notRECTANGLE.- Gradient fills aren't supported — use a gradient image as the background instead.
- Text boxes have built-in internal padding — set
margin: 0whenever text must align with a shape, line, or icon at the same x. - Speaker notes go in
slide.addNotes("...")(plain text, once per slide), never in a text box on the slide. - Keep charts native. Use
addChart()for everything PowerPoint can chart (pass an array of{type, data, options}for combos). For PowerPoint-native features the library doesn't expose (trendlines, error bars), compute the extra series yourself or post-process the generated OOXML — do not fall back to a rendered image. Only chart types PowerPoint has no native form for (Sankey, network, chord) go in as images. - Default charts render bare — no title, no data labels, dated palette. Set
showTitle+title,showValue: true+dataLabelPosition,chartColors: [...]from your palette, and quiet the frame (catAxisLabelColor/valAxisLabelColor,valGridLine: { color, size },catGridLine: { style: "none" },showLegend: falsefor a single series). - On a stacked bar or column chart,
dataLabelPositionmust bectr,inEnd, orinBase.outEndcorrupts the file.
…
FAQ
How do I create a new presentation?
You need to write a script using the `pptxgenjs` tool, defining the layout and adding slides with the desired content.
Can I extract text from a presentation?
Yes, the tool can extract the text from each slide, marking each one with a slide number.
What happens if I edit the .pptx file directly?
It is recommended not to edit directly. The tool provides a process to unpack, edit specific parts (like `slideN.xml`), and then repack, which is safer.
Details
Original description by the author
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 text from any .pptx or .potx file (even if the extracted content will be used elsewhere, like in an email or summary); editing, modifying, or updating existing presentations; combining or splitting slid
repo: anthropics/skills
Popularity
- GitHub stars
- 181k
- Ranking position
- #326
- License
- —
- Updated
- 10/9/2026
Comments
- …
More skills from this repository
academy-guide
Has your agent recommend courses and tutorials for learning Claude. It's useful when you have questions about how to use Claude or its products.
anthropics/skills
algorithmic-art
Helps your agent create art using code, generating unique images. It's useful when you want original computer-generated art.
anthropics/skills
brand-guidelines
Has your agent apply Anthropic's brand colors and visual style to materials. It's useful for maintaining the company's visual identity across projects.
anthropics/skills
canvas-design
Helps your agent create beautiful visual art in files. It's useful when you ask for a poster, art, or any static design.
anthropics/skills
Similar skills
intent-driven-development
Helps your agent turn ideas into clear, testable plans. Defines criteria to ensure changes are made correctly and safely.
affaan-m/ECC
product-capability
Guides your agent in turning product ideas into clear plans. It defines what needs to be done, the limits, and decisions before development.
affaan-m/ECC
article-writing
Writes long-form content like articles, guides, and blog posts with a unique style. It's useful when you need well-written texts with a consistent voice and credibility.
affaan-m/ECC