Questions? hello@viberation.devGet supportBlogDocsChangelog
Get started

PowerPoint (pptx)

Create and edit slide decks.

Anthropic's presentation skill, used whenever a .pptx file is involved: building slide decks and pitch decks, or reading and extracting text from existing ones. Source-available, not open source.

Install this skill

npx skills add https://github.com/anthropics/skills --skill pptx

Runs the open-source skills CLI in your own terminal. It asks which agents to add the skill to. Read what it tells your agent to do before you install it.

Install for your agent

  • Claude Code

    Run this in your project

    npx skills add https://github.com/anthropics/skills --skill pptx -a claude-code

    Add -g to install it for every project instead.

    Or ask Claude Code to do it

    Install the "pptx" skill from https://github.com/anthropics/skills for Claude Code.
    Copy the skill folder (the one containing SKILL.md, with any scripts or reference files next to it) into .claude/skills/ in this project.
    Before copying, show me the SKILL.md and list any scripts it includes, and wait for me to confirm.

    Or copy the folder yourself

    Unzip the download into .claude/skills/ for this project, or ~/.claude/skills/ for all your projects.

    Picked up in the current session, no restart needed.

    Claude Code skills docs
  • Claude.ai

    Upload the ZIP

    1. In Settings > Capabilities, turn on Code execution and file creation.
    2. Go to Customize > Skills, press +, then Create skill.
    3. Choose Upload a skill and pick the ZIP you downloaded.

    Free, Pro and Max plans. On Team and Enterprise, an owner turns skills on in Organization settings first.

    Claude.ai skills docs
  • ChatGPT

    Upload the ZIP

    1. Open Skills in ChatGPT and select Create.
    2. Select Upload from your computer and pick the ZIP you downloaded.
    3. Wait for ChatGPT's safety scan. A skill marked Needs Review asks you to check it before use.

    Skills that rely on scripts or a terminal may not work unchanged in ChatGPT.

    ChatGPT skills docs
  • Codex

    Run this in your project

    npx skills add https://github.com/anthropics/skills --skill pptx -a codex

    Add -g to install it for every project instead.

    Or ask Codex to do it

    Install the "pptx" skill from https://github.com/anthropics/skills for Codex.
    Copy the skill folder (the one containing SKILL.md, with any scripts or reference files next to it) into .agents/skills/ in this project.
    Before copying, show me the SKILL.md and list any scripts it includes, and wait for me to confirm.

    Or copy the folder yourself

    Unzip the download into .agents/skills/ for this project, or ~/.agents/skills/ for all your projects.

    Restart Codex if the skill does not show up.

    Codex skills docs
  • Cursor

    Run this in your project

    npx skills add https://github.com/anthropics/skills --skill pptx -a cursor

    Add -g to install it for every project instead.

    Or ask Cursor to do it

    Install the "pptx" skill from https://github.com/anthropics/skills for Cursor.
    Copy the skill folder (the one containing SKILL.md, with any scripts or reference files next to it) into .cursor/skills/ in this project.
    Before copying, show me the SKILL.md and list any scripts it includes, and wait for me to confirm.

    Or copy the folder yourself

    Unzip the download into .cursor/skills/ for this project, or ~/.cursor/skills/ for all your projects.

    Run it by typing / and the skill name in chat.

    Cursor skills docs
  • GitHub Copilot

    Run this in your project

    npx skills add https://github.com/anthropics/skills --skill pptx -a github-copilot

    Add -g to install it for every project instead.

    Or ask GitHub Copilot to do it

    Install the "pptx" skill from https://github.com/anthropics/skills for GitHub Copilot.
    Copy the skill folder (the one containing SKILL.md, with any scripts or reference files next to it) into .github/skills/ in this project.
    Before copying, show me the SKILL.md and list any scripts it includes, and wait for me to confirm.

    Or copy the folder yourself

    Unzip the download into .github/skills/ for this project, or ~/.copilot/skills/ for all your projects.

    Works in Copilot CLI, the cloud agent and agent mode in VS Code and JetBrains.

    GitHub Copilot skills docs
  • Antigravity

    Run this in your project

    npx skills add https://github.com/anthropics/skills --skill pptx -a antigravity

    Add -g to install it for every project instead.

    Or ask Antigravity to do it

    Install the "pptx" skill from https://github.com/anthropics/skills for Antigravity.
    Copy the skill folder (the one containing SKILL.md, with any scripts or reference files next to it) into .agents/skills/ in this project.
    Before copying, show me the SKILL.md and list any scripts it includes, and wait for me to confirm.

    Or copy the folder yourself

    Unzip the download into .agents/skills/ for this project, or ~/.gemini/config/skills/ for all your projects.

    Antigravity skills docs
  • Gemini CLI

    Run this in your project

    npx skills add https://github.com/anthropics/skills --skill pptx -a gemini-cli

    Add -g to install it for every project instead.

    Or ask Gemini CLI to do it

    Install the "pptx" skill from https://github.com/anthropics/skills for Gemini CLI.
    Copy the skill folder (the one containing SKILL.md, with any scripts or reference files next to it) into .gemini/skills/ in this project.
    Before copying, show me the SKILL.md and list any scripts it includes, and wait for me to confirm.

    Or copy the folder yourself

    Unzip the download into .gemini/skills/ for this project, or ~/.gemini/skills/ for all your projects.

    Run /skills to check it was found.

    Gemini CLI skills docs
Installs
220.1K via skills.sh
Last updated
10 Sept 2026

Security checks

Run by independent scanners and published on skills.sh. Their results, not a Viberation review.

  • Gen Agent Trust Hub Pass

    The skill provides comprehensive tools for PowerPoint processing but contains high-risk execution patterns. Specifically, it performs runtime compilation of a C library shim to bypass sandbox restrictions and uses LD_PRELOAD for injection. While these actions support the skill's core functionality, they involve sensitive system operations. Additionally, the skill's ingestion of untrusted PPTX files creates an indirect prompt injection surface.

    17 Feb 2026
  • Socket Pass

    No alerts

    18 Mar 2026
  • Snyk Pass

    Risk: LOW · No issues

    17 Feb 2026
  • Runlayer Pass

    4/57 files flagged

    26 Feb 2026
  • ZeroLeaks Pass

    Score: 93/100 · 2 sections analyzed

    16 Apr 2026
What's inside (56 files)
  • LICENSE.txt1.5K chars
  • scripts/__init__.py0 chars
  • scripts/add_slide.py14.5K chars
  • scripts/clean.py10.4K chars
  • scripts/office/helpers/__init__.py3.4K chars
  • scripts/office/helpers/pptx_chart.py5.9K chars
  • scripts/office/helpers/pptx_slide.py1.7K chars
  • scripts/office/helpers/pptx_theme.py3.5K chars
  • scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd2K chars
  • scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd2.5K chars
  • scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd2.9K chars
  • scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd1.3K chars
  • scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd75K chars
  • scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd7K chars
  • scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd51.3K chars
  • scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd624 chars
  • scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd152K chars
  • scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd1.2K chars
  • scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd8.9K chars
  • scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd14.8K chars
  • scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd83.6K chars
  • scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd1.3K chars
  • scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd7.3K chars
  • scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd6.4K chars
  • scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd1.2K chars
  • scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd880 chars
  • scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd2.6K chars
  • scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd3.5K chars
  • scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd7.5K chars
  • scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd23.3K chars
  • scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd1.4K chars
  • scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd242.3K chars
  • scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd26.1K chars
  • scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd25.3K chars
  • scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd535 chars
  • scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd5.7K chars
  • scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd4K chars
  • scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd171.4K chars
  • scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd4.6K chars
  • scripts/office/schemas/mce/mc.xsd3.1K chars
  • scripts/office/schemas/microsoft/wml-2010.xsd26.5K chars
  • scripts/office/schemas/microsoft/wml-2012.xsd3.7K chars
  • scripts/office/schemas/microsoft/wml-2018.xsd901 chars
  • scripts/office/schemas/microsoft/wml-cex-2018.xsd1.8K chars
  • scripts/office/schemas/microsoft/wml-cid-2016.xsd1K chars
  • scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd600 chars
  • scripts/office/schemas/microsoft/wml-symex-2015.xsd745 chars
  • scripts/office/soffice.py5.9K chars
  • scripts/office/validate.py6.1K chars
  • scripts/office/validators/__init__.py336 chars
  • scripts/office/validators/base.py33.8K chars
  • scripts/office/validators/docx.py17.5K chars
  • scripts/office/validators/pptx.py16K chars
  • scripts/office/validators/redlining.py11.2K chars
  • scripts/thumbnail.py9.8K chars
  • SKILL.md20.6K chars

SKILL.md, first part. Shown as plain text.

---
name: pptx
description: "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 slide files; working with templates (.potx), layouts, speaker notes, or comments. Trigger whenever the user mentions \"deck,\" \"slides,\" \"presentation,\" or references a .pptx or .potx filename, regardless of what they plan to do with the content afterward. If a .pptx or .potx file needs to be opened, created, or touched, use this skill."
license: Proprietary. LICENSE.txt has complete terms
---

# 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.layout` before adding slides.** The default canvas is `LAYOUT_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_WIDE` is 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-100` on fills and images, `opacity: 0.0-1.0` on 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 two `add*` calls — build a fresh object each time.
- **Shadow `offset` must be ≥ 0** — a negative offset corrupts the file. To cast a shadow upward, use `angle: 270` with a positive offset.
- **`letterSpacing` is silently ignored** — the real option is `charSpacing`.
- **Lists:** `bullet: true` on each item, never a literal `•` (renders double bullets). Set `breakLine: true` on every array item except the last. Space bulleted paragraphs with `paraSpaceAfter`, not `lineSpacing` (huge gaps).
- **One `new pptxgen()` per output file** — never reuse an instance.
- **`rectRadius` only works on `ROUNDED_RECTANGLE`**, not `RECTANGL

Key info

Pricing
Free
Category
Skills

More in Skills