Skip to content

lowrentkicker/deck-builder

Repository files navigation

deck-builder

A Claude Code skill that builds branded presentation decks (.pptx) through a structured five-phase workflow. Give it source material — a doc, notes, data, or just a description — and it produces a polished, on-brand slide deck with consistent design, proper typography, and optional AI-generated images.

What It Does

  1. Gathers context — understands your audience, occasion, and source material
  2. Analyzes content — identifies narrative arc, maps content to 22 slide types, proposes a numbered deck plan
  3. Applies your brand — colors, fonts, visual elements, background rhythm from your brand profile
  4. Generates slides — builds native .pptx with editable text, charts, shapes, and icons via PptxGenJS
  5. Reviews quality — converts to images and runs visual QA against 12 hard rules, fixes issues before delivery

Output is a .pptx file compatible with Google Slides and Microsoft PowerPoint.

What Makes It Different

  • No bullet dumps. Content is mapped to the right visual format — data gets callout treatment, processes become flows, comparisons become tables. The skill actively prevents common AI-generated presentation failures.
  • Brand-aware. Your colors, fonts, and visual identity are encoded in a profile that the skill reads every time. No drift between decks.
  • Opinionated design system. Typography hierarchy, spacing rules, background rhythm, density management, and anti-pattern enforcement are built in. Every slide is composed, not templated.
  • Optional AI images. Generates contextual background images and supporting visuals via Nano Banana (Gemini 3 Pro) through OpenRouter. Falls back to shapes and icons if you skip image generation.
  • Speaker notes preserved, not invented. If you provide notes, they're mapped to slides verbatim. The skill never generates fake speaker notes.

Requirements

Requirement Purpose Install
Claude Code Runs the skill CLI, desktop app, or IDE extension
Node.js 18+ Builds .pptx files brew install node or nodejs.org

Optional (for template ingestion):

Requirement Purpose Install
Python 3.10+ Extracts layouts from a .pptx template brew install python or python.org
LibreOffice Converts template layouts to preview PNGs brew install --cask libreoffice (Mac) / apt install libreoffice (Linux)

Optional (for AI image generation):

Requirement Purpose Install
OpenRouter account Generates images via Nano Banana (Gemini 3 Pro) Sign up at openrouter.ai

Installation

  1. Clone or download this repo into your Claude Code skills directory:

    # Personal install (available in all projects)
    git clone https://github.com/lowrentkicker/deck-builder.git ~/.claude/skills/deck-builder
    
    # Or project-specific install
    git clone https://github.com/lowrentkicker/deck-builder.git your-project/.claude/skills/deck-builder
  2. Install Node dependencies:

    cd ~/.claude/skills/deck-builder
    npm install
  3. (Optional) Install Python dependencies for template ingestion:

    pip install -r ~/.claude/skills/deck-builder/scripts/requirements.txt
  4. (Optional) Set up OpenRouter for AI image generation:

    mkdir -p ~/.imagegen
    echo '{"api_key": "YOUR_OPENROUTER_KEY"}' > ~/.imagegen/config.json
    chmod 600 ~/.imagegen/config.json

That's it. Claude Code auto-discovers skills in ~/.claude/skills/.

First Run

The first time you use deck-builder, it walks you through brand profile onboarding — a one-time setup that teaches it your visual identity.

Step 1: Start a deck

Open Claude Code and say something like:

Build me a deck about Q2 results for the leadership team.

Claude will detect that no brand profile exists and ask how you want to set one up.

Step 2: Choose your onboarding path

Path A — "I have a PowerPoint template"

If your company has a branded .pptx template, provide the file path. Claude runs the inspection script to extract your template's slide layouts as PNGs, reads the structural data, then asks you about:

  • Your brand colors (exact hex values)
  • Font family
  • Logo file and placement
  • Visual tone

It generates a brand profile from your answers and the template analysis.

Path B — "I'm starting from scratch"

No template? No problem. Claude interviews you:

  • Do you have a website, logo, or brand guidelines?
  • What colors represent your brand? (or "what feeling should the deck convey?")
  • What visual style? (clean/minimal, bold/graphic, data-forward, editorial)
  • What tone? (formal, conversational, editorial, playful)

It suggests font pairings, proposes a color palette, and generates a profile from your answers.

Path C — "Just make it professional"

Skip onboarding entirely. A neutral starter profile (charcoal, blue accent, Work Sans font) is included and works out of the box.

Step 3: Build the deck

Once a profile exists, Claude moves into the five-phase workflow:

  1. Asks about your source material, audience, and any must-include points
  2. Produces a numbered Deck Plan — every slide listed with its type, background, content, and design rationale
  3. Waits for your approval before generating anything
  4. Builds the .pptx with native editable text, proper typography, and brand-correct colors
  5. Converts to images and runs visual QA — fixes issues before handing you the file

Every Time After

Once your brand profile exists, onboarding is skipped. Say "build me a deck" and Claude goes straight to context gathering.

You: Build a deck about the product roadmap for the engineering all-hands. 
     Here's the doc: /path/to/roadmap.md

Claude: [reads the doc, asks 2-3 clarifying questions]
Claude: [presents Deck Plan — 14 slides, each with type/content/rationale]

You: Looks good, but move the timeline to slide 4 and add a slide about hiring.

Claude: [updates plan, rebuilds]
Claude: [generates .pptx, runs QA, delivers file]

You can also:

  • Create additional brand profiles — "Set up a new brand profile called investor-deck" — for different audiences or sub-brands
  • Choose a profile per deck — Claude lists your available profiles and asks which one to use
  • Edit profiles directly — they're just markdown files in brand_profiles/

How It Works

deck-builder/
├── SKILL.md                    # Entry point — 5-phase workflow + 12 hard rules
├── onboarding.md               # Brand profile setup (template or interview)
├── brand_profile_schema.md     # Schema that profiles must follow
├── content_analysis.md         # Phase 2: source material → deck plan
├── slide_taxonomy.md           # 22 slide types with decision rules
├── design_system.md            # Visual rules, spacing, anti-patterns
├── image_generation.md         # AI images via OpenRouter (optional)
├── quality_review.md           # Phase 5: visual QA checklist
├── brand_profiles/
│   └── _starter/
│       └── profile.md          # Default neutral profile
├── scripts/
│   ├── inspect_template.py     # Template ingestion (optional)
│   └── requirements.txt
├── pptx/
│   └── pptxgenjs.md            # PptxGenJS slide construction reference
├── package.json
└── SETUP.md                    # Detailed setup reference

The skill is entirely markdown — no compiled code, no runtime server. Claude reads the relevant files at each phase and follows the instructions. The only executable is inspect_template.py, which runs once during template onboarding.

The 12 Hard Rules

These are enforced on every deck, every time:

  1. No "Thank you" / "Questions?" closing slides (unless explicitly asked)
  2. Title slide layout used exactly once — on slide 1
  3. No slides with >40% purposeless empty space
  4. No bullet lists when a visual format fits (tables, flows, cards)
  5. No centered body text — left-align paragraphs and lists
  6. Correct font on every text element
  7. No consecutive slides with the same layout
  8. Key metrics get big-number callout treatment
  9. No empty layout slots — redistribute or pick a different layout
  10. Split overflowing content rather than shrinking text
  11. Section dividers are visually distinct from content slides
  12. Every slide has at least one visual element (image, chart, icon, shape)

Font Note

Fonts in your brand profile must be installed on the machine where the .pptx is opened, not where it's built. If you use a custom font, include a fallback in your profile.

Safe defaults that are pre-installed almost everywhere:

  • Work Sans — free Google Font, used in the starter profile
  • Inter — free Google Font, widely available
  • Arial — pre-installed on virtually every machine

License

CC BY-NC 4.0 — free to use, share, and adapt with attribution. Not for commercial use.

About

A Claude Code skill that builds branded .pptx slide decks from source material. Supports template ingestion or guided brand setup from scratch. Optional AI image generation via OpenRouter. No runtime server — just markdown and one Python script.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages