Presentations (profy-pptx)
Presentations run through two mutually exclusive pipelines. Once chosen you cannot switch mid-way, and you cannot convert between them. Start with this table to decide which path you are on:Activation
profy-pptx is user_selectable: false — automatically available, nothing to tick.
contracts declares only skills: ["skills/"] and no tools. The plugin ships two skills: builtin/pptx (the native pipeline hub) and builtin/html-deck (web presentations).
The export pipeline lock
The reasoning is worth internalising. There are two ways to get SVG into PPTX: render the SVG to a bitmap and paste it into a slide, or translate SVG primitives into PowerPoint’s native DrawingML. The first is trivial and any general-purpose library will do it — at the cost of slides that are completely uneditable and text that is no longer text.svg_to_pptx.py does the second.
The reason the rule is stated as unconditional is that constraints like this are most often broken during failure recovery. After a few errors and retries, writing “a simpler version” looks like reasonable self-rescue, and it happens to route around the only correct implementation. Worse, the wrong path does not error — it produces a file that opens fine and is quietly useless.
Intent router
Native PPTX: the seven-step pipeline
resume-execute workflow to reclaim context budget.
Step 1: source conversion
Everything is normalised to Markdown before the pipeline proper begins, which is what lets one downstream pipeline serve six different input formats.
Step 2: canvas formats
The same pipeline produces social media images because the underlying representation is SVG — changing the viewBox changes the canvas, no second pipeline required.
Step 3: templates (optional)
Templates are applied only when the user supplies an explicit template directory path. Bare style words such as “academic style” do not trigger template copying; they feed the Strategist’s style descriptor at Step 4 instead.
When both are supplied they fuse into a single
design_spec.md. Precedence on conflict: colour, typography, logo, and icon style come from Brand; page structure and SVG roster come from Layout.
Editing an existing PPTX
The workflow is unpack → edit XML directly → automatic clean → pack.edit_pptx.py exposes five subcommands:
pack requires --original because a pptx package contains many relationship files and resources that were never touched by the edit and must be inherited from the source package.
HTML Deck: web presentations
A single-file HTML horizontal-swipe deck in one of two visual registers:Style A — electronic magazine × e-ink (default)
- WebGL fluid / contour / dispersion backgrounds, visible on the hero slide
- Serif headings (Noto Serif SC + Playfair Display), sans body, monospace metadata
- Suits humanities talks, industry commentary, commercial launches
- Aesthetic anchor: Monocle magazine with code stuck to it
Style B — Swiss International Style
- WebGL ultra-fine grid plus dot-matrix background
- Sans throughout (Inter + Helvetica + Noto Sans SC), extreme type-size contrast
- One high-contrast functional accent: International Klein Blue, lemon yellow, lemon green, or safety orange
- Suits technology products, data reporting, annual reviews
- Aesthetic anchor: Massimo Vignelli, Helvetica Forever
When not to use HTML Deck
Environment constraints
Scripts execute inside the sandbox viaskill(action="execute"). Dependencies deploy automatically on first use and subsequent calls in the same session skip deployment. The sandbox layout:
Boundaries and failure modes
- The two pipelines are mutually exclusive and cannot be converted between (see the warning at the top).
- A custom export script produces broken CJK text while appearing to succeed — the failure mode to fear most, because nothing errors.
- Templates require an explicit path; style words do not trigger them.
- Phase B of a long deck should move to a fresh session, otherwise SVG source fills the context window.
- HTML Deck is a static file with no collaborative editing.
Troubleshooting
Verify your output
- Open the PPTX and click on body text — if it selects and edits, the DrawingML pipeline ran. If it does not, the deck was rasterized.
- For Chinese decks, confirm there are no box glyphs.
- For an HTML Deck, page through with ← → and confirm the motion and the ESC index both work.
Related
Office documents overview
How the four document capabilities differ and when to use each
PDF documents
The kami typesetting engine when PDF is the deliverable
Verified 2026-08-11. Sources:
services/agent-runtime/src/plugins/builtin/pptx/plugin.json, skills/pptx/SKILL.md, skills/html-deck/SKILL.md, skills/pptx/scripts/. html-deck originates from guizang-ppt-skill (author: 歸藏).
