agent-builder
Expert AI Agent Builder skill. Helps users dynamically create, configure, and build custom AI agents with specific capabilities,…
Create, read, or edit PowerPoint .pptx files: slide decks from scratch, content extraction, templates, speaker notes, combining or splitting decks. Not for posters, images, or social graphics.
Claude Code
$ npx -y skills add xorbitsai/xagent --skill presentation-generator --agent claude-code
Codex
$ npx skills add xorbitsai/xagent --skill presentation-generator -a codex -y
Cursor
$ npx skills add xorbitsai/xagent --skill presentation-generator -a cursor -y
Gemini CLI
$ npx skills add xorbitsai/xagent --skill presentation-generator -a gemini-cli -y
GitHub Copilot
$ npx skills add xorbitsai/xagent --skill presentation-generator -a github-copilot -y
OpenCode
$ npx skills add xorbitsai/xagent --skill presentation-generator -a opencode -y
Windsurf
$ npx skills add xorbitsai/xagent --skill presentation-generator -a windsurf -y
name: presentation description: | Create, read, or edit PowerPoint .pptx files: slide decks from scratch, content extraction, templates, speaker notes, combining or splitting decks. Not for posters, images, or social graphics. when_to_use: | The user asks for a deck, slides, a presentation, Google Slides, PPT/PPTX, or names a .pptx file. Use pptx-editorial instead when magazine-grade editorial styling is wanted.
Generate PowerPoint presentations using JavaScript code with the pptxgenjs library.
When the requested output is Google Slides, this skill is the local deck creation step, not the final delivery step:
1. Generate and inspect the designed local PPTX in the workspace. 2. Call `google_slides_import_pptx` with that PPTX path to convert it into an editable native Google Slides presentation. Treat `validation_failed` as a failed delivery; it means the conversion changed the slide count, dropped text, or left a blank slide. 3. Call `google_slides_get_presentation` to verify slide count and text before returning the Google Slides link.
Do not build a new outlined deck with repeated `google_slides_create_presentation` and `google_slides_add_slide` calls. Those tools are for explicitly requested simple text/layout edits and do not preserve visual design.
For simple Google Slides layout edits, when `google_slides_create_presentation` returns a `default_slide_id` (it is `null` when there is no default page to replace), pass it to the first `google_slides_add_slide` call. Unless the user specified a different first slide, make that first slide the cover (`layout="TITLE"` with the deck title). Calls may run in separate MCP processes; without the id the connector only removes a sole page that has no elements at all, so a default page with placeholders stays as the first slide. `google_slides_create_presentation` writes the deck title into that page when it can, so it then reads as a title-only cover: do not add a second cover in that case. An empty page in a multi-page deck is preserved. Pass `preserve_blank_slide=true` when that sole page is intentional. `google_slides_add_slide` only supports layouts with title/body placeholders; use `google_slides_batch_update` directly for blank/custom slides.
When using `google_slides_batch_update` after `google_slides_create_presentation`, the connector cannot infer the default page across MCP processes. Include a `deleteObject` request for the returned `default_slide_id`, when one is returned, after creating the first content page, or use `google_slides_add_slide` with that ID.
**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 });---
**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,
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.
Expert AI Agent Builder skill. Helps users dynamically create, configure, and build custom AI agents with specific capabilities,…
A native .docx styled as an editorial report: "Word report", "Word 文档", "memo", "proposal", "研究报告". Opens cleanly in Word /…
Evidence-first retrieval over a specified knowledge base: cited evidence, conflict detection, and an explicit sufficiency,…
One self-contained HTML slide deck with magazine-grade editorial styling: "html deck", "editorial slides", "美观 PPT", "网页版幻灯片".…
An editorial-styled PDF report rendered from HTML via the browser: "PDF report", "whitepaper", "executive brief", "research…
A native .pptx deck with magazine-grade editorial styling: "pitch deck", "投资人路演 PPT", "美观 PPT", board review, product launch.…
Direct browser control via CDP for web interaction: automation, scraping, testing, screenshots, and site/app work. Also covers…
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling…