install
source · Clone the upstream repo
git clone https://github.com/Aradotso/trending-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/Aradotso/trending-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/mckinsey-pptx-generator" ~/.claude/skills/aradotso-trending-skills-mckinsey-pptx-generator && rm -rf "$T"
manifest:
skills/mckinsey-pptx-generator/SKILL.mdsource content
--- 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
Optional — PDF preview (macOS)
brew install --cask libreoffice && brew install poppler
Project Structure
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
Recommended Folder Layout for Your Project
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
Core Usage — Natural Language Requests
Minimal request
Q4 사업 리뷰 데크 만들어줘. 매출 1,200억, 전년 대비 14% 성장, KPI 지연 2건.
With source files
inputs/revenue.xlsx의 '월별매출' 시트 숫자로 Q4 리뷰 덱 7슬라이드 만들어줘. 경영진 대상, 결론은 투자 승인 요청.
English deck
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.
Let the agent find the story
inputs/5yr_revenue.csv만 보고, 이 숫자들이 말하는 이야기를 찾아서 5슬라이드로 보여줘. 어떤 메시지가 중요한지 네가 판단해줘.
Template Catalogue (40 templates)
Key categories the subagent chooses from:
| Category | Templates include |
|---|---|
| Cover / Title | , , |
| Executive Summary | , |
| Charts | , , , |
| KPI / Dashboard | , , |
| Matrix / 2×2 | , , |
| Comparison | , , |
| Process / Roadmap | , , , |
| Text / Insight | , , |
| Appendix | , |
Python API — Direct Usage
Build a slide deck programmatically
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
Read source data before building
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")
Invoke the subagent directly (Python)
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")
Iterative Refinement via Chat
After the first draft, keep the conversation going:
슬라이드 4를 다른 레이아웃으로 바꿔줘. 숫자 비교가 더 잘 보이게.
슬라이드 2의 세 번째 불릿을 "NPS 42점(업계 평균 +15)"로 수정.
전체 톤을 더 단정하게. 이모지랑 느낌표 다 빼줘.
이 덱 영문판도 같이 만들어줘. 구조랑 숫자는 똑같이.
표지에 inputs/logo.png 넣어줘.
Theme Customisation
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)
Common Patterns
Pattern A — Monthly business review
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")
Pattern B — Strategy one-pager
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")
Troubleshooting
| Symptom | Fix |
|---|---|
not in | Restart Claude Code completely ( then relaunch) |
| |
| PDF table extraction garbled | Supply the same data as ; agent prefers Excel over PDF tables |
file not readable | Open in Word and resave as |
| Slide layout looks wrong | Ask: "슬라이드 N 다른 레이아웃으로 바꿔줘" — agent picks from alternatives |
| Logo not appearing | Confirm path is relative to working directory: |
| Output folder missing | Created automatically on first ; check working directory |
| LibreOffice preview fails | Preview is optional — is still valid; open with PowerPoint/Keynote |
Key Facts for AI Agents
- Entry point for chat: just describe the deck in Korean or English — no command needed
- Entry point for code:
from generators.slide_builder import DeckBuilder - Template selector:
from agents.mckinsey_slide_agent import McKinseySlideAgent - Output: always
relative to the Claude Code working directoryoutput/<name>.pptx - Data privacy: files are processed locally; only the conversation text reaches Anthropic servers
- No design knowledge required: the subagent handles all template selection and layout decisions