Slides
fcakyon/claude-codex-settings
Create and edit presentation slide decks (.pptx) with PptxGenJS, bundled layout helpers, and render/validation utilities.
Triggers whenever the user asks to do anything with PowerPoint slides (.pptx): read, summarize, extract, edit, create, or convert.
$ npx skills add OpenLoaf/OpenLoaf --skill pptx-skill -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install OpenLoaf/OpenLoaf pptx-skill --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/OpenLoaf/OpenLoaf.git skills-src && mkdir -p .claude/skills && cp -r skills-src/apps/server/src/ai/builtin-skills/pptx/en .claude/skills/pptx-skill && 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 "pptx-skill" agent skill from https://github.com/OpenLoaf/OpenLoaf/tree/main/apps/server/src/ai/builtin-skills/pptx/en into .claude/skills/pptx-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pptx-skill", 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/OpenLoaf/OpenLoaf/tree/main/apps/server/src/ai/builtin-skills/pptx/enType 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 OpenLoaf/OpenLoaf --skill pptx-skill -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install OpenLoaf/OpenLoaf pptx-skill --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OpenLoaf/OpenLoaf.git skills-src && mkdir -p .agents/skills && cp -r skills-src/apps/server/src/ai/builtin-skills/pptx/en .agents/skills/pptx-skill && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "pptx-skill" agent skill from https://github.com/OpenLoaf/OpenLoaf/tree/main/apps/server/src/ai/builtin-skills/pptx/en into .agents/skills/pptx-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pptx-skill", 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 OpenLoaf/OpenLoaf --skill pptx-skill -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install OpenLoaf/OpenLoaf pptx-skill --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OpenLoaf/OpenLoaf.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/apps/server/src/ai/builtin-skills/pptx/en .cursor/skills/pptx-skill && 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 "pptx-skill" agent skill from https://github.com/OpenLoaf/OpenLoaf/tree/main/apps/server/src/ai/builtin-skills/pptx/en into .cursor/skills/pptx-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pptx-skill", 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/OpenLoaf/OpenLoaf.git --path apps/server/src/ai/builtin-skills/pptx/en--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 OpenLoaf/OpenLoaf --skill pptx-skill -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install OpenLoaf/OpenLoaf pptx-skill --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OpenLoaf/OpenLoaf.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/apps/server/src/ai/builtin-skills/pptx/en .gemini/skills/pptx-skill && 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 "pptx-skill" agent skill from https://github.com/OpenLoaf/OpenLoaf/tree/main/apps/server/src/ai/builtin-skills/pptx/en into .gemini/skills/pptx-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pptx-skill", 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 OpenLoaf/OpenLoaf pptx-skillInstalls 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 OpenLoaf/OpenLoaf --skill pptx-skill -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/OpenLoaf/OpenLoaf.git skills-src && mkdir -p .github/skills && cp -r skills-src/apps/server/src/ai/builtin-skills/pptx/en .github/skills/pptx-skill && 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 "pptx-skill" agent skill from https://github.com/OpenLoaf/OpenLoaf/tree/main/apps/server/src/ai/builtin-skills/pptx/en into .github/skills/pptx-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pptx-skill", 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 OpenLoaf/OpenLoaf --skill pptx-skill -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install OpenLoaf/OpenLoaf pptx-skill --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OpenLoaf/OpenLoaf.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/apps/server/src/ai/builtin-skills/pptx/en .opencode/skills/pptx-skill && 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 "pptx-skill" agent skill from https://github.com/OpenLoaf/OpenLoaf/tree/main/apps/server/src/ai/builtin-skills/pptx/en into .opencode/skills/pptx-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pptx-skill", 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.
pptx-skillTriggers whenever the user asks to do anything with PowerPoint slides (.pptx): read, summarize, extract, edit, create, or convert.
PPTX Skill is an agent skill from OpenLoaf/OpenLoaf. Triggers whenever the user asks to do anything with PowerPoint slides (.pptx): read, summarize, extract, edit, create, or convert. Key insight: PPTX files are visually structured — charts, diagrams, and layouts cannot be reliably captured by text extraction alone. The correct approach for understanding slide content is to render the target slide(s) as PNG images (via PptxInspect render) and pass them to a vision model (CloudImageUnderstand), not to rely solely on text/outline extraction. Use text tools (outline /…
Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Documents & Office, covering PowerPoint presentations and Slides and decks. It works with Microsoft PowerPoint and python-pptx. The repository describes itself as: 🍞Open-source, local-first AI workspace with Agents, multi-model chat (GPT/Claude/Gemini/DeepSeek), Notion-like docs, AI image & video generation, email, calendar & terminal…. The licence is AGPL-3.0.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit f7eccf6. 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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are javascript).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
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.
PPTX Skill loads about 2.9k tokens when it runs. Until then it costs about 208 tokens; SKILL.md has 729 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); files beside SKILL.md are not scanned.
The full file from OpenLoaf/OpenLoaf at commit f7eccf6, republished under its AGPL-3.0 licence (© OpenLoaf). 729 words, ~2,927 tokens.
.claude/skills/pptx-skill/SKILL.md (or your agent's skills folder).Read with PptxInspect; write / edit / create with JsSandbox running Node scripts (preferred library: pptxgenjs); format conversion with DocConvert; visual OCR with CloudImageUnderstand.
| Tool | Responsibility | Read-only |
|---|---|---|
PptxInspect | Read: summary / outline / text / notes / tables / shapes / images / xml / render | Yes |
JsSandbox | All write: create / edit / generate from scratch — use pptxgenjs for new decks, adm-zip to patch existing XML | No |
DocConvert | pptx ↔ pdf / html / md | No |
CloudImageUnderstand | OCR / chart understanding on rendered slides | No |
Loading (two steps):
LoadSkill pptx-skillToolSearch(query: "select:PptxInspect,JsSandbox,DocConvert")
Read/DocPreviewon a .pptx return only Markdown-level body text (losing shape coordinates, speaker notes, table structure, and XML detail). Any task that involves analyzing, summarizing, editing, or reviewing a deck goes throughPptxInspect+JsSandbox.
PptxInspect(summary)PptxInspect { action: "summary", filePath: "…" }Returns slideCount / layoutCount / masterCount / hasNotes / hasCharts / hasSmartArt / creator / modifiedAt / fileSize plus a suggestedNextTool hint. Decision table:
| Situation | Next step |
|---|---|
| Don't know the deck's shape | summary → outline to scan titles |
| Need slide content | text (body text) / notes (speaker notes) |
| Need to locate anomalous visuals | shapes to get the shape tree, then render on suspicious slides |
| Need visual verification | render with slideNumbers filter |
| Need to export embedded images | images with extractImages=true |
| Need to plan XML-level edits | xml with partName for the target part |
render uses node-pptx-png (skia-canvas-based, pure Node) — no LibreOffice dependency.
Known limitations:
DocConvert(from="pptx", to="pdf") + PdfInspect(render) (LibreOffice rendering chain), or use render + CloudImageUnderstand for OCR.JsSandbox + pptxgenjsimport pptxgen from 'pptxgenjs'
const pres = new pptxgen()
// Standard PowerPoint widescreen is 13.333 × 7.5 inches; in pptxgenjs that is LAYOUT_WIDE.
// Do not pair 13.33-based coordinates with LAYOUT_16x9 (10 × 5.625 inches),
// or shapes/text will be placed outside the slide bounds.
pres.layout = 'LAYOUT_WIDE'
pres.defineSlideMaster({
title: 'MAIN',
background: { color: 'FFFFFF' },
objects: [
{ rect: { x: 0, y: 7.0, w: 13.33, h: 0.5, fill: { color: '1F3A8A' } } },
{ text: {
text: 'OpenLoaf · 2026 Q1 Business Review',
options: { x: 0.5, y: 7.05, w: 12, h: 0.4, fontSize: 10, color: 'FFFFFF' },
}},
],
})
// Cover slide
const s1 = pres.addSlide({ masterName: 'MAIN' })
s1.addText('2026 Q1 Business Review', {
x: 0.5, y: 2.2, w: 12.3, h: 1.5,
fontSize: 44, bold: true, color: '1F3A8A',
fontFace: 'Calibri',
})
s1.addText('Product Team · John Smith 2026-04-20', {
x: 0.5, y: 4.0, w: 12.3, h: 0.6,
fontSize: 18, color: '475569', fontFace: 'Calibri',
})
// Key metrics
const s2 = pres.addSlide({ masterName: 'MAIN' })
s2.addText('Key Metrics', {
x: 0.5, y: 0.4, w: 12.3, h: 0.8,
fontSize: 28, bold: true, color: '1F3A8A', fontFace: 'Calibri',
})
const kpis = [
{ label: 'Revenue', value: '+32%', color: '16A34A' },
{ label: 'Paying Users', value: '12k', color: '2563EB' },
{ label: 'NPS', value: '42→51', color: '9333EA' },
]
kpis.forEach((k, i) => {
const x = 0.5 + i * 4.3
s2.addShape(pres.ShapeType.roundRect, {
x, y: 2.0, w: 4.0, h: 3.0, fill: { color: 'F1F5F9' }, line: { color: 'CBD5E1' },
})
s2.addText(k.value, {
x, y: 2.4, w: 4.0, h: 1.0, align: 'center',
fontSize: 40, bold: true, color: k.color, fontFace: 'Calibri',
})
s2.addText(k.label, {
x, y: 3.6, w: 4.0, h: 0.6, align: 'center',
fontSize: 18, color: '475569', fontFace: 'Calibri',
})
})
s2.addNotes('All three Q1 KPIs significantly exceeded targets. Paying users up 46% QoQ.')
// Bar chart slide
const s3 = pres.addSlide({ masterName: 'MAIN' })
s3.addText('Monthly Revenue', {
x: 0.5, y: 0.4, w: 12.3, h: 0.8,
fontSize: 28, bold: true, color: '1F3A8A', fontFace: 'Calibri',
})
s3.addChart(pres.ChartType.bar, [{
name: 'Revenue ($k)',
labels: ['Jan', 'Feb', 'Mar'],
values: [820, 1050, 1340],
}], {
x: 1.0, y: 1.5, w: 11.3, h: 5.5,
showTitle: false, showLegend: true, showValue: true,
})
// Q&A slide
const s4 = pres.addSlide({ masterName: 'MAIN' })
s4.addText('Q & A', {
x: 0.5, y: 3.0, w: 12.3, h: 1.5, align: 'center',
fontSize: 60, bold: true, color: '1F3A8A', fontFace: 'Calibri',
})
await pres.writeFile({ fileName: 'q1_review.pptx' })
console.log('q1_review.pptx written')Key points:
pptxgenjsAPI is fully object-based ({x, y, w, h, fontSize, ...}) — no JSON string concatenation.- Lock the slide coordinate system before placing objects:
LAYOUT_WIDE=13.333 × 7.5(standard widescreen);LAYOUT_16x9=10 × 5.625. If your coordinates assume13.33, useLAYOUT_WIDEor a custom layout with that exact size.- CJK content requires
fontFace(e.g.'Microsoft YaHei'/'Noto Sans CJK SC'); without it, the default Latin font may substitute or corrupt CJK characters.addChartnatively supports bar / line / pie / doughnut; for "image-feel" charts, render a PNG withchartjs-node-canvasthenaddImageit.
import pptxgen from 'pptxgenjs'
const items = [
{ title: 'Scene 1: The Arrival', desc: 'City aerial opening → multi-angle road shots → pull into market' },
{ title: 'Scene 2: Loading Power', desc: 'Owner greeting → full-load unboxing → trunk 87% opening rate 1831mm' },
{ title: 'Scene 3: Superior Chassis', desc: '186mm ground clearance + fold-flat cargo + fixed tie-down anchors' },
]
const pres = new pptxgen()
pres.layout = 'LAYOUT_WIDE'
const cover = pres.addSlide()
cover.addText('V6 Commercial — Shot List', {
x: 0.5, y: 2.8, w: 12.3, h: 1.3, align: 'center',
fontSize: 40, bold: true, color: '0F172A', fontFace: 'Calibri',
})
items.forEach((it, i) => {
const s = pres.addSlide()
s.addText(`${i + 1}. ${it.title}`, {
x: 0.5, y: 0.5, w: 12.3, h: 0.8,
fontSize: 26, bold: true, color: '1F3A8A', fontFace: 'Calibri',
})
s.addText(it.desc, {
x: 0.5, y: 1.7, w: 12.3, h: 3.5,
fontSize: 20, color: '334155', fontFace: 'Calibri',
valign: 'top',
})
})
await pres.writeFile({ fileName: 'storyboard.pptx' })
console.log(`storyboard.pptx — ${items.length + 1} slides`)pptxgenjs is generation-only and cannot read existing files. To edit an old deck, patch the XML with adm-zip:
import AdmZip from 'adm-zip'
import fs from 'node:fs/promises'
const zip = new AdmZip(await fs.readFile('deck.pptx'))
const target = 'ppt/slides/slide3.xml'
let xml = zip.readAsText(target)
// Simple replacement of the first a:t text node
xml = xml.replace(/<a:t>[^<]*<\/a:t>/, '<a:t>New Title</a:t>')
zip.updateFile(target, Buffer.from(xml, 'utf-8'))
await fs.writeFile('deck.pptx', zip.toBuffer())
console.log('slide 3 title updated')This is a hard XML patch and will fail if the run is split across multiple
a:relements. The reliable approach is to regenerate the whole deck withpptxgenjs.
When the user asks "what's on slide N?" / "what does this chart mean?" / "how does slide 5 look?" — anything that needs visual comprehension — branch on the current model's native-inputs (see the <system-tag type="msg-context"> at the end of each user turn):
Branch A — vision-capable model (native-inputs includes image): render to PNG, then Read the image path. The runtime injects the image as a native part via a follow-up user message at the next step, so you observe the pixels directly.
PptxInspect { action: "render", filePath: "…", slideNumbers: [5], scale: 1.5 }
→ result.data.pages[0].imagePath = "<asset_dir>/slide5-scale1.5.png"
Read { file_path: "<pages[0].imagePath>" }
→ runtime injects the image as a user-role image part; describe what you seeBranch B — non-vision model (native-inputs does not include image): use CloudImageUnderstand (requires LoadSkill cloud-media-skill).
CloudImageUnderstand {
image: { path: "<pages[0].imagePath>" },
prompt: "Describe this slide in detail: title, bullet points, chart data (if any), layout. If the page has no chart or data table, say 'no data chart on this page' explicitly."
}⚠️ Anti-hallucination hard rule (both branches): before writing your reply, ask "does every number, region, name, or axis value I'm about to mention come from an actual visual channel?" — Branch A requires the image part the runtime just injected; Branch B requires a
CloudImageUnderstandresponse. When neither produced observable content, do NOT invent anything from the filename, slide title, or surrounding text — reply "image content not retrieved, please confirm" or re-dispatch through the correct branch.
Batch (visual summary of a whole deck): omit slideNumbers to render all PNGs, then loop the matching branch per slide. For decks >20 slides, run outline first and confirm with the user before rendering.
DocConvert(from="pptx", to="pdf", sourcePath="…") // for distribution / high-fidelity rendering via LibreOffice
DocConvert(from="pptx", to="md", sourcePath="…") // extract body text / generate summaries| Symptom | Cause | Fix |
|---|---|---|
PPT_LEGACY_FORMAT | Binary .ppt format | DocConvert(from="ppt", to="pptx") to convert first |
| CJK shows as squares / replaced by letters | fontFace not set | Pass fontFace: 'Microsoft YaHei' on every addText / addChart |
render result: SmartArt distorted | node-pptx-png does not support SmartArt | Fallback to DocConvert(to="pdf") + PdfInspect(render) |
writeFile output can't be opened | Path traversal / permission issue | Use a relative path — files land in the session cwd (asset dir) |
| Generating many slides is slow | Repeated addText calls per slide | Put common elements in defineSlideMaster; only put differences on each slide |
To patch a script: JsSandbox(action="edit-and-run", scriptPath=…, edits=[…]) — fewer tokens transferred.
© OpenLoaf, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in apps/server/src/ai/builtin-skills/pptx/en of OpenLoaf/OpenLoaf.
Open the folder on GitHubat commit f7eccf6
PPTX Skill 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 |
|---|---|---|---|---|---|---|
| PPTX Skill this skillOpenLoaf/OpenLoaf | 107 | — | ~2.9k | Automated safety check: Pass | AGPL-3.0 | |
| Slidesfcakyon/claude-codex-settings | 1.2k | 1 repos | ~1.1k | Automated safety check: Pass | MIT | |
| Powerpoint SlidesNoi1r/powerpoint-skill | 123 | — | ~12k | Automated safety check: Notes | MIT | |
| PPTX HTML Fidelity Auditsanqiufong/slides-from-anything | 132 | 1 repos | ~3.5k | Automated safety check: Pass | Apache-2.0 | |
| Slide Making Skillhaojing8312/WorkClaw | 141 | 1 repos | ~1.8k | Automated safety check: Pass | Apache-2.0 | |
| Ppt Generationpeintune/runjam | 228 | — | ~7.1k | Automated safety check: Pass | MIT |
fcakyon/claude-codex-settings
Create and edit presentation slide decks (.pptx) with PptxGenJS, bundled layout helpers, and render/validation utilities.
Noi1r/powerpoint-skill
Create visually rich PowerPoint (.pptx) presentations from academic papers, research notes, or any content the user wants in slide format.
sanqiufong/slides-from-anything
Audit a python-pptx export against its source HTML deck, identify layout/content drift (footer overflow, cropped content, missing italic/em, lost styling, off-rhythm spacing), and re-export with…
haojing8312/WorkClaw
Implement single-slide PowerPoint pages with PptxGenJS. An agent skill from haojing8312/WorkClaw.
peintune/runjam
A skill your agent uses when the user requests to generate, create, or make presentations (PPT/PPTX).
ymx10086/ResearchClaw
Create, edit, and analyze PowerPoint presentations — research talks, conference presentations, lecture slides, and poster summaries.
OpenLoaf/OpenLoaf
Triggers when the master Agent faces a multi-step complex task and is deciding whether / how to outsource sub-tasks to built-in subagents (browser / doc-editor / data-analyst / extractor /…
OpenLoaf/OpenLoaf
Triggered when the user asks for page-level interaction with a specific webpage: login, form filling, button clicks, pagination scraping, screenshots, downloading page images, handling CAPTCHAs or…
OpenLoaf/OpenLoaf
Triggered when the user wants lifecycle management of OpenLoaf canvases / whiteboards: create, open, filter, duplicate, delete, rename, or change ownership.
OpenLoaf/OpenLoaf
Reads, edits, converts and reviews Word documents through three dedicated tools, covering tracked changes, comments, tables, images and format conversion.
OpenLoaf/OpenLoaf
Handles a real email account through query and mutate tools: check the inbox, read, search, reply, forward, compose and organize, with sending always confirmed first.
OpenLoaf/OpenLoaf
Guides an agent to operate native macOS apps by surveying an app first, acting through intents, menus or keystrokes, and verifying each step, in OpenLoaf Desktop only.
Works with
Categories
Triggers whenever the user asks to do anything with PowerPoint slides (.pptx): read, summarize, extract, edit, create, or convert. PPTX Skill is an agent skill from OpenLoaf/OpenLoaf.pptx): read, summarize, extract, edit, create, or convert.
PPTX Skill fits situations like: ever the user asks to do anything with PowerPoint slides (.pptx): read; mentions a .pptx file.
Run `npx skills add OpenLoaf/OpenLoaf --skill pptx-skill -a claude-code`. Or copy the skill folder (apps/server/src/ai/builtin-skills/pptx/en in OpenLoaf/OpenLoaf) into .claude/skills/pptx-skill in your project. Claude Code loads it when a task matches its description.
Run `npx skills add OpenLoaf/OpenLoaf --skill pptx-skill -a codex`. Or copy the skill folder (apps/server/src/ai/builtin-skills/pptx/en in OpenLoaf/OpenLoaf) into .agents/skills/pptx-skill 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 OpenLoaf/OpenLoaf --skill pptx-skill -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pptx-skill, .gemini/skills/pptx-skill, .github/skills/pptx-skill and .opencode/skills/pptx-skill in your project.
SKILL.md names no scripts, command-line tools or credentials: PPTX Skill is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. 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. Review the folder before installing.
PPTX Skill is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.9k tokens (SKILL.md is roughly 12k 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 PPTX Skill: Slides (fcakyon/claude-codex-settings, 1.2k stars), Powerpoint Slides (Noi1r/powerpoint-skill, 123 stars), PPTX HTML Fidelity Audit (sanqiufong/slides-from-anything, 132 stars) and Slide Making Skill (haojing8312/WorkClaw, 141 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
OpenLoaf (a GitHub organization) maintains it in OpenLoaf/OpenLoaf, which has 107 GitHub stars. The repository holds 34 skills in this directory. The repository was last updated on May 14, 2026.
Source: OpenLoaf/OpenLoaf on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.