Turn rough notes into a polished slide deck — in any AI agent. Then export it to PowerPoint, Keynote, or Google Slides.
🌐 presentation-skill-pack.vercel.app — live gallery of 25 showcase decks · Studio — edit decks in the browser
⭐ If this turned your notes into a deck you'd actually present, star the repo.
npx @presentation-skill-pack/install claude-codeThat single command installs the skill file and registers the MCP server for your agent. Restart your agent and ask it to "create a presentation about…" — it produces a validated deck JSON and renders a self-contained HTML file you can open in any browser, or export to native, editable PowerPoint (which opens in Keynote and imports into Google Slides).
- Structured JSON your agent edits, not opaque slides. Every deck is a schema-validated Deck JSON spec — the agent reads it, diffs it, and rewrites a single slide on request, instead of regenerating a black-box layout.
- Native, editable PPTX / Keynote / Google Slides export. Because slides are structured data, each one maps to real native shapes — one exporter produces a
.pptxthat opens in PowerPoint, opens in Keynote, and imports into Google Slides. No screenshots, no lock-in. - Works in any agent, not one app. Claude Code, Cursor, Codex, Gemini CLI, Copilot, or plain CLI — one
npxinstall wires the skill + MCP server into whatever you already use. - 25-deck proof gallery, live. See the output before you install: 25 showcase decks rendered by the pack, editable in the browser Studio.
presentation-skill-pack is a universal skill layer that gives AI coding agents (Claude Code, Cursor, Codex, Gemini CLI, Copilot, and plain CLI) a structured, schema-validated way to author slide decks. The agent writes a Deck JSON spec; the renderer turns it into a single self-contained HTML file — no build tool, no slide host. The same deck exports to native, editable PowerPoint (which opens in Keynote and imports into Google Slides), and a browser studio lets you open a created deck and edit it with live preview. Themes are swappable, publishable npm packages, and the MCP server exposes the whole workflow as typed tools.
| Package | Description |
|---|---|
@presentation-skill-pack/core |
Deck + theme schemas, theme loader, validator, and bundled default-tech theme |
@presentation-skill-pack/render |
Node.js renderer — CLI (presentation-skill-pack-render) + programmatic API |
@presentation-skill-pack/export 🚧 coming soon (not yet published) |
Deck → native, editable PowerPoint (.pptx) — opens in PowerPoint & Keynote, imports into Google Slides |
@presentation-skill-pack/studio 🚧 coming soon (not yet published) |
Browser editor studio: edit, live-preview, and export decks (Vite SPA) |
@presentation-skill-pack/mcp-server |
MCP server exposing all tools to any MCP-compatible agent (presentation-skill-pack-mcp) |
@presentation-skill-pack/install |
One-command installer that wires the skill + MCP server into your agent (presentation-skill-pack-install) |
@presentation-skill-pack/create-theme |
Scaffold a new publishable theme package (create-presentation-theme) |
@presentation-skill-pack/theme-corporate |
Formal corporate theme |
@presentation-skill-pack/theme-playful |
Playful creative-agency theme |
@presentation-skill-pack/theme-luxury-minimalist |
Luxury minimalist theme |
@presentation-skill-pack/theme-retro-arcade |
Retro 80s arcade theme |
presentation-skill-pack-render (PyPI) |
Python renderer for agents and pipelines running outside Node.js |
| Theme | Vibe |
|---|---|
default-tech |
Dark background, electric-blue accent, mono code feel — ships bundled in core |
corporate |
Crisp white canvas, navy text, restrained blue accent — boardroom-ready |
playful |
Warm white, coral + lime accents, rounded corners, oversized type — creative-agency energy |
luxury-minimalist |
Off-white canvas, charcoal text, hairline borders, zero gradients — quiet confidence |
retro-arcade |
Deep purple-black background, magenta + cyan neon, pixel fonts — 8-bit nostalgia |
| Adapter | Description | Install |
|---|---|---|
claude-code |
Copies skill to ~/.claude/skills/ + registers MCP server in ~/.claude/mcp.json |
npx @presentation-skill-pack/install claude-code |
cursor |
Adds .mdc rule to ~/.cursor/rules/ + MCP server entry |
npx @presentation-skill-pack/install cursor |
copilot |
Writes to .github/copilot-instructions.md + .vscode/mcp.json (run from project root) |
npx @presentation-skill-pack/install copilot |
codex |
Adds skill to ~/.codex/instructions.md + MCP server |
npx @presentation-skill-pack/install codex |
gemini-cli |
Writes GEMINI.md skill to ~/.gemini/instructions/ + MCP server |
npx @presentation-skill-pack/install gemini-cli |
cli |
Standalone — renders decks via the presentation-skill-pack-render CLI, no MCP |
npx @presentation-skill-pack/install cli |
{
"type": "deck",
"meta": {
"title": "Q3 Product Review",
"company": "Acme Inc.",
"theme": "corporate"
},
"slides": [
{
"layout": "title",
"heading": "Q3 Product Review",
"subheading": "July – September 2026"
},
{
"layout": "stat-row",
"heading": "By the numbers",
"stats": [
{ "label": "MRR", "value": "$420k", "delta": "+18%" },
{ "label": "Active users", "value": "12,400", "delta": "+31%" },
{ "label": "NPS", "value": "67", "delta": "+9 pts" }
]
},
{
"layout": "two-column",
"heading": "What we shipped",
"left": "**Instant replay** — users can re-watch any session segment in one click.\n\n**Smart digest** — daily AI summary delivered to Slack.",
"right": "**API v2** — full REST + webhook parity with the legacy SOAP interface.\n\n**iOS 18 widgets** — glanceable stats on the lock screen."
},
{
"layout": "feature-grid",
"heading": "Upcoming in Q4",
"columns": 2,
"cards": [
{ "title": "Real-time co-editing", "body": "Multiple agents annotating the same deck simultaneously." },
{ "title": "Theme marketplace", "body": "Browse and install community themes directly from the CLI." },
{ "title": "PDF export", "body": "One-command headless export via Playwright." },
{ "title": "Enterprise SSO", "body": "SAML 2.0 + SCIM provisioning for large org rollouts." }
]
},
{
"layout": "quote",
"quote": "The best presentation is the one that actually gets made.",
"attribution": "— Every engineer who missed a deadline"
},
{
"layout": "timeline",
"heading": "Q4 milestones",
"events": [
{ "date": "Oct 15", "label": "Co-editing beta" },
{ "date": "Nov 1", "label": "Theme marketplace launch" },
{ "date": "Nov 20", "label": "PDF export GA" },
{ "date": "Dec 10", "label": "Enterprise SSO GA" }
]
},
{
"layout": "data-table",
"heading": "Regional breakdown",
"headers": ["Region", "MRR", "Growth"],
"rows": [
["North America", "$210k", "+22%"],
["Europe", "$140k", "+15%"],
["APAC", "$70k", "+41%"]
]
},
{
"layout": "closing",
"heading": "Questions?",
"subheading": "deck source at github.com/isatimur/presentation-skill-pack"
}
]
}Because a deck is structured data (not free-form HTML), every slide maps cleanly to native slide shapes. One exporter covers all three apps:
# CLI
presentation-skill-pack-render deck.json --format pptx -o deck.pptx// Programmatic (Node)
import { renderDeckPptx } from "@presentation-skill-pack/render";
await writeFile("deck.pptx", await renderDeckPptx(deckJson));The result is a native, editable .pptx:
- PowerPoint — opens directly.
- Keynote — File → Open (Keynote has no portable native format;
.pptxis the bridge). - Google Slides — File → Import slides / upload to Drive → opens as an editable Slides deck.
Agents can call the export_deck MCP tool. Fidelity notes (fonts, colors, images) live in
packages/export/references/pptx-fidelity.md.
@presentation-skill-pack/studio is a browser editor: edit a deck through
schema-driven forms, see a live preview, and download HTML or .pptx. It's a fully static Vite SPA
(client-side render + export, no backend).
pnpm --filter @presentation-skill-pack/studio dev # local editor
pnpm --filter @presentation-skill-pack/studio build # static build → dist/ (deploy to Vercel)| Tool | Purpose |
|---|---|
render_deck |
Render a Deck JSON string to a self-contained HTML file |
export_deck |
Export a Deck JSON to a native, editable PowerPoint (.pptx) — or html |
list_themes |
Enumerate all available themes (bundled + installed npm packages) with name, version, and vibe |
get_theme |
Return the full theme JSON for a given theme name |
validate_deck |
Validate a Deck JSON against the schema and return structured issues with severity |
create_deck |
Create a new deck JSON spec from a text prompt or structured brief |
See CONTRIBUTING.md.
MIT — see LICENSE.