SlideCraft
A plugin for Claude Code and Claude Cowork that builds PowerPoint presentations from natural language. Describe the deck you want, and Claude generates a YAML content file, builds it into a polished .pptx, and iterates with you until it's right.
No templates to fight with. No dragging boxes around. Just say what you need.
Install
Claude Code (CLI)
Add the plugin marketplace, then install:
/plugin marketplace add jvsteiner/slidecraft
/plugin install slide-builder@slidecraft
Claude Cowork (Desktop)
- Download or clone this repository
- Open Claude Desktop and switch to the Cowork tab
- Click Plugins in the left sidebar
- Click Upload plugin
- Select the downloaded plugin folder
The plugin handles its own Python dependency installation on first use.
Usage
Just ask Claude to make a presentation:
"Create a 10-slide pitch deck for a B2B SaaS product called Archway"
"Make a quarterly board update with our key metrics"
"Build a team intro deck with profile cards for our engineering leads"
Claude will write the YAML, pick an appropriate theme, build the .pptx, and hand you the file. You can then ask for changes — swap layouts, adjust colors, rewrite copy — and it rebuilds.
In Claude Code, you can also invoke the skill explicitly with /slide-builder.
Themes
6 built-in themes, each with curated fonts, colors, and spacing:
| Theme | Style | Best for |
|---|
| Boardroom | White/navy | Corporate, consulting, board decks |
| Midnight | Dark slate/sky-blue | Technical, dev tools, engineering |
| Ember | Warm white/burnt orange | Editorial, brand strategy, marketing |
| Ink | Pure white/red | Minimal, Apple-style, product launches |
| Canopy | Off-white/forest green | Sustainability, wellness, education |
| Signal | White/vivid purple | Consumer products, demo day, pitch |
Claude picks the theme that fits your content, or you can ask for a specific one.
Theme configuration
Themes are defined in the theme: block of the YAML file:
theme:
font_display: "Futura" # Headings, titles, large text
font_body: "Avenir Next" # Body text, bullets, captions
background_image: "images/bg.jpg" # Optional — global background image
overlay: # Optional — overlay on background images
color: "#000000"
opacity: 0.4
colors:
bg: "#0F172A" # Slide background
surface: "#1E293B" # Cards, sidebars, table headers
primary: "#38BDF8" # Accent color (headings, highlights)
primary_dark: "#0EA5E9" # Darker accent variant
text: "#F8FAFC" # Primary text
text_secondary: "#CBD5E1" # Body text, bullets
text_muted: "#94A3B8" # Subtitles, captions
text_dim: "#64748B" # Footers, slide numbers
divider: "#334155" # Horizontal rules
row_alt: "#1E293B" # Alternating table rows
border: "#475569" # Card/table borders
danger: "#F87171" # Red accent
success: "#34D399" # Green accent
warning: "#FBBF24" # Yellow accent
spacing:
margin: 0.8 # Outer margin (inches)
gutter: 0.4 # Gap between columns (inches)
margin_top: 0.6 # Top margin for headers
title_height: 0.8 # Title zone height
footer_y: 7.0 # Footer vertical position
Background Images
Slides can use an image as the background, configured globally or per-slide.
Global background (all slides)
Set background_image in the theme block. Every slide uses this image unless overridden:
theme:
background_image: "images/dark-texture.jpg"
overlay:
color: "#000000"
opacity: 0.5
Per-slide override
Individual slides can use a different image, or disable the background entirely:
slides:
- layout: title
title: "Welcome"
background_image: "images/hero-photo.jpg" # different image for this slide
overlay:
color: "#000000"
opacity: 0.6
- layout: content
title: "Details"
background_image: null # no background image, solid color
Overlay
The optional overlay adds a semi-transparent color layer between the background image and slide content, improving text readability over photos. opacity ranges from 0.0 (fully transparent) to 1.0 (fully opaque).
Image paths are relative to the YAML file.
Layouts
21 slide layouts covering the patterns you actually use in decks.
Openers and closers
title
Opening slide with large title, optional tagline, subtitle, and footer.