From prompt to polished deck.
Install the package, give it your template, and start building presentations.
Install
Claude app (desktop & web)
Download the skill ZIP and upload it in Customize > Skills:
Download agent-slides.zip
Coding agents (Claude Code, Cursor, Gemini CLI, Codex)
npx skills add https://github.com/mpuig/agent-slides
This clones the repo, lets you pick which skills to install, and sets them up for your agent. Skills call the CLI via uvx, which auto-installs the Python package in an isolated environment on first run — no manual pip install needed.
Manual setup
# Clone the repo
git clone https://github.com/mpuig/agent-slides.git
# Symlink skills into your agent's skill directory
ln -s agent-slides/skills/* .claude/skills/
Requires uv to be available in your environment. The skills invoke the CLI via uvx --from agent-slides slides, which resolves and caches the package automatically.
Prepare your template
Every deck starts from a PowerPoint template — your corporate theme, a client-provided file, or one of the bundled templates. The extraction step analyzes its layouts, colors, fonts, and spatial zones into a machine-readable contract the agent uses when building slides.
In Claude Code, run:
/slides-extract
The skill will ask you to point it at a .pptx file. It produces three artifacts in your project directory:
- Resolved manifest — a JSON contract describing every available layout, its placeholders, color zones, and editable regions
- Base template — a cleaned copy of the original file, ready for rendering
- Design profile — font-size bounds, allowed colors, and contrast rules used by the QA engine
You can also run extraction directly from the CLI:
uvx --from agent-slides slides extract "template.pptx" --output-dir project/
Build your first deck
With your template extracted, you're ready to build. In Claude Code:
/slides-full "10-slide strategy deck on Q3 growth"
The agent plans a narrative arc, selects layouts from your template contract, renders slide operations into a .pptx file, and runs quality checks automatically. If the QA engine finds issues — font sizes outside bounds, low contrast, overlapping shapes — the agent fixes them and rechecks until both gates pass.
If you want just the build step without the full QA loop:
/slides-build "10-slide strategy deck on Q3 growth"
The output is a ready-to-open PowerPoint file in your working directory.
Refine and iterate
Decks rarely land perfectly on the first pass. Use natural language to request changes:
- "Change slide 3 to use the split-panel layout"
- "Move the chart on slide 8 to the left"
- "Replace the pie chart with a bar chart"
- "Add speaker notes to every slide"
- "Swap the order of slides 4 and 5"
For targeted edits on an existing deck:
/slides-edit
The edit skill reads the current deck, applies your changes as operations, and re-renders. It supports text replacements, layout swaps, chart modifications, and structural changes like reordering or removing slides.
Review quality
Three specialized skills cover different dimensions of deck quality:
/slides-audit — Technical lint
Checks every shape against the design profile: font sizes within bounds, sufficient color contrast, no overlapping elements, all content within slide margins. Returns structured violations with suggested fixes.
/slides-critique — Storytelling review
Evaluates narrative structure: action titles that drive the story forward, MECE logic across sections, consistent level of detail, and clear slide-to-slide flow.
/slides-polish — Final pass
Adds speaker notes, checks metadata consistency, verifies source citations, and ensures visual consistency across the full deck. This is the last step before delivery.
The /slides-full pipeline chains all three automatically. Run them individually when you want fine-grained control over the review process.
Advanced: CLI reference
For power users and automation workflows, the CLI provides direct access to every operation the skills use under the hood.
Key commands
# Shorthand: alias the CLI
alias slides='uvx --from agent-slides slides'
# Render a slides.json into a .pptx
slides render --slides-json @slides.json \
--profile project/design-profile.json \
--output deck.pptx
# Apply raw operations (with optional dry-run)
slides apply --ops-json @ops.json --dry-run --output deck.pptx
# Run validation + design lint
slides qa deck.pptx \
--profile project/design-profile.json \
--out qa.json --compact
# Inspect slide content with field masks
slides inspect deck.pptx \
--fields slides.title,slides.shapes.text \
--page-size 5 --compact
# Search for content across slides
slides find deck.pptx --query "pricing" --out results.json
# Find-and-replace text
slides edit deck.pptx \
--query "old text" --replacement "new text" \
--output deck.pptx
CI gating
Gate deck quality in your pipeline with exit codes — 0 means all clear, non-zero means violations found:
slides validate deck.pptx || exit 1
slides lint deck.pptx --profile dp.json --out lint.json
slides qa deck.pptx --profile dp.json --out qa.json