Directory SKILL
SKILLbundledHermes Bundled Skills

Powerpoint

Create, read, edit .pptx decks with python-pptx

pptxpowerpointpresentationsslidesofficepython-pptxBundledHermes skill
Last registry verification2026-08-18v1.0.0Nous Research
Plain meaning

What does it add to Hermes?

Create, read, edit .pptx decks with python-pptx

Powerpoint is a skill related to extending the agent. It adds a capability or workflow to Hermes. The publisher description explains the intent, while granted permissions determine what it can actually do.

This plain-language explanation is based on the publisher description. The original text remains visible for verification.

Use it when

Use it when your goal in extending the agent is clear and you can limit it to the data and actions it actually needs.

Skip it when

Do not add it merely to experiment when Hermes already has a simpler path, or when you cannot review its source and permissions.

Who is it for?

Best for users who want a repeatable way of working inside Hermes.

Safe first test

Start with non-sensitive data and a small task whose result can be verified and reversed.

Original publisher description

Create, read, edit .pptx decks with python-pptx

Data source

This entry was indexed from Hermes Bundled Skills. Our explanation interprets the type and domain without inventing a capability not present upstream.

!
Security review

The source is official or editorially reviewed, but you still need to review permissions and version compatibility.

Safe setup path

Inspect, install, then test.

  1. 01
    Open the source

    Match the publisher, license, and description to your need. Check the real update history.

  2. 02
    Review permissions and secrets

    Never paste a secret value into this site. Use environment-variable names and grant the smallest scope.

  3. 03
    Copy setup only after review

    The controls below copy text. They do not execute commands on your device.

  4. 04
    Test with a non-sensitive task

    Inspect the visible tools, then exclude write or delete tools you do not need.

Setup method

Already installed with Hermes.

This skill ships with Hermes and loads when the agent decides it is relevant. There is nothing to install; read the definition below so you know what it will do.

Open the official page
The full skill definition

Exactly what Hermes loads when this skill runs.

Reproduced from the official documentation. Read it before enabling the skill: this text becomes the agent's instructions.

Create, read, edit .pptx decks with python-pptx.

Skill metadata

A lookup table. Do not read it all; find the row that applies to you.

SourceBundled (installed by default)
Pathskills/productivity/powerpoint
Version1.0.0
AuthorNous Research
LicenseMIT
Platformslinux, macos, windows
Tagspptx, powerpoint, presentations, slides, office, python-pptx
Related skillsdocx, xlsx, pdf

Reference: full SKILL.md

Explains the idea itself. Read it slowly; the later sections build on it.

Create, inspect, and edit PowerPoint (.pptx) presentations using the python-pptx library. Four helper scripts cover deck creation from a JSON spec, structured read-back, in-place edits, and template-driven brand decks — all offline, no PowerPoint installation required.

When to Use

Explains the idea itself. Read it slowly; the later sections build on it.

  • The user asks to build a slide deck, report presentation, or pitch deck.
  • You need to extract text, notes, tables, chart data, or images from a .pptx someone shared.
  • You need to update an existing deck: replace text, refresh chart data, swap a logo, remove or reorder slides.
  • You must produce an on-brand deck from a company .pptx template.
  • Do NOT use this for .ppt (legacy binary) files — convert them first with soffice --convert-to pptx old.ppt if LibreOffice is available.

Prerequisites

Explains the idea itself. Read it slowly; the later sections build on it.

  • Python 3.10+ with python-pptx installed (pip install python-pptx). Pillow is optional (only if you need to probe image dimensions yourself).
  • Optional: LibreOffice (soffice) for rendering slides to images for visual verification. Degrade gracefully if absent — all create/read/edit operations work without it.
  • Check availability via terminal: python3 -c "import pptx; print(pptx.__version__)" and which soffice.

How to Run

Explains the idea itself. Read it slowly; the later sections build on it.

All scripts live in scripts/, take --help, print JSON to stdout, and exit non-zero on failure. Run them with terminal:

Shell8 lines
python3 scripts/pptx_create.py deck.json out.pptx
python3 scripts/pptx_read.py deck.pptx --outline      # full JSON outline
python3 scripts/pptx_read.py deck.pptx --notes        # speaker notes
python3 scripts/pptx_read.py deck.pptx --images ./img # export pictures
python3 scripts/pptx_edit.py deck.pptx --replace-text "Old Corp" "New Corp"
python3 scripts/pptx_edit.py deck.pptx --chart-data update.json
python3 scripts/pptx_edit.py deck.pptx --remove-slide 3 --move-slide 2 0
python3 scripts/pptx_from_template.py brand.pptx out.pptx --values vals.json

Author JSON specs with write_file; inspect script output and generated JSON with read_file.

Quick Reference

A lookup table. Do not read it all; find the row that applies to you.

TaskCommand
New deck from specpptx_create.py spec.json out.pptx
16:9 vs 4:3"slide_size": "16:9" or "4:3" in the spec
Outline as JSONpptx_read.py deck.pptx --outline
Export imagespptx_read.py deck.pptx --images DIR
Replace textpptx_edit.py deck.pptx --replace-text OLD NEW
Update chartpptx_edit.py deck.pptx --chart-data spec.json
Swap picturepptx_edit.py deck.pptx --swap-image N NAME new.png
Remove slidepptx_edit.py deck.pptx --remove-slide N
Reorder slidepptx_edit.py deck.pptx --move-slide FROM TO
Fill templatepptx_from_template.py tpl.pptx out.pptx --values v.json

Procedure

Explains the idea itself. Read it slowly; the later sections build on it.

1. Create a deck

Write a JSON spec (see pptx_create.py --help for the full format), then run pptx_create.py. Per slide you can set: layout (title, title_content, section, two_content, title_only, blank), title, subtitle, bullets (strings, or dicts with level 0-4, size pt, bold, italic, font, color hex), images (path + left/top/width/ height in inches), tables (rows as list-of-lists), shapes (rectangle, rounded_rectangle, oval, diamond, right_arrow, chevron, with fill hex + optional text), charts (bar, bar_h, line, pie with categories + series), and notes (speaker notes).

2. Read a deck

pptx_read.py deck.pptx --outline returns slide size, layout inventory, and per slide: layout name, all shape texts, table cells, image inventory (filename/ext/bytes), chart categories/series/values, and speaker notes. Use --images DIR to dump embedded pictures to files, then vision_analyze on any exported image if you need to see its content.

3. Edit a deck

pptx_edit.py combines operations in one pass; use --output to keep the original. Text replacement scans slide shapes, table cells, and notes. Chart update uses chart.replace_data() with a JSON spec naming the slide/chart index and new categories/series. Image swap retargets the picture's relationship id so position and size are preserved. Slide removal drops the relationship and the <p:sldId> entry; reorder moves the <p:sldId> element within <p:sldIdLst> (python-pptx has no public API for either — the script does the XML-level work).

4. Build from a template

pptx_from_template.py opens a brand .pptx, replaces every {{token}} from a values JSON across slides/tables/notes, and can append new slides that use the template's own layouts (by layout name or index) so they inherit the master's fonts and colors. Tip: to start from a template with zero slides, delete existing ones afterward with pptx_edit.py --remove-slide.

5. Visual verification (optional)

If soffice exists, render slides to PNG and inspect with vision_analyze:

Shell2 lines
soffice --headless --convert-to png --outdir ./render deck.pptx  # slide 1
soffice --headless --convert-to pdf --outdir ./render deck.pptx  # all slides

PNG export renders only the first slide; convert to PDF for all slides (then pdftoppm -png render/deck.pdf render/slide if poppler is available). When soffice is absent, rely on the JSON outline from pptx_read.py — it verifies content and structure, just not visuals.

Pitfalls

Explains the idea itself. Read it slowly; the later sections build on it.

  • Run splitting: PowerPoint fragments paragraph text into multiple runs at spell-check and formatting boundaries. --replace-text preserves formatting exactly when a match lies within one run; when the match spans runs, the paragraph is rewritten with only the first run's formatting. Verify important slides after replacement.
  • Reordering is XML-level: python-pptx has no supported reorder API. --move-slide manipulates <p:sldIdLst> directly; it is safe for ordinary decks but re-read the deck afterward to confirm.
  • Copying slides between decks is unsupported — layouts, images, and relationships would need deep cloning. Rebuild the slide in the target deck instead.
  • Chart edits replace the whole data set; you cannot patch a single cell. Adding/removing series works, but changing chart type does not.
  • The default python-pptx template is 4:3; the create script sets 16:9 unless the spec says otherwise. Custom templates keep their own size.
  • Layout indexes vary by template. For brand templates, list layout names first: pptx_read.py template.pptx --outline (layouts_available).
  • slide.shapes.title is None on blank layouts — the create script handles this, but remember it when writing ad-hoc python-pptx code.
  • Always pass encoding="utf-8" when writing spec files; tokens like {{city}} may be filled with non-ASCII values.

Verification

Explains the idea itself. Read it slowly; the later sections build on it.

  1. After any create/edit, run pptx_read.py OUT.pptx --outline and check slide count, texts, tables, notes, and chart values match intent.
  2. --images DIR then file-size check confirms pictures embedded.
  3. For high-stakes decks, render via soffice (see Procedure step 5) and review each slide image with vision_analyze.
  4. The bundled test suite is the full contract: python3 -m pytest tests/ -q (requires python-pptx + pytest).