Prompt-to-PowerPoint with agent skills, an XML source, and a live-preview CLI.
pom kit turns a prompt into editable PowerPoint files while keeping pom XML as the source of truth.
Requires Node.js 22+
npx skills add hirokisakabe/pom --all # install pom-slide and pom-theme
npm install -g @hirokisakabe/pom-cli # install preview / build CLIThen ask your coding agent to create a deck:
Create a three-slide quarterly sales report with a title, chart, and summary.
This request matches the pom-slide description, so the agent can select it automatically. The skill writes slides.pom.xml, reviews the rendered slides, and starts live preview when pom-cli is available. If preview does not start automatically, run pom preview slides.pom.xml. Build the final deck with:
pom build slides.pom.xml -o slides.pptxThis repository is a pnpm monorepo containing the following packages:
| Package | Role | Distribution |
|---|---|---|
| packages/pom-cli | Primary CLI — preview, build, and render pom XML | @hirokisakabe/pom-cli |
| packages/pom | Core library — parse, layout, and render pom XML to PPTX | @hirokisakabe/pom |
| packages/pom-md | Markdown authoring surface that converts to pom XML | @hirokisakabe/pom-md |
| packages/pom-jsx | Typed JSX/TSX authoring surface that serializes to pom XML | @hirokisakabe/pom-jsx |
| packages/pom-editor | Visual AST editor component with pom XML input and output | @hirokisakabe/pom-editor |
| packages/pom-vscode | VS Code extension for pom XML / Markdown live preview | Marketplace |
| apps/website | Documentation website and playground (pom.pptx.app) | — |
pom XML is the canonical, editable source passed to the layout and rendering pipeline. Choose the authoring surface that fits your workflow:
- Agent skills (recommended) —
pom-slidegenerates and revises pom XML from prompts;pom-themesupplies reusable brand tokens and master settings. The generated XML, not the prompt, is the deck source of truth. - XML — Author the canonical format directly for maximum control, then preview or build it with
pom-cli. - Markdown —
pom-mdconverts approachable.pom.mdcontent (plus optionalpomxmlfences) into pom XML before rendering. - JSX/TSX —
pom-jsxserializes typed components and reusable layouts into pom XML before rendering. - Visual editor —
pom-editorreads pom XML and emits updated pom XML after drag-and-drop structure edits. - Library API —
@hirokisakabe/pomaccepts pom XML viabuildPptx()for advanced or programmatic integrations.
Markdown, JSX, and the visual editor are alternative authoring surfaces, not deprecated paths or separate rendering models. They all converge on the same pom XML representation.
The pom kit bundles two agent skills (pom-theme, pom-slide) and the pom-cli preview server. Installed into a coding agent such as Claude Code, it gives you a prompt-to-PPTX workflow: onboard your brand, generate slides from natural language, and iterate in a live preview.
flowchart TD
Prompt["Deck prompt"] --> Agent["Coding agent"]
Brand["Brand assets / theme prompt"] --> Agent
Agent -->|"matches slide request"| Slide["pom-slide skill"]
Agent -->|"matches theme request"| Theme["pom-theme skill"]
Theme --> Config["pom-theme.json<br/>(optional defaults)"]
Config -.-> Slide
Slide --> XML["slides.pom.xml<br/>(source of truth)"]
XML --> Preview["pom preview"]
Preview --> Live["Live preview"]
XML --> Build["pom build"]
Build --> PPTX["Editable PPTX"]
The agent can choose a skill by matching the request against each skill's description. pom-theme creates optional brand defaults; pom-slide creates and revises the XML. pom-cli consumes that same XML source for both the live preview and the final PowerPoint build.
Install (2 commands):
npx skills add hirokisakabe/pom --all # install all skills (pom-slide, pom-theme)
npm install -g @hirokisakabe/pom-cli # live preview / build CLIskills supports Claude Code, Codex, Cursor, and many other coding agents. The --all flag installs every skill for every agent target without prompts, scoped to the current project; pass -g for a user-level (global) install, or omit --all to choose skills and agents interactively. To update the skills later, run npx skills update.
Usage — theme → design → preview:
The examples below rely on the agent selecting the relevant skill automatically. You do not need to name a skill in the request.
-
Theme (optional): ask the agent to onboard your brand assets:
ブランドカラーは #0052CC。pom 用のコーポレート向けライトテーマを作ってください。pom-themesaves apom-theme.json(color palette + typography + SlideMaster settings) in the current directory. Subsequent slide requests automatically apply its colors, fonts, and background. The SlideMaster settings can also be passed directly tobuildPptx()as themasteroption. -
Design: describe the deck you want:
四半期の売上レポートを 3 枚で作ってください。タイトル・グラフ・まとめを含めてください。pom-slidegenerates aslides.pom.xmlfile in the current directory, applies the theme if present, and self-reviews the rendered result. -
Preview: if
pom-cliis installed, a live preview server starts automatically athttp://localhost:3000. Edit the XML (yourself or via follow-up prompts) and the preview updates live. When you're happy, export the deck withpom build slides.pom.xml -o slides.pptx.
Direct invocation is optional and agent-specific. Claude Code supports /pom-theme and /pom-slide; Codex CLI and the IDE extension let you mention a skill with $ or choose one from /skills.
Install the core library when you want to integrate pom into a TypeScript pipeline:
npm install @hirokisakabe/pomimport { buildPptx } from "@hirokisakabe/pom";
const xml = `
<Slide>
<VStack w="100%" h="max" padding="48" gap="24" alignItems="start">
<Text fontSize="48" bold="true">Presentation Title</Text>
<Text fontSize="24" color="666666">Subtitle</Text>
</VStack>
</Slide>
`;
const { pptx } = await buildPptx(xml, { w: 1280, h: 720 });
await pptx.writeFile({ fileName: "presentation.pptx" });- AI Friendly — Simple XML structure designed for LLM code generation.
- Declarative — Describe slides as XML. No imperative API calls needed.
- Flexible Layout — Flexbox-style layout with VStack / HStack, powered by yoga-layout.
- Rich Nodes — 20 built-in node types: charts, flowcharts, tables, timelines, org trees, and more.
- Schema-validated — XML input is validated with Zod schemas at runtime with clear error messages.
- PowerPoint Native — Full access to native PowerPoint shape features (roundRect, ellipse, arrows, etc.).
| Document | Description |
|---|---|
| API Reference | buildPptx() function and options |
| Nodes | Complete reference for all node types |
| Master Slide | Headers, footers, and page numbers |
| Text Measurement | Text measurement options and settings |
| llm.txt | Compact XML reference for LLM prompts |
| Playground | Try pom XML in the browser |
MIT