Install

One command,
your runtime.

1Get the repo, install the skill

git clone https://github.com/rocsgh/ppt-zen
cd ppt-zen
./install.sh claude --global      # see the matrix below for your runtime
RuntimeCommandInstalls toTrigger
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.mdpassive — auto-read
Cursor./install.sh cursor.cursor/rules/ppt-zen.mdcpassive — auto-applied
Windsurf./install.sh windsurf.windsurf/rules/ppt-zen.mdpassive — auto-applied
GitHub Copilot./install.sh copilot.github/instructions/passive — auto-applied
everything./install.sh allall 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.

2Wire an image model

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.

3Make a deck — what you actually say

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

?FAQ

Which image models work?

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%.

Is the .pptx editable?

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).

Will it invent numbers for my deck?

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.

Can I add my own style?

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.

What does it cost to run?

Whatever your image endpoint charges — a 10-page deck is 10 images (plus any single-page retries you choose).

Open GitHub See a finished deck first