From aradotso-trending-skills-37
Generates McKinsey-style PowerPoint presentations from natural language requests and data files (.xlsx, .csv, .docx, .pdf, .md, .txt). Includes 40 slide templates and an agent that selects and explains template choices per slide.
How this skill is triggered — by the user, by Claude, or both
Slash command
/aradotso-trending-skills-37:mckinsey-pptx-generatorThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
```markdown
---
name: mckinsey-pptx-generator
description: Generate McKinsey-style PowerPoint presentations via Claude Code plugin with 40 slide templates and intelligent template selection
triggers:
- "create a McKinsey style presentation"
- "generate a pptx slide deck"
- "make a consulting style PowerPoint"
- "build a business review deck"
- "create slides from Excel data"
- "generate a strategy presentation"
- "make a McKinsey deck from my data"
- "create a professional slide deck"
---
# McKinsey PPTX Generator
> Skill by [ara.so](https://ara.so) — Daily 2026 Skills collection.
A Claude Code plugin that generates McKinsey-style `.pptx` files from natural language instructions. It ships 40 professional slide templates and a subagent (`mckinsey-slide-agent`) that picks the right template for each slide and explains its reasoning.
---
## What It Does
- Accepts plain-language requests ("make a Q4 business review deck")
- Reads source files: `.xlsx`, `.csv`, `.docx`, `.pdf`, `.md`, `.txt`
- Selects from 40 consulting-grade slide templates (cover, chart, matrix, roadmap, dashboard, etc.)
- Explains template selection rationale per slide
- Writes a finished `.pptx` to `output/` in the working directory
---
## Installation (Claude Code Plugin)
### Step 1 — Add from marketplace
/plugin marketplace add seulee26/mckinsey-pptx
### Step 2 — Install
/plugin install axlabs-mckinsey-pptx@axlabs
### Step 3 — **Restart Claude Code** (critical)
The plugin only loads after a full restart:
/exit
Then relaunch Claude Code. Verify:
/agents
`mckinsey-slide-agent` must appear in the list.
### Step 4 — Install Python dependencies
Tell Claude:
이 플러그인이 쓸 파이썬 라이브러리들 설치해줘.
Or manually:
```bash
pip install python-pptx openpyxl python-docx pdfplumber pandas
brew install --cask libreoffice && brew install poppler
axlabs-mckinsey-pptx/
├── templates/ # 40 slide template definitions
├── agents/
│ └── mckinsey_slide_agent.py # subagent: picks templates, defends choices
├── generators/
│ ├── slide_builder.py # python-pptx slide construction
│ ├── chart_builder.py # chart rendering helpers
│ └── data_reader.py # xlsx/csv/pdf/docx ingestion
├── themes/
│ └── mckinsey.py # colour palette, fonts, spacing
└── output/ # generated .pptx files land here
my-deck/
├── inputs/
│ ├── revenue.xlsx
│ ├── roadmap.md
│ └── research.pdf
└── output/ ← auto-created; .pptx files appear here
Launch Claude Code from inside my-deck/ so the agent can read inputs/:
cd ~/Desktop/my-deck
claude
Q4 사업 리뷰 데크 만들어줘. 매출 1,200억, 전년 대비 14% 성장, KPI 지연 2건.
inputs/revenue.xlsx의 '월별매출' 시트 숫자로 Q4 리뷰 덱 7슬라이드 만들어줘.
경영진 대상, 결론은 투자 승인 요청.
Create a 10-slide market entry kickoff deck in English.
Use inputs/market_research.pdf for context and inputs/roadmap.md for the timeline.
Show the 12-week plan as a Gantt chart.
inputs/5yr_revenue.csv만 보고, 이 숫자들이 말하는 이야기를 찾아서
5슬라이드로 보여줘. 어떤 메시지가 중요한지 네가 판단해줘.
Key categories the subagent chooses from:
| Category | Templates include |
|---|---|
| Cover / Title | title-dark, title-light, title-split |
| Executive Summary | exec-summary-3up, exec-summary-bullets |
| Charts | bar-chart, line-trend, waterfall, stacked-bar |
| KPI / Dashboard | kpi-4up, kpi-dashboard, scorecard |
| Matrix / 2×2 | bcg-matrix, priority-matrix, risk-matrix |
| Comparison | side-by-side, 3-column-compare, before-after |
| Process / Roadmap | timeline, gantt, swim-lane, process-flow |
| Text / Insight | single-insight, bullets-3, quote-callout |
| Appendix | data-table, footnote-slide |
from generators.slide_builder import DeckBuilder
from themes.mckinsey import McKinseyTheme
theme = McKinseyTheme()
deck = DeckBuilder(theme=theme, output_dir="output")
# Cover slide
deck.add_slide(
template="title-dark",
data={
"title": "Q4 2025 Business Review",
"subtitle": "Board of Directors",
"date": "December 2025",
}
)
# KPI dashboard from dict
deck.add_slide(
template="kpi-4up",
data={
"kpis": [
{"label": "Revenue", "value": "₩120B", "delta": "+14%", "trend": "up"},
{"label": "Gross Margin", "value": "38%", "delta": "+2pp", "trend": "up"},
{"label": "NPS", "value": "42", "delta": "+7", "trend": "up"},
{"label": "Delayed KPIs", "value": "2", "delta": "", "trend": "flat"},
]
}
)
# Bar chart from pandas DataFrame
import pandas as pd
df = pd.DataFrame({
"Month": ["Jan","Feb","Mar","Apr","May","Jun"],
"Revenue": [8.2, 9.1, 10.4, 11.0, 10.8, 12.3],
})
deck.add_slide(
template="bar-chart",
data={
"title": "Monthly Revenue Trend (₩B)",
"dataframe": df,
"x_col": "Month",
"y_col": "Revenue",
"highlight_last": True,
}
)
# 2×2 priority matrix
deck.add_slide(
template="priority-matrix",
data={
"title": "Initiative Prioritisation",
"x_label": "Effort",
"y_label": "Impact",
"items": [
{"label": "CRM Upgrade", "x": 0.3, "y": 0.9},
{"label": "ERP Migration", "x": 0.9, "y": 0.6},
{"label": "Brand Refresh", "x": 0.4, "y": 0.4},
{"label": "Market Research", "x": 0.2, "y": 0.5},
]
}
)
# Gantt / roadmap
deck.add_slide(
template="gantt",
data={
"title": "12-Week Launch Roadmap",
"phases": [
{"name": "Discovery", "start": 1, "end": 3, "owner": "Strategy"},
{"name": "Build", "start": 3, "end": 8, "owner": "Engineering"},
{"name": "Pilot", "start": 7, "end": 10, "owner": "Operations"},
{"name": "Scale", "start": 10,"end": 12, "owner": "All"},
]
}
)
path = deck.save("q4-review")
print(f"Saved → {path}") # output/q4-review.pptx
from generators.data_reader import DataReader
reader = DataReader()
# Excel — specify sheet and range
df = reader.read_excel(
path="inputs/revenue.xlsx",
sheet="월별매출",
usecols="A:F",
nrows=12,
)
# CSV
df = reader.read_csv("inputs/5yr_revenue.csv")
# PDF — returns extracted text per page
pages = reader.read_pdf("inputs/research.pdf", page_range=(3, 7))
# Word document
text = reader.read_docx("inputs/brief.docx")
from agents.mckinsey_slide_agent import McKinseySlideAgent
agent = McKinseySlideAgent()
# Ask agent to select a template and explain why
result = agent.select_template(
slide_intent="Show five-year revenue growth with a CAGR callout",
available_data={"type": "time_series", "rows": 5, "metric": "revenue"},
)
print(result["template"]) # e.g. "line-trend"
print(result["rationale"]) # agent's explanation
print(result["alternatives"]) # runner-up templates
# Build the slide with agent's choice
from generators.slide_builder import DeckBuilder
deck = DeckBuilder()
deck.add_slide(template=result["template"], data={"dataframe": df, "title": "Revenue 2020–2025"})
deck.save("revenue-story")
After the first draft, keep the conversation going:
슬라이드 4를 다른 레이아웃으로 바꿔줘. 숫자 비교가 더 잘 보이게.
슬라이드 2의 세 번째 불릿을 "NPS 42점(업계 평균 +15)"로 수정.
전체 톤을 더 단정하게. 이모지랑 느낌표 다 빼줘.
이 덱 영문판도 같이 만들어줘. 구조랑 숫자는 똑같이.
표지에 inputs/logo.png 넣어줘.
from themes.mckinsey import McKinseyTheme
# Default: McKinsey deep-navy palette
theme = McKinseyTheme()
# Override brand colours
theme.primary = "#003087" # your brand navy
theme.accent = "#E8000D" # your brand red
theme.font_body = "Pretendard"
# Override slide dimensions (default: widescreen 16:9)
theme.slide_width_emu = 9144000 # 10 inches
theme.slide_height_emu = 5143500 # 5.625 inches
from generators.slide_builder import DeckBuilder
deck = DeckBuilder(theme=theme)
deck.add_slide("title-dark", data={"title": "Q4 Business Review", "date": "Dec 2025"})
deck.add_slide("exec-summary-3up", data={"points": ["Revenue beat +14%", "2 KPI delays", "3 new markets"]})
deck.add_slide("bar-chart", data={"title": "Monthly Revenue", "dataframe": monthly_df})
deck.add_slide("kpi-4up", data={"kpis": kpi_list})
deck.add_slide("risk-matrix", data={"title": "Risk Register", "items": risks})
deck.add_slide("timeline", data={"title": "H1 2026 Roadmap", "phases": roadmap})
deck.add_slide("single-insight", data={"headline": "Recommend: approve ₩5B expansion budget"})
deck.save("q4-review")
deck.add_slide("title-split", data={"title": "Indonesia Market Entry", "subtitle": "Strategic Assessment"})
deck.add_slide("bcg-matrix", data={"title": "Portfolio View", "items": portfolio})
deck.add_slide("side-by-side", data={"left": build_case, "right": partner_case})
deck.add_slide("gantt", data={"title": "18-Month Roadmap", "phases": phases})
deck.save("indonesia-strategy")
| Symptom | Fix |
|---|---|
mckinsey-slide-agent not in /agents | Restart Claude Code completely (/exit then relaunch) |
ModuleNotFoundError: python_pptx | pip install python-pptx openpyxl python-docx pdfplumber pandas |
| PDF table extraction garbled | Supply the same data as .xlsx; agent prefers Excel over PDF tables |
.doc file not readable | Open in Word and resave as .docx |
| Slide layout looks wrong | Ask: "슬라이드 N 다른 레이아웃으로 바꿔줘" — agent picks from alternatives |
| Logo not appearing | Confirm path is relative to working directory: inputs/logo.png |
| Output folder missing | Created automatically on first deck.save(); check working directory |
| LibreOffice preview fails | Preview is optional — .pptx is still valid; open with PowerPoint/Keynote |
from generators.slide_builder import DeckBuilderfrom agents.mckinsey_slide_agent import McKinseySlideAgentoutput/<name>.pptx relative to the Claude Code working directorynpx claudepluginhub aradotso/trending-skillsPopulates investment banking pitch deck templates with data from Excel/CSV source files. Automates filling existing PowerPoint slide layouts with financial data and calculations.
Generates slide deck presentations from briefs with audience targeting, outline approval, and PPTX export. Useful for pitch decks, slide decks, or visual summaries.
Generates professional presentations and slide decks using Eachlabs' each::sense AI API. Supports pitch decks, business slides, training materials, conference talks, and more with AI-powered generation.