PPTX
guyi-a/pi-ling
PowerPoint 幻灯片(.pptx / .potx)的所有操作:从零生成(pptxgenjs Node 库)、基于模板编辑(unpack XML → 改 → clean → pack)、格式转化(pptx → PDF / 图片、.ppt → .pptx)、读取分析。触发场景:用户说"做份 PPT" / "生成幻灯片" / "演讲 slide" / "培训材料" / "项目汇报" /…
Create, read, edit .pptx decks with python-pptx. An agent skill from NousResearch/hermes-agent.
$ npx skills add NousResearch/hermes-agent --skill powerpoint -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install NousResearch/hermes-agent powerpoint --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/NousResearch/hermes-agent.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/productivity/powerpoint .claude/skills/powerpoint && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "powerpoint" agent skill from https://github.com/NousResearch/hermes-agent/tree/main/skills/productivity/powerpoint into .claude/skills/powerpoint/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "powerpoint", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/NousResearch/hermes-agent/tree/main/skills/productivity/powerpointType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add NousResearch/hermes-agent --skill powerpoint -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install NousResearch/hermes-agent powerpoint --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/NousResearch/hermes-agent.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/productivity/powerpoint .agents/skills/powerpoint && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "powerpoint" agent skill from https://github.com/NousResearch/hermes-agent/tree/main/skills/productivity/powerpoint into .agents/skills/powerpoint/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "powerpoint", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add NousResearch/hermes-agent --skill powerpoint -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install NousResearch/hermes-agent powerpoint --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/NousResearch/hermes-agent.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/productivity/powerpoint .cursor/skills/powerpoint && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "powerpoint" agent skill from https://github.com/NousResearch/hermes-agent/tree/main/skills/productivity/powerpoint into .cursor/skills/powerpoint/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "powerpoint", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/NousResearch/hermes-agent.git --path skills/productivity/powerpoint--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add NousResearch/hermes-agent --skill powerpoint -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install NousResearch/hermes-agent powerpoint --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/NousResearch/hermes-agent.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/productivity/powerpoint .gemini/skills/powerpoint && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "powerpoint" agent skill from https://github.com/NousResearch/hermes-agent/tree/main/skills/productivity/powerpoint into .gemini/skills/powerpoint/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "powerpoint", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install NousResearch/hermes-agent powerpointInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add NousResearch/hermes-agent --skill powerpoint -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/NousResearch/hermes-agent.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/productivity/powerpoint .github/skills/powerpoint && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "powerpoint" agent skill from https://github.com/NousResearch/hermes-agent/tree/main/skills/productivity/powerpoint into .github/skills/powerpoint/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "powerpoint", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add NousResearch/hermes-agent --skill powerpoint -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install NousResearch/hermes-agent powerpoint --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/NousResearch/hermes-agent.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/productivity/powerpoint .opencode/skills/powerpoint && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "powerpoint" agent skill from https://github.com/NousResearch/hermes-agent/tree/main/skills/productivity/powerpoint into .opencode/skills/powerpoint/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "powerpoint", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
powerpointCreate, read, edit .pptx decks with python-pptx. An agent skill from NousResearch/hermes-agent.
Powerpoint is an agent skill from NousResearch/hermes-agent. Create, read, edit .pptx decks with python-pptx.
Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 9 other files, including scripts (for example `scripts/pptx_create.py`, `scripts/pptx_edit.py` and `scripts/pptx_from_template.py`).
It sits in Documents & Office, covering PowerPoint presentations. It works with Microsoft PowerPoint, python-pptx and LibreOffice. The repository describes itself as: The agent that grows with you. The licence is MIT.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 2966cb6. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 5 files in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
pythonsofficepipFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use pip, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Powerpoint loads about 2.7k tokens when it runs. Until then it costs about 15 tokens; SKILL.md has 1,267 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from NousResearch/hermes-agent at commit 2966cb6, republished under its MIT licence (© NousResearch). 1,267 words, ~2,689 tokens.
.claude/skills/powerpoint/SKILL.md (or your agent's skills folder). This skill also uses 7 other files; get the full folder from GitHub.Create, inspect, and edit PowerPoint (.pptx) presentations using the python-pptx library. Five helper scripts cover deck creation from a JSON spec, structured read-back, in-place edits, template-driven brand decks, and slide rendering — all offline, no PowerPoint installation required.
soffice --convert-to pptx old.ppt if LibreOffice is available.python-pptx installed
(pip install python-pptx).soffice) plus poppler (pdftoppm or
pdftocairo) for rendering slides to PNGs and for PDF export.
pptx_render.py detects both with shutil.which and degrades
gracefully (reports {"rendered": false, "missing": [...]}, exit 0)
when absent — all create/read/edit operations work without them.terminal:
python -c "import pptx; print(pptx.__version__)" and which soffice pdftoppm.All scripts live in scripts/, take --help, print JSON to stdout, and
exit non-zero on failure. Run them with terminal:
python scripts/pptx_create.py deck.json out.pptx
python scripts/pptx_read.py deck.pptx --outline # full JSON outline
python scripts/pptx_read.py deck.pptx --notes # speaker notes
python scripts/pptx_read.py deck.pptx --images ./img # export pictures
python scripts/pptx_edit.py deck.pptx --replace-text "Old Corp" "New Corp"
python scripts/pptx_edit.py deck.pptx --chart-data update.json
python scripts/pptx_edit.py deck.pptx --duplicate-slide 2
python scripts/pptx_edit.py deck.pptx --remove-slide 3 --move-slide 2 0
python scripts/pptx_from_template.py brand.pptx out.pptx --values vals.json
python scripts/pptx_render.py deck.pptx --outdir ./render # slide PNGsAuthor JSON specs with write_file; inspect script output and generated
JSON with read_file.
| Task | Command |
|---|---|
| New deck from spec | pptx_create.py spec.json out.pptx |
| 16:9 vs 4:3 | "slide_size": "16:9" or "4:3" in the spec |
| Outline as JSON | pptx_read.py deck.pptx --outline |
| Export images | pptx_read.py deck.pptx --images DIR |
| Replace text | pptx_edit.py deck.pptx --replace-text OLD NEW |
| Replace chart data | pptx_edit.py deck.pptx --chart-data spec.json |
| Patch one series | same flag, spec with "ops" (see below) |
| Swap picture | pptx_edit.py deck.pptx --swap-image N NAME new.png |
| Duplicate slide | pptx_edit.py deck.pptx --duplicate-slide N |
| Remove slide | pptx_edit.py deck.pptx --remove-slide N |
| Reorder slide | pptx_edit.py deck.pptx --move-slide FROM TO |
| Slide background | pptx_edit.py deck.pptx --set-background N RRGGBB |
| Hyperlink runs | pptx_edit.py deck.pptx --hyperlink N TEXT URL |
| Slide number on | pptx_edit.py deck.pptx --enable-slide-number N |
| Footer text | pptx_edit.py deck.pptx --set-footer N TEXT |
| Set notes | pptx_edit.py deck.pptx --set-notes N TEXT |
| Append notes | pptx_edit.py deck.pptx --append-notes N TEXT |
| Fill template | pptx_from_template.py tpl.pptx out.pptx --values v.json |
| Render slide PNGs | pptx_render.py deck.pptx --outdir DIR |
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, link URL for a hyperlink),
background (solid hex), footer (text; enables the layout's footer
placeholder), slide_number (true; enables the layout's slide-number
placeholder), 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).
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.
pptx_edit.py combines operations in one pass; use --output to keep the
original. Text replacement scans slide shapes, table cells, and notes.
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). --duplicate-slide N appends an independent deep copy of slide N:
shape XML plus image/media/hyperlink relationships are cloned and rIds
remapped, so editing the copy never touches the original. Chart slides
are refused (see Pitfalls). --set-notes/--append-notes edit speaker
notes; --set-background, --hyperlink, --enable-slide-number, and
--set-footer handle deck polish.
Chart updates take a JSON spec via --chart-data. Full replace:
{"slide": 0, "chart": 0, "categories": [...], "series": {...}}. For
surgical edits, pass "ops" instead — a list of
{"op": "update_series", "name": ..., "values": [...]},
add_series, remove_series, rename_category (from/to or
index), and set_title. python-pptx can only swap a chart's entire
dataset (replace_data), so ops are implemented as read-existing →
modify → replace; the per-part UX is a wrapper, and any chart data not
expressible as categories + numeric series will be normalized by the
round-trip.
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.
pptx_render.py deck.pptx --outdir ./render converts the deck to PDF
with soffice --headless and splits it into one PNG per slide with
pdftoppm (or pdftocairo). Output JSON lists the PNG paths — review
each with vision_analyze. When either tool is missing the script exits
0 with {"rendered": false, "missing": [...]} and guidance; fall back to
the JSON outline from pptx_read.py, which verifies content and
structure, just not visuals.
If LibreOffice is installed, export the finished deck to PDF directly:
soffice --headless --convert-to pdf --outdir ./out deck.pptxThe output lands at ./out/deck.pdf. Fonts not installed on the host are
substituted, so render-verify (Procedure step 5) before shipping the PDF.
There is no offline pure-Python .pptx→PDF path; if soffice is absent,
say so rather than approximating.
--replace-text first merges adjacent
runs whose formatting is identical, so matches split across such runs
are replaced with formatting fully preserved. Only when a match spans
genuinely differently-formatted runs is the paragraph rewritten with
the first run's formatting — verify those slides after replacement.--duplicate-slide refuses chart slides cleanly instead
of corrupting the deck. Rebuild the chart on a new slide instead.
External-hyperlink and image/media rels are carried over; layout and
notes rels are recreated fresh."ops" round-trips existing plot data through replace_data, and
changing chart type is not possible.--move-slide manipulates <p:sldIdLst> directly; safe for ordinary
decks but re-read the deck afterward to confirm.--set-footer fails
with a clear message (add a textbox instead).--hyperlink links every run
containing the given text on that slide.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.encoding="utf-8" when writing spec files; tokens like
{{city}} may be filled with non-ASCII values.pptx_read.py OUT.pptx --outline and check
slide count, texts, tables, notes, and chart values match intent.--images DIR then file-size check confirms pictures embedded.pptx_render.py deck.pptx --outdir ./render
and review each PNG with vision_analyze — this catches overlapping
shapes, truncated text, and color problems the outline cannot. If the
render tools are missing, the script says so; rely on the outline.python -m pytest tests/ -q (requires python-pptx + pytest).© NousResearch, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 7 other files (scripts) in skills/productivity/powerpoint of NousResearch/hermes-agent.
Open the folder on GitHubat commit 2966cb6
Powerpoint next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Powerpoint this skillNousResearch/hermes-agent | 252k | — | ~2.7k | Automated safety check: Pass | MIT | |
| PPTXguyi-a/pi-ling | 106 | — | ~2.3k | Automated safety check: Pass | Proprietary | |
| PPTXnexus-research-lab/nexus | 150 | — | ~484 | Automated safety check: Pass | Apache-2.0 | |
| PPTXholon-run/holon | 153 | — | ~1k | Automated safety check: Pass | Apache-2.0 | |
| PPTXHybridAIOne/hybridclaw | 158 | — | ~1k | Automated safety check: Pass | MIT | |
| PowerPoint Decksanthropics/skills | 180k | 7 repos | ~5.2k | Automated safety check: Pass | Proprietary |
guyi-a/pi-ling
PowerPoint 幻灯片(.pptx / .potx)的所有操作:从零生成(pptxgenjs Node 库)、基于模板编辑(unpack XML → 改 → clean → pack)、格式转化(pptx → PDF / 图片、.ppt → .pptx)、读取分析。触发场景:用户说"做份 PPT" / "生成幻灯片" / "演讲 slide" / "培训材料" / "项目汇报" /…
nexus-research-lab/nexus
只要 PowerPoint 演示文稿或模板(.pptx、.potx、旧版 .ppt)是任务的输入或输出,或者需要 被打开、读取、创建、修改,就使用本 Skill。用户提到幻灯片、deck、演示文稿或 PowerPoint 文件时也应触发,包括内容提取、模板套用、页面增删、图表、图片和演讲者备注。
holon-run/holon
Create, inspect, edit, render, and validate PowerPoint presentations with local open-source tools while preserving source files and reporting fidelity limits.
HybridAIOne/hybridclaw
Create and edit .pptx presentations safely, export thumbnails for QA, and build polished decks with pptxgenjs plus OOXML editing.
anthropics/skills
Creates, edits, reads and validates .pptx and .potx files, using pptxgenjs for new decks and direct XML edits for existing ones, with helper scripts for thumbnails and checks.
agentscope-ai/QwenPaw
Chinese-language guide for reading, editing and building PowerPoint decks: text extraction, template editing and from-scratch creation with pptxgenjs.
NousResearch/hermes-agent
Gmail, Calendar, Drive, Docs, Sheets via gws CLI or Python. An agent skill from NousResearch/hermes-agent.
NousResearch/hermes-agent
Produces a presenter-led video from a topic or script plus one authorized presenter image, with captions, lip-sync checks and acceptance reports.
NousResearch/hermes-agent
Creates, reads, edits and templates Word .docx files with python-docx scripts, including tracked changes, comments, tables of contents and health checks.
NousResearch/hermes-agent
Attaches a numbered, URL-backed citation to every outside fact in an answer or document, rejecting quotes that aren't real.
NousResearch/hermes-agent
PDF files: create, read, merge, fill, OCR, edit text. An agent skill from NousResearch/hermes-agent.
NousResearch/hermes-agent
Premium scroll-driven landing pages; scroll = timeline. An agent skill from NousResearch/hermes-agent.
Categories
Create, read, edit .pptx decks with python-pptx. An agent skill from NousResearch/hermes-agent. Powerpoint is an agent skill from NousResearch/hermes-agent.pptx decks with python-pptx.
Powerpoint fits situations like: tasks that involve PowerPoint presentations.
Run `npx skills add NousResearch/hermes-agent --skill powerpoint -a claude-code`. Or copy the skill folder (skills/productivity/powerpoint in NousResearch/hermes-agent) into .claude/skills/powerpoint in your project. Claude Code loads it when a task matches its description.
Run `npx skills add NousResearch/hermes-agent --skill powerpoint -a codex`. Or copy the skill folder (skills/productivity/powerpoint in NousResearch/hermes-agent) into .agents/skills/powerpoint in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add NousResearch/hermes-agent --skill powerpoint -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/powerpoint, .gemini/skills/powerpoint, .github/skills/powerpoint and .opencode/skills/powerpoint in your project.
Going by SKILL.md and its folder, Powerpoint needs Python for the scripts in its folder and the command-line tools its instructions call (python, soffice and pip). Our summary lists: Python 3.
SKILL.md contains no URLs. Its commands use pip, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Powerpoint is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Powerpoint: PPTX (guyi-a/pi-ling, 106 stars), PPTX (nexus-research-lab/nexus, 150 stars), PPTX (holon-run/holon, 153 stars) and PPTX (HybridAIOne/hybridclaw, 158 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
NousResearch (a GitHub organization) maintains it in NousResearch/hermes-agent, which has 251,991 GitHub stars. The repository holds 32 skills in this directory. The repository was last updated on October 8, 2026.
Source: NousResearch/hermes-agent on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.