sruthir28/deck-pipeline
Multi-agent pipeline that builds a polished presentation deck from a single topic. Four agents work in sequence — Strategist defines the narrative, Builder creates the deck, Critic reviews it like a McKinsey EM, Fixer applies the top fixes. Use when you need a presentation that survives senior audiences.
npx skills add https://github.com/sruthir28/enterprise-ai-skills --skill deck-pipeline
A 4-agent pipeline that transforms a topic into a critique-proof presentation deck. Each agent has a distinct role — the output of one feeds the next. The result is a deck that has been strategically structured, built, reviewed, and fixed before you ever touch it.
Topic
│
▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ STRATEGIST │───▶│ BUILDER │───▶│ CRITIC │───▶│ FIXER │
│ │ │ │ │ │ │ │
│ Defines the │ │ Creates the │ │ Reviews like│ │ Applies the │
│ narrative │ │ actual deck │ │ a McKinsey │ │ top 3 fixes │
│ and outline │ │ │ │ EM at 2am │ │ │
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
Role: Define the audience, governing thought, and full slide outline before anything gets built.
What it does:
Output: A structured outline with:
Why this matters: A deck without a strategy is just a collection of slides. The strategist ensures every slide earns its place in the argument.
Role: Convert the strategist's outline into an actual presentation.
What it does:
Output: A complete deck as a native .pptx (via python-pptx) with editable text and editable charts. Optional: markdown or formatted text as an intermediate artifact for review.
Tools the Builder uses:
Tips for the Builder:
mckinsey-charts, not a screenshotRole: Review the deck like a senior engagement manager would — find every structural problem, weak argument, and missing element.
What it does:
Grading:
| Grade | Meaning |
|-------|---------|
| Green | Ready for stakeholders |
| Yellow | Fixable overnight, do not send as-is |
| Red | Core argument broken, needs rework |
What it checks:
Output: A critique document with section-by-section grades and top 3 prioritized fixes.
> See the McKinsey Critic skill for the full review framework.
Role: Apply the critic's top 3 fixes to produce the final deck.
What it does:
Common fixes the Fixer applies:
Output: The final deck with all fixes applied, plus a change log showing before → after for each fix.
"Build me a deck on [topic] for [audience]. Use the full pipeline —
strategist, builder, critic, fixer."
"I need a deck for [audience] arguing that [governing thought].
Key data points I have: [list any data, stats, or sources you want included]
Run the full pipeline: outline it, build it, critique it, fix it."
Step 1: "Act as the strategist. Define the audience, governing thought,
and 10-slide outline for [topic]."
Step 2: "Now act as the builder. Turn this outline into a full deck."
Step 3: "Now act as the McKinsey critic. Grade this deck and give me
the top 3 fixes."
Step 4: "Now act as the fixer. Apply the top 3 fixes."
Topic: "Should a premium coffee company enter the RTD (Ready-to-Drink) market?"
Strategist output:
Builder output: Full deck with data, stat callouts, comparison tables
Critic output:
Fixer output: Final deck with all sources added, comparison table rebuilt, financial frame on recommendation slide
Earlier versions of this repo paired the storyline with the Gamma API to generate finished decks. The current version uses native python-pptx + the mckinsey-charts skill instead. Reasons:
The gamma-automation/ folder is preserved for reference but is deprecated.
A single "build me a deck" prompt produces mediocre work because it tries to think strategically AND write content AND self-critique simultaneously. By separating the roles:
The result is a deck that has been through the equivalent of a junior consultant → senior associate → engagement manager review cycle.
Take sruthir28/deck-pipeline from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.