/presentation-generator
Generate and edit PowerPoint presentations (.pptx). Use for: creating slide decks, pitch decks, or presentations from scratch; reading, parsing, or extracting content from .pptx files; editing, modifying, or updating existing presentations; combining or splitting slide files;
$ npx -y skills add xorbitsai/xagent --skill presentation-generator --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/presentation-generator
Context preview
The summary Claude sees to decide when to auto-load this skill.
Generate and edit PowerPoint presentations (.pptx). Use for: creating slide decks, pitch decks, or presentations from scratch; reading, parsing, or extracting content from .pptx files; editing, modifying, or updating existing presentations; combining or splitting slide files;
SKILL.md
presentation-generator.SKILL.mdname: presentation
description: "Generate and edit PowerPoint presentations (.pptx). Use for: creating slide decks, pitch decks, or presentations from scratch; reading, parsing, or extracting content from .pptx files; editing, modifying, or updating existing presentations; combining or splitting slide files; working with templates, layouts, speaker notes, or comments. Trigger only when the user explicitly asks for a deck, slides, presentation, PPT/PPTX, or references a .pptx filename. Do not use for standalone posters, images, banners, illustrations, or social graphics unless the requested deliverable is a presentation file."
Presentation Generator
Generate PowerPoint presentations using JavaScript code with the pptxgenjs library.
⚠️ CRITICAL REQUIREMENTS - READ FIRST
**YOU MUST FOLLOW THESE RULES - NO EXCEPTIONS:**
1. **ONLY use the 4 predefined themes below** (NOVA, ORBIT, PULSE, MINIMA) 2. **NEVER create custom color variables** like `const colorAccent = "0078D7"` 3. **NEVER use hardcoded hex values** in your code - always reference `theme.xxx` 4. **ALWAYS include the `#` prefix** in hex colors (e.g., `#EF4444` not `EF4444`) 5. **Slide 0 (first slide) MUST also be created via `const slide = pres.addSlide()`** and use `theme.cover` - first slide is the cover with dark/high-contrast background 6. **Slides 1+ MUST use `theme.content`** - all other slides use light/readable background
**WRONG:**
const colorAccent = "0078D7"; // ❌ WRONG - custom color
slide1.addText("Title", { color: "363636" }); // ❌ WRONG - hardcoded hex
const slide1 = pres.addSlide();
slide1.background = { color: theme.cover.background }; // ❌ WRONG - cover on non-first slide**CORRECT:**
const theme = {
cover: {
background: '#0A0F1C',
title: '#FFFFFF',
subtitle: '#94A3B8',
accent: '#7C3AED'
},
content: {
background: '#F6F7FB',
primary: '#0A0F1C',
secondary: '#5B6475',
accent: '#7C3AED',
text: '#0A0F1C'
}
};
// Slide 0 (cover) — pptxgenjs requires addSlide() for the FIRST slide too
const slide1 = pres.addSlide();
slide1.background = { color: theme.cover.background };
slide1.addText("Title", { color: theme.cover.title });
// Slide 1+ — call pres.addSlide() to get each new slide
const slide2 = pres.addSlide();
slide2.background = { color: theme.content.background };
slide2.addText("Content", { color: theme.content.primary });---
Execution Rules
**CRITICAL: MANDATORY constraints for stable presentation generation:**
1. **USE PREDEFINED THEMES ONLY**: You MUST use one of the 4 predefined themes (NOVA, ORBIT, PULSE, MINIMA) from the "Predefined Themes" section below. NEVER define custom colors or use hardcoded hex values like `"003366"` or `color: "FF0000"`.
2. **Theme Object Format**: Always define theme as:
const theme = {
background: '#XXXXXX',
primary: '#XXXXXX',
secondary: '#XXXXXX',
accent: '#XXXXXX',
text: '#XXXXXX'
};Then reference colors as `theme.background`, `theme.primary`, etc.
3. **Slide Creation**: ALWAYS call `pres.addSlide()` before adding content to ANY slide, including the FIRST one. Capture its return value: `const slide = pres.addSlide();` then call `slide.addText(...)`, `slide.background = {...}`, `slide.addImage(...)`, etc. Calling `pres.addText(...)` or setting `pres.background` directly on the presentation object will throw `pres.addText is not a function`.
4. **Font Consistency**: Keep font sizes consistent: titles 40-56pt, subtitles 24-32pt, body text 16-20pt
5. **Slide Bounds**: Never position elements outside 10 x 7.5 inch slide area (x: 0-10, y: 0-7.5)
6. **Layout Simplicity**: Prefer clean, simple layouts over dense or decorative designs
7. **Theme Selection**: Choose theme based on presentation context (see Theme Selection Guide below)
8. **Visual Hierarchy**: Slides must follow clear visual hierarchy: Title → Section Heading → Body → Accent Highlight. Avoid mixing too many font sizes on a single slide.
9. **Image Sizing**: ALWAYS specify both width AND height, or use sizing to ensure images stay within bounds:
- Use `w` and `h` together to control exact dimensions
- Or use `sizing: { type: 'contain', w: 8, h: 5 }` to fit within bounds while maintaining aspect ratio
- NEVER use only `w` or only `h` without the other - image may overflow
- Keep images within content area: x: 0-10, y: 0-7.5 inches
10. **Handle Execution Failures Honestly**: `execute_javascript_code` returns `{ success, output, error }`. When `success` is `false` (or `error` is non-empty), the script aborted before `writeFile` and **no .pptx was created**. You MUST:
- Tell the user the generation failed and quote the `error` message.
- NOT claim the presentation was generated. NOT emit a `[name.pptx]()`
link to a file that does not exist.
- Fix the JavaScript and retry (most failures are validation errors from
pptxgenjs — `addTable` row shape, missing slide handle, malformed options object — see "Data Table" below for the table pattern).
Layout Zones
For consistent slide layouts:
| Zone | X/Y Range | Purpose | |------|-----------|---------| | Safe content area | x: 0.5-9.5, y: 0.5-7 | Main content, images, data | | Title area | y: 0.5 - 1.5 | Slide titles and headings | | Content area | y: 1.5 - 5.5 | Main content, bullets, data | | Footer area | y: 6.0 - 7.0 | Footer text, page numbers, notes |
**Note**: Title slides may use vertically centered positioning (y ≈ 3). All other slides must follow layout zones.
Theme Selection Guide
| Context | Recommended Theme | Why | |---------|------------------|-----| | Strategy / AI narrative / Investor deck | **NOVA** | Large titles, generous whitespace, authoritative feel | | Technical deep dive / Architecture / Dev | **ORBIT** | Dark background, strong contrast, clean technical aesthetic | | Metrics-heavy / Growth / Business performance | **PULSE**
Read more
name: presentation description: "Generate and edit PowerPoint presentations (.pptx). Use for: creating slide decks, pitch decks, or presentations from scratch; reading, parsing, or extracting content from .pptx files; editing, modifying, or updating existing presentations; combining or splitting slide files; working with templates, layouts, speaker notes, or comments. Trigger only when the user explicitly asks for a deck, slides, presentation, PPT/PPTX, or references a .pptx filename. Do not use for standalone posters, images, banners, illustrations, or social graphics unless the requested deliverable is a presentation file."
Presentation Generator
Generate PowerPoint presentations using JavaScript code with the pptxgenjs library.
⚠️ CRITICAL REQUIREMENTS - READ FIRST
**YOU MUST FOLLOW THESE RULES - NO EXCEPTIONS:**
1. **ONLY use the 4 predefined themes below** (NOVA, ORBIT, PULSE, MINIMA) 2. **NEVER create custom color variables** like `const colorAccent = "0078D7"` 3. **NEVER use hardcoded hex values** in your code - always reference `theme.xxx` 4. **ALWAYS include the `#` prefix** in hex colors (e.g., `#EF4444` not `EF4444`) 5. **Slide 0 (first slide) MUST also be created via `const slide = pres.addSlide()`** and use `theme.cover` - first slide is the cover with dark/high-contrast background 6. **Slides 1+ MUST use `theme.content`** - all other slides use light/readable background
**WRONG:**
const colorAccent = "0078D7"; // ❌ WRONG - custom color
slide1.addText("Title", { color: "363636" }); // ❌ WRONG - hardcoded hex
const slide1 = pres.addSlide();
slide1.background = { color: theme.cover.background }; // ❌ WRONG - cover on non-first slide**CORRECT:**
const theme = {
cover: {
background: '#0A0F1C',
title: '#FFFFFF',
subtitle: '#94A3B8',
accent: '#7C3AED'
},
content: {
background: '#F6F7FB',
primary: '#0A0F1C',
secondary: '#5B6475',
accent: '#7C3AED',
text: '#0A0F1C'
}
};
// Slide 0 (cover) — pptxgenjs requires addSlide() for the FIRST slide too
const slide1 = pres.addSlide();
slide1.background = { color: theme.cover.background };
slide1.addText("Title", { color: theme.cover.title });
// Slide 1+ — call pres.addSlide() to get each new slide
const slide2 = pres.addSlide();
slide2.background = { color: theme.content.background };
slide2.addText("Content", { color: theme.content.primary });---
Execution Rules
**CRITICAL: MANDATORY constraints for stable presentation generation:**
1. **USE PREDEFINED THEMES ONLY**: You MUST use one of the 4 predefined themes (NOVA, ORBIT, PULSE, MINIMA) from the "Predefined Themes" section below. NEVER define custom colors or use hardcoded hex values like `"003366"` or `color: "FF0000"`.
2. **Theme Object Format**: Always define theme as:
const theme = {
background: '#XXXXXX',
primary: '#XXXXXX',
secondary: '#XXXXXX',
accent: '#XXXXXX',
text: '#XXXXXX'
};Then reference colors as `theme.background`, `theme.primary`, etc.
3. **Slide Creation**: ALWAYS call `pres.addSlide()` before adding content to ANY slide, including the FIRST one. Capture its return value: `const slide = pres.addSlide();` then call `slide.addText(...)`, `slide.background = {...}`, `slide.addImage(...)`, etc. Calling `pres.addText(...)` or setting `pres.background` directly on the presentation object will throw `pres.addText is not a function`.
4. **Font Consistency**: Keep font sizes consistent: titles 40-56pt, subtitles 24-32pt, body text 16-20pt
5. **Slide Bounds**: Never position elements outside 10 x 7.5 inch slide area (x: 0-10, y: 0-7.5)
6. **Layout Simplicity**: Prefer clean, simple layouts over dense or decorative designs
7. **Theme Selection**: Choose theme based on presentation context (see Theme Selection Guide below)
8. **Visual Hierarchy**: Slides must follow clear visual hierarchy: Title → Section Heading → Body → Accent Highlight. Avoid mixing too many font sizes on a single slide.
9. **Image Sizing**: ALWAYS specify both width AND height, or use sizing to ensure images stay within bounds:
- Use `w` and `h` together to control exact dimensions
- Or use `sizing: { type: 'contain', w: 8, h: 5 }` to fit within bounds while maintaining aspect ratio
- NEVER use only `w` or only `h` without the other - image may overflow
- Keep images within content area: x: 0-10, y: 0-7.5 inches
10. **Handle Execution Failures Honestly**: `execute_javascript_code` returns `{ success, output, error }`. When `success` is `false` (or `error` is non-empty), the script aborted before `writeFile` and **no .pptx was created**. You MUST:
- Tell the user the generation failed and quote the `error` message.
- NOT claim the presentation was generated. NOT emit a `[name.pptx]()`
link to a file that does not exist.
- Fix the JavaScript and retry (most failures are validation errors from
pptxgenjs — `addTable` row shape, missing slide handle, malformed options object — see "Data Table" below for the table pattern).
Layout Zones
For consistent slide layouts:
| Zone | X/Y Range | Purpose | |------|-----------|---------| | Safe content area | x: 0.5-9.5, y: 0.5-7 | Main content, images, data | | Title area | y: 0.5 - 1.5 | Slide titles and headings | | Content area | y: 1.5 - 5.5 | Main content, bullets, data | | Footer area | y: 6.0 - 7.0 | Footer text, page numbers, notes |
**Note**: Title slides may use vertically centered positioning (y ≈ 3). All other slides must follow layout zones.
Theme Selection Guide
| Context | Recommended Theme | Why | |---------|------------------|-----| | Strategy / AI narrative / Investor deck | **NOVA** | Large titles, generous whitespace, authoritative feel | | Technical deep dive / Architecture / Dev | **ORBIT** | Dark background, strong contrast, clean technical aesthetic | | Metrics-heavy / Growth / Business performance | **PULSE**
Start with a personal agent. Scale into an AI workforce. Xagent helps individuals complete real tasks, teams publish reusable agents, and enterprises run agent systems with their own tools, models, knowledge, and infrastructure — without brittle workflows.
Repo: xorbitsai/xagent
Other skills on xagent.
- /agent-builder
Expert AI Agent Builder skill. Helps users dynamically create, configure, and build custom AI agents with specific capabilities, knowledge bases, and tools.
Open skill - /evidence-based-rag
Evidence-first retrieval-augmented reasoning skill for decision-critical scenarios. Retrieves information from a specified knowledge base, extracts verifiable evidence, detects conflicting claims, and evaluates answer sufficiency with explicit confidence and risk signals.
Open skill - /html-deck-editorial
Generate a single-file HTML presentation deck with magazine-grade editorial styling. Use only when the user explicitly asks for an "html deck", "editorial slides", "magazine style presentation", "beautiful slides", "美观 PPT", or "网页版幻灯片" — i.e. a slide-style visual deliverable
Open skill - /pdf-report-editorial
Generate an editorial-styled PDF report (whitepaper, research brief, executive memo, case study) by first emitting a self-contained HTML document and then rendering it to PDF via the browser. Use when the user asks for a "PDF report", "whitepaper", "executive brief", "research
Open skill - /pptx-editorial
Generate a native PowerPoint (.pptx) file with magazine-grade editorial styling — pitch decks, investor presentations (路演 PPT), board reviews, executive memos, conference talks, product launches. Output is a single .pptx file generated via pptxgenjs through the JavaScript
Open skill - /static-visual-design
Create polished commercial and brand-facing static visual designs as complete PNG or JPEG assets. Use only for advertising creatives, campaign posters, promotional social posts, event or announcement cards, banners, and placement variants where art direction, typography,
Open skill

