Skip to content
HUIAHUB

anthropics/skills/skills/pptx

PowerPoint (pptx) files

Used whenever a .pptx or .potx file is involved: creating decks, reading or extracting text, editing presentations, combining or splitting slides, and working with templates, layouts, notes or comments.

Agent skillAgent skills

What PowerPoint (pptx) files does

The skill picks a method by task. New decks are written as a pptxgenjs script, and the SKILL.md lists library pitfalls that corrupt files: hex colors with a leading #, negative shadow offsets, reused option objects, outEnd labels on stacked charts and missing axis definitions on combo charts. Existing decks and templates are unzipped, edited as slide XML and zipped again. Bundled Python scripts duplicate slides (add_slide.py), remove orphaned parts (clean.py), draw a labeled thumbnail grid of a template (thumbnail.py) and validate the package (office/validate.py). Reading content goes through markitdown.

A design section asks for a palette chosen for the topic, one repeated visual motif and a visual element on every slide. It names fonts that render true to width in the LibreOffice preview, and it bans accent lines under titles, decorative edge stripes and default cream backgrounds.

QA is mandatory. The agent checks the text with markitdown, runs the validator, converts the deck to PDF through the office/soffice.py LibreOffice wrapper and then to slide images with pdftoppm, and inspects every image for overflow, overlap, spacing and contrast. The end product is the .pptx file, checked by the validator and against rendered slide images.

Install

/plugin install document-skills@anthropic-agent-skills

Read the security check below before you run it. The repository's own instructions win if they differ.

Security check

What the skill's files do, from reading them. A flag that nobody has checked yet says "Not checked", never "No".

Runs scripts
Yes
Uses the network
Yes
Installs hooks
No
Asks for secrets
No

The folder ships 15 Python script files, which the agent runs to extract, edit, validate and render decks. office/soffice.py launches LibreOffice, and when it detects blocked sockets it compiles a small C shim with gcc in the temp folder and loads it through LD_PRELOAD. The scan also marks network access, citing several scripts; the URLs in those files include Office XML schema namespaces. No hooks or secret variables were found. Read soffice.py and the validators before installing, and run the skill on copies of your decks.

Scan details: Ships 15 script files: scripts/init.py, scripts/add_slide.py, scripts/clean.py, scripts/office/helpers/init.py, scripts/office/helpers/pptx_chart.py, scripts/office/helpers/pptx_slide.py, …. skills/pptx/scripts/add_slide.py makes network requests. skills/pptx/scripts/office/helpers/init.py makes network requests. skills/pptx/scripts/office/helpers/pptx_theme.py makes network requests. skills/pptx/scripts/office/validate.py makes network requests. skills/pptx/scripts/office/validators/base.py makes network requests. skills/pptx/scripts/office/validators/docx.py makes network requests. skills/pptx/scripts/office/validators/pptx.py makes network requests. skills/pptx/scripts/office/validators/redlining.py makes network requests. Checked at commit 8a1541c4a3ff.

Use cases

  • Build a new slide deck from an outline with pptxgenjs.
  • Fill a company template with new content without breaking its layout.
  • Extract slide text from a .pptx for a summary or email.
  • Validate a generated deck before sending it.

Limitations

  • Needs pptxgenjs, markitdown, Pillow, defusedxml, lxml, LibreOffice and Poppler available.
  • Legacy .ppt files must be converted to .pptx first.
  • LibreOffice substitutes some fonts, so text-fit checks for those fonts are approximate.
  • Proprietary licence: LICENSE.txt bars copying, redistribution and derivative works.

Sources