Install
$ agentstack add skill-sananthanarayan-skilldrop-deck-builder ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
deck-builder
You help the user produce an actual editable .pptx file, not just an outline. The skill runs python-pptx under the hood to materialize slides with a chosen color palette, multiple layout types, and audience-tuned density.
This skill pairs with two others:
- [
audience-profile](../audience-profile/SKILL.md) — decides how dense / how many / which sections the deck should have - [
slide-outliner](../slide-outliner/SKILL.md) — drafts the per-slide content before this skill turns it into a.pptx
For a single fast pipeline, use all three in order: profile → outline → build.
How to respond
- Gather three inputs before generating anything:
- Content. Either a finished outline (from
slide-outliner), a long doc the user wants compressed into slides, or a list of points. If the content is thin ("here's the topic, you fill in"), pause and ask — making slides up is the easiest way to make a bad deck. - Audience. One of:
exec,board,technical,sales,internal,investor,partner,customer. If the user gives a free-form description ("VP of Eng + their staff at a partner"), map to the closest archetype and call out your choice. Use [audience-profile](../audience-profile/SKILL.md) for the structural rules. - Palette. Always ask the user before generating — don't pick for them, and don't default silently. Present the choice like this:
> Pick a palette before I generate the deck: > - corporate-blue — default for B2B / enterprise audiences > - monochrome — restrained / when content is sensitive > - vibrant — internal / sales / pitch decks > - dark-mode — engineering audiences, live demos > - editorial — long-form / read-ahead decks > - forest — calm, nature-leaning > - sunset — warm, narrative-leaning > - Or give me hex values for primary / secondary / accent / background / text > - Or paste your brand colors and I'll map them into the five roles
If the user gives brand colors as a partial set (e.g. just a primary), derive the missing roles using the rules in [reference.md](reference.md#color-palette-principles) and call out what you filled in.
- Plan the slide list against the audience archetype. For example:
| Audience | Slide count | Density | Required sections | |---|---|---|---| | exec | 6–10 | Low — 3 bullets max | Ask • TL;DR • Business impact • Risks • Ask (closing) | | board | 8–12 | Low — big numbers | Cover • TL;DR • Strategic context • Financials • Risks • Ask | | technical | 12–20 | High — detail welcome | Context • Goals • Proposal (3–5) • Alternatives • Risks • Rollout | | sales | 8–12 | Story arc, visual | Hook • Pain • Solution • Proof • Pricing • Close | | internal | 5–10 | Mixed | Context • Proposal • Discussion topics • Action items | | investor | 10–15 | Polished, narrative | Problem • Market • Product • Traction • Team • Ask |
The full archetype spec is in [audience-profile](../audience-profile/SKILL.md).
- Build a deck spec. The spec is a JSON document with this shape — full schema in [
templates/deck-spec.json](templates/deck-spec.json):
``json { "title": "ProjectX Migration — Board Update", "audience": "board", "palette": { "primary": "#1A2A6C", "accent": "#FDBB2D", ... }, "slides": [ { "layout": "title", "title": "...", "subtitle": "..." }, { "layout": "section", "title": "..." }, { "layout": "content", "title": "...", "bullets": ["..."] }, { "layout": "big_number", "title": "...", "number": "$24M", "caption": "ARR at risk" }, { "layout": "two_column", "title": "...", "left": {...}, "right": {...} }, { "layout": "quote", "quote": "...", "attribution": "..." }, { "layout": "closing", "title": "Approval requested", "subtitle": "..." } ] } ``
Available layouts: title, section, content, two_column, big_number, quote, closing. Most slides should be content; sprinkle in big_number and quote for emphasis.
- Run the build script to produce the actual
.pptx:
```bash # Claude Code python3 "${CLAUDESKILLDIR}/scripts/build_deck.py" /tmp/deck-spec.json -o ./out/deck.pptx
# Other IDEs (from the skill folder) cd path/to/deck-builder && python3 scripts/build_deck.py /tmp/deck-spec.json -o ./out/deck.pptx ```
The script writes a real .pptx the user can open in PowerPoint, Keynote, or Google Slides and edit further. Tell the user where the file landed and what to do next.
- Recommend post-generation refinement. A generated deck is a strong first draft, not a finished artifact. Always suggest:
- Reviewing speaker notes (they were written by the agent — verify before presenting)
- Replacing any placeholder images with real visuals
- Doing one "audience pass" — read every slide title in order, does the narrative make sense to that specific audience?
Useful references
- [
reference.md](reference.md) — Color palette principles + layout-vs-content matching guide - [
templates/deck-spec.json](templates/deck-spec.json) — Full JSON schema with every layout demonstrated - [
templates/palettes.json](templates/palettes.json) — Pre-built color palettes (corporate-blue, monochrome, vibrant, dark-mode, editorial, forest, sunset) - [
examples/exec-board-update.md](examples/exec-board-update.md) — Worked example: brief → spec → resulting deck - [
scripts/build_deck.py](scripts/build_deck.py) — The generator (don't edit unless extending layouts)
Quality bar
- Title slide isn't blank — it has a real title, subtitle, presenter, date.
- Section dividers used sparingly — at most one every 4–5 content slides.
- Big numbers are real — never invent statistics for emphasis. If the user gave you a number, use it; otherwise pick a different layout.
- Bullet density matches audience — for
exec, max 3 bullets per slide, period. Fortechnical, up to 6 if the content really needs it. - Speaker notes for every slide — even one sentence. They're how the presenter remembers what's between the bullets.
- Color palette is consistent — don't mix in random colors that aren't in the palette.
- No surprise pages — first and last slides match in style; the deck reads as one document.
Anti-patterns to avoid
- ❌ Generating a deck without confirming the audience. The same content for execs vs engineers is a different deck.
- ❌ Writing fake numbers to fill a
big_numberslide. - ❌ Defaulting to bullets when a
big_number,quote, ortwo_columnwould land harder. - ❌ Skipping speaker notes because the user "knows the topic" — they're for the reviewer/co-presenter too.
- ❌ Choosing low-contrast palettes (light grey text on white). If the palette has poor contrast, swap to a sensible default and explain.
- ❌ More than ~20 slides for any audience. If you can't make the point in 20, the deck isn't the right format.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: sananthanarayan
- Source: sananthanarayan/skilldrop
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.