Skip to content

siril9/presentation-skill

Repository files navigation

presentation-skill

A skill for coding agents that produces editable PowerPoint decks from structured source files. The idea is to treat a deck like code: outline.json is the source, scripts build the .pptx, and a validation loop checks layout, density, and design-taste issues before delivery.

Release License: MIT Built with pptxgenjs skills.sh

v0.9 narrative role-layout systems

One topic rendered through eight color-independent narrative systems. The gallery deck remains editable.

Ask an agent for a lab report, board memo, investor update, clinical dashboard, policy brief, or scientific figure deck. The skill writes source JSON, routes style and content structure, builds an editable .pptx, and runs QA instead of shipping a screenshot or a stack of centered bullets.

Why

Most agent-built slide decks pass automated checks and still look bad. Dead whitespace, centered body text, the same three-card layout used five times in a row, generic stock-icon clusters. They feel like AI output even when the words are right.

This skill encodes deck design as constraints instead of vibes. A variant grammar restricts what a slide can be. A preset system fixes palette, typography, and density per style family. A descriptor-only corpus of public deck-like records gives the agent style context to pick from instead of inventing from scratch. A QA loop catches layout regressions before the deck ships.

When to use this skill

Reach for it when an agent needs to:

  • build a one-off PowerPoint .pptx, slide deck, or presentation from a single prompt (quick-deck mode, no workspace needed)
  • generate a .pptx from a structured outline.json
  • redesign, rebuild, or extend an existing slide deck
  • run layout and design QA on a generated deck
  • assemble a lab, clinical, board, investor, or editorial deck with consistent style
  • maintain a reusable presentation workspace that can be re-rendered later

Quick-deck mode is the right path for one-shot 5-10 slide decks. Workspace mode is for decks that will be iterated, audited, or rebuilt later.

Skip it for text-only brainstorming where no deck artifact is needed, or for direct edits to a generated .pptx when its workspace source files are available (fix the source instead).

Skill name: presentation-skill. Aliases for fuzzy skill matching and search: powerpoint-deck-builder, pptx-skill, PowerPoint skill, PPTX skill, slide-deck generator, slides generator, deck builder, presentation generator, presentation maker, PowerPoint generator, agent presentation skill, Codex presentation skill, ChatGPT presentation skill.

What's actually in the box

  • A pptxgenjs renderer with 16 content variants plus title and section slides. standard, split, cards-2, cards-3, timeline, stats, kpi-hero, comparison-2col, matrix, chart, table, lab-run-results, image-sidebar, scientific-figure, flow (Mermaid), and generated-image. Each variant has its own layout discipline so a deck doesn't collapse into bullet-list-after-bullet-list.
  • A preset system across 13 style families. Lab report, executive clinical, board risk memo, investor reveal, editorial report, civic science policy, and so on. Each owns a palette, font pair, density profile, and bounded visual interpretation.
  • Eight full-deck composition grammars above the presets. Answer Pyramid, Evidence Plate, Care Pathway, Editorial Spread, Thesis Stage, Operating Grid, Public Docket, and Telemetry Canvas each own distinct role contracts for title, section, evidence, comparison, chart, table, decision, and references. The compiler turns normalized semantic slots into editable PowerPoint geometry; slide-level overrides stay bounded to primary, alternate, or dense.
  • A descriptor-only style corpus (~2,200 records) atomized into a LEGO token atlas. The corpus carries described palettes, layouts, density patterns, and structural motifs from public deck-like sources (no copied assets). It's processed into 311 composable atoms across 12 atom types (palette, typography, layout_motif, chart_treatment, table_treatment, header_treatment, footer_treatment, decorative_motif, density, arc_beat, rhythm_signature, content_treatment). A composition router queries the atlas to mix and match atoms across families per topic, so decks pull grammar — not just colors — from the corpus.
  • A three-step QA loop. Geometric checks (overflow, overlap, density), rendered-image visual inspection on JPGs, and a placeholder-text grep that catches leftover TODO/lorem/xxx strings. The visual-inspection prompt is biased toward finding problems, not confirming the deck looks fine.
  • Workspace mode for decks you'll rebuild later. design_brief.json, content_plan.json, evidence_plan.json, asset_plan.json, outline.json, and notes.md live in a folder. Readiness diagnostics tell the agent what to fix next instead of re-running blind.

See it

v0.9 evidence, chart, and table role-layout systems

The same evidence, native chart, and editable table take eight different reading paths. Color is not counted by the structural gate.

v0.9 decision and references role-layout systems

Decision conditions and source registers no longer collapse into one matrix and one table. The 64-slide gallery is an editable .pptx, not a sheet of screenshots.

Codex native vs updated presentation-skill comparison

Full release notes and comparison images are in the v0.7.0 release.

Install

Install with skills.sh

Install the skill for any supported coding agent:

npx skills add https://github.com/siril9/presentation-skill \
  --skill presentation-skill

Install as a Codex plugin

Add this repo as a Codex plugin marketplace, then open /plugins in Codex and install presentation-skill from the Presentation Skill marketplace:

codex plugin marketplace add siril9/presentation-skill --ref v0.9.0

For local development against a checkout:

codex plugin marketplace add /absolute/path/to/presentation-skill

The marketplace entry lives at .agents/plugins/marketplace.json and points to plugins/presentation-skill, which bundles a synced snapshot of the root skill.

Install as a local skill

Clone or copy this repo into your Codex skills directory:

git clone https://github.com/siril9/presentation-skill \
  $CODEX_HOME/skills/presentation-skill
cd $CODEX_HOME/skills/presentation-skill
pip install python-pptx "markitdown[pptx]" matplotlib pandas openpyxl
npm install

Core generation does not require LibreOffice. Render-based verification uses LibreOffice soffice and Poppler pdftoppm when available.

Try It

Build and verify the bundled example:

node scripts/build_deck_pptxgenjs.js \
  --outline examples/outline.json \
  --output out.pptx \
  --style-preset executive-clinical

Then verify:

python3 scripts/qa_gate.py \
  --input out.pptx \
  --outdir /tmp/pptx-qa \
  --style-preset executive-clinical \
  --skip-render

For production builds, add --strict-geometry --fail-on-design-warnings --fail-on-whitespace-warnings and complete one manual visual review (which writes a manual_review_passed.flag into the outdir) before re-running.

For agents, the shortest useful prompt is:

Use presentation-skill to build a 7-slide editable PowerPoint deck. Treat outline.json as source, choose a preset that fits the topic, use charts/tables/figures where they help, and run the QA gate before delivery.

To inspect the grammar selected for a topic before authoring:

python3 scripts/composition_grammar_catalog.py \
  --topic "Q3 retention review" \
  --user-prompt "Board decision with variance chart and owner table" \
  --style-preset data-heavy-boardroom

What people actually build with this

A few concrete use cases this skill is set up for, drawn from the variants and presets it ships with:

  • Lab and clinical data reports. CSV in, scientific-figure slides with subfigure labels out. lab-run-results slides use semantic table coloring (red/green/yellow for pass/fail/status). image-sidebar for microscopy panels and workflow diagrams.
  • Investor and board decks. kpi-hero, stats, and comparison-2col variants with the bold-startup-narrative or data-heavy-boardroom presets. Generated charts cropped, slide-sized, and readable before assembly.
  • Editorial and policy briefs. editorial-minimal, paper-journal, and warm-terracotta presets with image-sidebar, matrix, timeline, and concise synthesis variants. Built for proof-burden + audience-posture decks rather than 10-bullet recap slides.
  • Design gallery testing. Build the same outline across all 13 presets with multiple header variants to see how a content shape lands in different design families. Useful when you don't know which preset fits a topic.

Feedback

The most useful feedback is a concrete deck-quality miss: repeated layout, crowded text, weak chart/table/figure use, unreadable type, awkward whitespace, or a style that did not match the topic. Use the deck quality feedback template and include the prompt, preset, contact sheet, or outline.json when possible.

Workspaces

For decks you'll rebuild or extend later, use workspace mode:

python3 scripts/init_deck_workspace.py \
  --workspace decks/my-deck \
  --title "My Deck Title" \
  --style-preset executive-clinical

# edit outline.json + brief, then:
python3 scripts/build_workspace.py \
  --workspace decks/my-deck \
  --qa \
  --overwrite

Two scripts make workspaces self-driving:

  • report_workspace_readiness.py — diagnoses what's wrong with the source files before you rebuild. Surfaces unbound artifacts, stale outlines, missing source recommendations, and ranks the next action.
  • advance_workspace.py --execute — runs the next deterministic action (bind artifacts, scaffold data figures, apply contracts) or hands back an agent-facing source-edit prompt when the next move needs an outline change.

Full workspace docs in references/deck_workspace_mode.md.

Verification

qa_gate.py runs three classes of check:

  1. Geometric — text overflow, element overlap, low-contrast text, narrow text boxes that force excessive wrapping, decorative lines positioned for single-line titles that wrapped to two, footer collisions, insufficient slide margins.
  2. Visual (optional, requires render) — slides are exported to JPGs and inspected with a prompt biased toward finding problems. Catches things geometric checks miss (white-band issues on dark backgrounds, mermaid pile-ups, decorative elements bleeding into content).
  3. Content — placeholder grep on the markitdown extract. Catches leftover TODO, [insert ...], xxx, lorem, and template-stub strings.

A deck isn't declared ready until the geometric gate passes, the visual pass returns zero findings, and at least one fix-and-verify cycle has been run.

Run with --skip-render for fast iteration without LibreOffice; drop --skip-render for the full render-and-inspect pass.

Project layout

presentation-skill/
├── SKILL.md                  # full skill spec for agents
├── agents/openai.yaml        # OpenAI-style agent prompt
├── scripts/                  # builders, QA, workspace tools
├── templates/pptxgenjs/      # variants + presets (JS renderer)
├── templates/python/         # python-pptx renderer (legacy + niche)
├── references/               # outline schema, planning schemas,
│                             # style corpus, design guidance
├── examples/outline.json     # minimum-viable outline example
└── decks/                    # release showcases and gallery decks

Agent integration

Codex and other OpenAI-style agents trigger this skill for PowerPoint, .pptx, slide deck, presentation, deck editing, and layout-QA requests. The full agent contract lives in SKILL.md. Key rules:

  • Source-first: write outline.json first, not inline pptxgenjs or python-pptx code.
  • Fix the source files, never the .pptx artifact.
  • Run QA before delivery. If QA fails, rebuild from source.

Discovery metadata for agents and shareable summaries for humans live in DISCOVERY.md and agents/discovery.json. Copy-ready community posts and curation-request text live in docs/PROMOTION.md.

Releases

  • v0.9.0 — full-deck role-layout compiler, eight structural systems per role, explicit v1-to-v2 workspace migration, typed readiness actions, and a 64-slide editable proof gallery.
  • v0.8.0 — Codex plugin packaging, repo marketplace entry, synced plugin skill snapshot, and marketplace install docs.
  • v0.7.0 — optional first-class atom composition in the normal deck-start/design-contract/style-router workflow, plus README proof boards for renderer variants, style families, and Codex-native vs updated-skill comparison.
  • v0.6.0 — topic-aware atom router, stricter reproducible composition prompts, readable stats rendering, refreshed random-topic evidence gallery.
  • v0.5.0 — descriptor-only style corpus (~2,000 records), random-topic comparison gallery, design-catalog selector.
  • v0.2.0 — per-preset contact sheets, style-reference routing.
  • v0.1.0 — initial release with variant renderer + workspace mode.

Further reading

License

MIT. See LICENSE. Third-party dependencies keep their own licenses; no proprietary slide assets are bundled.


Topics: powerpoint, pptx, presentation, slide-deck, slides, deck-generator, presentation-generator, agent-skill, codex-skill, chatgpt-skill, openai-agents, pptxgenjs, python-pptx, deck-design, slide-qa, layout-validation, presentation-workspace, lab-report-deck, investor-deck, board-deck, scientific-figure-slides