git clone https://github.com/rocsgh/ppt-zen cd ppt-zen ./install.sh claude --global # see the matrix below for your runtime
| Runtime | Command | Installs to | Trigger |
|---|---|---|---|
| Claude Code | ./install.sh claude [--global] | .claude/skills/ppt-zen/ | /ppt-zen or just ask for a deck |
| OpenClaw | ./install.sh openclaw [--global] | .openclaw/skills/ppt-zen/ | ask for a deck |
| Hermes | ./install.sh hermes [--global] | .hermes/skills/ppt-zen/ | ask for a deck |
| Codex CLI | ./install.sh codex [--global] | AGENTS.md / ~/.codex/AGENTS.md | passive — auto-read |
| Cursor | ./install.sh cursor | .cursor/rules/ppt-zen.mdc | passive — auto-applied |
| Windsurf | ./install.sh windsurf | .windsurf/rules/ppt-zen.md | passive — auto-applied |
| GitHub Copilot | ./install.sh copilot | .github/instructions/ | passive — auto-applied |
| everything | ./install.sh all | all of the above | — |
Skill installs are self-contained (SKILL.md + references + styles + scripts + examples + styles.json). No skill system at all? Paste SKILL.md into the session as context.
Every page is a generated image. If your agent already has an image tool, there's nothing to do — the skill uses it. Otherwise point the bundled helper at any OpenAI-compatible images endpoint:
cp .env.example .env # IMAGE_API_BASE_URL / IMAGE_API_KEY / IMAGE_MODEL / IMAGE_SIZE python3 scripts/gen_image.py --check # verify before a long run
PPT-Zen ships no key and no model — the judgment is open source, the pixels are yours.
Open your agent in any project and talk. One sentence starts it; the skill decides the rest and never quizzes you about layout:
"Make me a 10-page pitch deck about <your project> with ppt-zen, in the Portolan style." "Design a keynote about our Q3 results — pick a material that fits." # it chooses "One slide only: '23 minutes to refocus', make it land." # single page
The agent writes plan.md (page · density · device · exact text · style) — review it if you like — then generates one image per page into slides/. Iterate by pointing at pages:
"Regenerate page 6 — the numbers feel cramped."
"Swap the whole deck to the Kintsugi material." # same plan, new world
"Page 4's device isn't readable, try a funnel."
Feed it your facts. Attach an outline / metrics / links — real numbers land on the slides; anything missing shows as [TO CONFIRM] rather than an invented figure. When the pages read clean:
pip install python-pptx python3 scripts/assemble_pptx.py slides/ deck.pptx
Anything behind an OpenAI-compatible /images/generations route — OpenAI's gpt-image models, relays, gateways. The gallery samples were generated with gpt-image class models at 1536×1024. Non-16:9 output is center cover-cropped at assembly, so prompts keep key content clear of the top/bottom ~8%.
It's image-based: each slide is one full-bleed image. Present it, export PDF, or import into Keynote/Google Slides — but text isn't editable. Fixing a typo means regenerating that one page (the skill supports single-page regeneration).
No — that's a hard rule. Facts come from your input; anything missing becomes a visible [TO CONFIRM] placeholder. The skill decides form, never facts.
Yes — copy styles/_template/, fill in the STYLE.md (material recipe + a sample), open a PR. The gallery and styles.json regenerate automatically. Styles are CC-BY-4.0, contributions via DCO.
Whatever your image endpoint charges — a 10-page deck is 10 images (plus any single-page retries you choose).