/pptx-generator
Generate, edit, and read PowerPoint presentations. Create from scratch with PptxGenJS (cover, TOC, content, section divider, summary slides), edit existing PPTX via XML workflows, or extract text with markitdown. Triggers: PPT, PPTX, PowerPoint, presentation, slide, deck, slides.
Claude Code
$ npx -y skills add poco-ai/poco-claw --skill pptx-generator --agent claude-code
Codex
$ npx skills add poco-ai/poco-claw --skill pptx-generator -a codex -y
Cursor
$ npx skills add poco-ai/poco-claw --skill pptx-generator -a cursor -y
Gemini CLI
$ npx skills add poco-ai/poco-claw --skill pptx-generator -a gemini-cli -y
GitHub Copilot
$ npx skills add poco-ai/poco-claw --skill pptx-generator -a github-copilot -y
OpenCode
$ npx skills add poco-ai/poco-claw --skill pptx-generator -a opencode -y
Windsurf
$ npx skills add poco-ai/poco-claw --skill pptx-generator -a windsurf -y
SKILL.md
pptx-generator.SKILL.mdname: pptx-generator
description: "Generate, edit, and read PowerPoint presentations. Create from scratch with PptxGenJS (cover, TOC, content, section divider, summary slides), edit existing PPTX via XML workflows, or extract text with markitdown. Triggers: PPT, PPTX, PowerPoint, presentation, slide, deck, slides."
license: MIT
metadata:
version: "1.0"
category: productivity
sources:
- https://gitbrent.github.io/PptxGenJS/
- https://github.com/microsoft/markitdownPPTX Generator & Editor
Overview
This skill handles all PowerPoint tasks: reading/analyzing existing presentations, editing template-based decks via XML manipulation, and creating presentations from scratch using PptxGenJS. It includes a complete design system (color palettes, fonts, style recipes) and detailed guidance for every slide type.
Quick Reference
| Task | Approach | |------|----------| | Read/analyze content | `python -m markitdown presentation.pptx` | | Edit or create from template | See [Editing Presentations](references/editing.md) | | Create from scratch | See [Creating from Scratch](#creating-from-scratch-workflow) below |
| Item | Value | |------|-------| | **Dimensions** | 10" x 5.625" (LAYOUT_16x9) | | **Colors** | 6-char hex without # (e.g., `"FF0000"`) | | **English font** | Arial (default), or approved alternatives | | **Chinese font** | Microsoft YaHei | | **Page badge position** | x: 9.3", y: 5.1" | | **Theme keys** | `primary`, `secondary`, `accent`, `light`, `bg` | | **Shapes** | RECTANGLE, OVAL, LINE, ROUNDED_RECTANGLE | | **Charts** | BAR, LINE, PIE, DOUGHNUT, SCATTER, BUBBLE, RADAR |
Reference Files
| File | Contents | |------|----------| | [slide-types.md](references/slide-types.md) | 5 slide page types (Cover, TOC, Section Divider, Content, Summary) + additional layout patterns | | [design-system.md](references/design-system.md) | Color palettes, font reference, style recipes (Sharp/Soft/Rounded/Pill), typography & spacing | | [editing.md](references/editing.md) | Template-based editing workflow, XML manipulation, formatting rules, common pitfalls | | [pitfalls.md](references/pitfalls.md) | QA process, common mistakes, critical PptxGenJS pitfalls | | [pptxgenjs.md](references/pptxgenjs.md) | Complete PptxGenJS API reference |
---
Reading Content
# Text extraction
python -m markitdown presentation.pptx
---
Creating from Scratch — Workflow
**Use when no template or reference presentation is available.**
Step 1: Research & Requirements
Search to understand user requirements — topic, audience, purpose, tone, content depth.
Step 2: Select Color Palette & Fonts
Use the [Color Palette Reference](references/design-system.md#color-palette-reference) to select a palette matching the topic and audience. Use the [Font Reference](references/design-system.md#font-reference) to choose a font pairing.
Step 3: Select Design Style
Use the [Style Recipes](references/design-system.md#style-recipes) to choose a visual style (Sharp, Soft, Rounded, or Pill) matching the presentation tone.
Step 4: Plan Slide Outline
Classify **every slide** as exactly one of the [5 page types](references/slide-types.md). Plan the content and layout for each slide. Ensure visual variety — do NOT repeat the same layout across slides.
Step 5: Generate Slide JS Files
Create one JS file per slide in `slides/` directory. Each file must export a synchronous `createSlide(pres, theme)` function. Follow the [Slide Output Format](#slide-output-format) and the type-specific guidance in [slide-types.md](references/slide-types.md). Generate up to 5 slides concurrently using subagents if available.
**Tell each subagent:** 1. File naming: `slides/slide-01.js`, `slides/slide-02.js`, etc. 2. Images go in: `slides/imgs/` 3. Final PPTX goes in: `slides/output/` 4. Dimensions: 10" x 5.625" (LAYOUT_16x9) 5. Fonts: Chinese = Microsoft YaHei, English = Arial (or approved alternative) 6. Colors: 6-char hex without # (e.g. `"FF0000"`) 7. Must use the theme object contract (see [Theme Object Contract](#theme-object-contract)) 8. Must follow the [PptxGenJS API reference](references/pptxgenjs.md)
Step 6: Compile into Final PPTX
Create `slides/compile.js` to combine all slide modules:
// slides/compile.js
const pptxgen = require('pptxgenjs');
const pres = new pptxgen();
pres.layout = 'LAYOUT_16x9';
const theme = {
primary: "22223b", // dark color for backgrounds/text
secondary: "4a4e69", // secondary accent
accent: "9a8c98", // highlight color
light: "c9ada7", // light accent
bg: "f2e9e4" // background color
};
for (let i = 1; i <= 12; i++) { // adjust count as needed
const num = String(i).padStart(2, '0');
const slideModule = require(`./slide-${num}.js`);
slideModule.createSlide(pres, theme);
}
pres.writeFile({ fileName: './output/presentation.pptx' });Run with: `cd slides && node compile.js`
Step 7: QA (Required)
See [QA Process](references/pitfalls.md#qa-process).
Output Structure
slides/
├── slide-01.js # Slide modules
├── slide-02.js
├── ...
├── imgs/ # Images used in slides
└── output/ # Final artifacts
└── presentation.pptx---
Slide Output Format
Each slide is a **complete, runnable JS file**:
// slide-01.js
const pptxgen = require("pptxgenjs");
const slideConfig = {
type: 'cover',
index: 1,
title: 'Presentation Title'
};
// MUST be synchronous (not async)
function createSlide(pres, theme) {
const slide = pres.addSlide();
slide.background = { color: theme.bg };
slide.addText(slideConfig.title, {
x: 0.5, y: 2, w: 9, h: 1.2,
fontSize: 48, fontFace: "Arial",
color: theme.primary, bold: true, align: "center"
});
return slide;
}
// Standalone preview - use slide-specific filename
if (require.main === module) {
const pres = new pptxgen();
pres.layout = 'LAYOUT_16x9';
const theme = {Read more
name: pptx-generator
description: "Generate, edit, and read PowerPoint presentations. Create from scratch with PptxGenJS (cover, TOC, content, section divider, summary slides), edit existing PPTX via XML workflows, or extract text with markitdown. Triggers: PPT, PPTX, PowerPoint, presentation, slide, deck, slides."
license: MIT
metadata:
version: "1.0"
category: productivity
sources:
- https://gitbrent.github.io/PptxGenJS/
- https://github.com/microsoft/markitdownPPTX Generator & Editor
Overview
This skill handles all PowerPoint tasks: reading/analyzing existing presentations, editing template-based decks via XML manipulation, and creating presentations from scratch using PptxGenJS. It includes a complete design system (color palettes, fonts, style recipes) and detailed guidance for every slide type.
Quick Reference
| Task | Approach | |------|----------| | Read/analyze content | `python -m markitdown presentation.pptx` | | Edit or create from template | See [Editing Presentations](references/editing.md) | | Create from scratch | See [Creating from Scratch](#creating-from-scratch-workflow) below |
| Item | Value | |------|-------| | **Dimensions** | 10" x 5.625" (LAYOUT_16x9) | | **Colors** | 6-char hex without # (e.g., `"FF0000"`) | | **English font** | Arial (default), or approved alternatives | | **Chinese font** | Microsoft YaHei | | **Page badge position** | x: 9.3", y: 5.1" | | **Theme keys** | `primary`, `secondary`, `accent`, `light`, `bg` | | **Shapes** | RECTANGLE, OVAL, LINE, ROUNDED_RECTANGLE | | **Charts** | BAR, LINE, PIE, DOUGHNUT, SCATTER, BUBBLE, RADAR |
Reference Files
| File | Contents | |------|----------| | [slide-types.md](references/slide-types.md) | 5 slide page types (Cover, TOC, Section Divider, Content, Summary) + additional layout patterns | | [design-system.md](references/design-system.md) | Color palettes, font reference, style recipes (Sharp/Soft/Rounded/Pill), typography & spacing | | [editing.md](references/editing.md) | Template-based editing workflow, XML manipulation, formatting rules, common pitfalls | | [pitfalls.md](references/pitfalls.md) | QA process, common mistakes, critical PptxGenJS pitfalls | | [pptxgenjs.md](references/pptxgenjs.md) | Complete PptxGenJS API reference |
---
Reading Content
# Text extraction python -m markitdown presentation.pptx
---
Creating from Scratch — Workflow
**Use when no template or reference presentation is available.**
Step 1: Research & Requirements
Search to understand user requirements — topic, audience, purpose, tone, content depth.
Step 2: Select Color Palette & Fonts
Use the [Color Palette Reference](references/design-system.md#color-palette-reference) to select a palette matching the topic and audience. Use the [Font Reference](references/design-system.md#font-reference) to choose a font pairing.
Step 3: Select Design Style
Use the [Style Recipes](references/design-system.md#style-recipes) to choose a visual style (Sharp, Soft, Rounded, or Pill) matching the presentation tone.
Step 4: Plan Slide Outline
Classify **every slide** as exactly one of the [5 page types](references/slide-types.md). Plan the content and layout for each slide. Ensure visual variety — do NOT repeat the same layout across slides.
Step 5: Generate Slide JS Files
Create one JS file per slide in `slides/` directory. Each file must export a synchronous `createSlide(pres, theme)` function. Follow the [Slide Output Format](#slide-output-format) and the type-specific guidance in [slide-types.md](references/slide-types.md). Generate up to 5 slides concurrently using subagents if available.
**Tell each subagent:** 1. File naming: `slides/slide-01.js`, `slides/slide-02.js`, etc. 2. Images go in: `slides/imgs/` 3. Final PPTX goes in: `slides/output/` 4. Dimensions: 10" x 5.625" (LAYOUT_16x9) 5. Fonts: Chinese = Microsoft YaHei, English = Arial (or approved alternative) 6. Colors: 6-char hex without # (e.g. `"FF0000"`) 7. Must use the theme object contract (see [Theme Object Contract](#theme-object-contract)) 8. Must follow the [PptxGenJS API reference](references/pptxgenjs.md)
Step 6: Compile into Final PPTX
Create `slides/compile.js` to combine all slide modules:
// slides/compile.js
const pptxgen = require('pptxgenjs');
const pres = new pptxgen();
pres.layout = 'LAYOUT_16x9';
const theme = {
primary: "22223b", // dark color for backgrounds/text
secondary: "4a4e69", // secondary accent
accent: "9a8c98", // highlight color
light: "c9ada7", // light accent
bg: "f2e9e4" // background color
};
for (let i = 1; i <= 12; i++) { // adjust count as needed
const num = String(i).padStart(2, '0');
const slideModule = require(`./slide-${num}.js`);
slideModule.createSlide(pres, theme);
}
pres.writeFile({ fileName: './output/presentation.pptx' });Run with: `cd slides && node compile.js`
Step 7: QA (Required)
See [QA Process](references/pitfalls.md#qa-process).
Output Structure
slides/
├── slide-01.js # Slide modules
├── slide-02.js
├── ...
├── imgs/ # Images used in slides
└── output/ # Final artifacts
└── presentation.pptx---
Slide Output Format
Each slide is a **complete, runnable JS file**:
// slide-01.js
const pptxgen = require("pptxgenjs");
const slideConfig = {
type: 'cover',
index: 1,
title: 'Presentation Title'
};
// MUST be synchronous (not async)
function createSlide(pres, theme) {
const slide = pres.addSlide();
slide.background = { color: theme.bg };
slide.addText(slideConfig.title, {
x: 0.5, y: 2, w: 9, h: 1.2,
fontSize: 48, fontFace: "Arial",
color: theme.primary, bold: true, align: "center"
});
return slide;
}
// Standalone preview - use slide-specific filename
if (require.main === module) {
const pres = new pptxgen();
pres.layout = 'LAYOUT_16x9';
const theme = {Other skills on poco-claw.
More skills from other plugins.
prompt-lookup
Activates when the user asks about AI prompts, needs prompt templates, wants to search for prompts, or mentions prompts.chat. Use…
ppt-master
AI-driven presentation workflow for generating editable PPTX decks and slides, reconstructing page visuals, creating reusable…
morph-ppt
Use this skill when the user wants a .pptx with smooth cross-slide animation — PowerPoint Morph transitions, Keynote-style…
frontend-slides
Create stunning, animation-rich HTML presentations from scratch or by converting PowerPoint files. Use when the user wants to…
Questions about pptx-generator.
- Which coding agents can use pptx-generator?
- pptx-generator installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.

