Excalidraw Slides
Hand-Drawn Style
rough.js
Open Source
Best for: Creative, educational, and whiteboard-style presentations — rough.js sketch aesthetics with 6 style presets and 15+ layout types, native .pptx output
Not ideal for: Formal corporate presentations, or users who don't want to install Playwright/Chromium (~130MB)
6 Sketch Style Presets
Clean Sketch
Light pencil lines, minimal noise — approachable hand-drawn feel
Bold Marker
Heavy marker strokes, high contrast — impactful whiteboard style
Notebook
Ruled paper texture, ballpoint pen strokes — lecture note aesthetic
Blackboard
Dark background, chalk-style white strokes — classroom presentation
Blueprint
Engineering blueprint grid, white line drawings — technical design style
Watercolor
Soft washes with sketch outlines — artistic, creative presentations
Each style applies a consistent rough.js rendering pass — line roughness, fill style, and stroke jitter are tuned per preset so results look intentional, not accidental.
Dual-Layer PPTX Architecture
Background Layer — rough.js PNG
+
Foreground Layer — python-pptx TextBox
The sketch texture is rendered via Playwright (headless Chromium) and embedded as a background image. Text and layout elements are placed as native python-pptx shapes on top — so the hand-drawn look is visual, but the content stays editable in PowerPoint.
Result: you get the aesthetic of a hand-drawn slide without losing editability. Collaborators can update text directly in PowerPoint without re-generating.
6-Phase Workflow
1
Content Structuring
Parse topic into slide outline
2
Style Selection
Choose sketch preset (or auto-select)
3
Layout Planning
Assign layout type per slide (15+ options)
4
HTML Generation
Build rough.js HTML template per slide
5
Playwright Render
Headless Chromium renders HTML → PNG
6
PPTX Assembly
python-pptx combines PNG + text layers
Key Capabilities
🎨
15+ Layout Types
split-visual, big-number, comparison, process-flow, icon-grid, timeline, and more — the skill applies a layout diversity algorithm ensuring no two consecutive slides use the same layout
✏️
60/40 Visual Rule
Each slide is required to have at least 60% visual content — enforced algorithmically, not just suggested. Results in consistently visual-heavy decks rather than text walls
🌏
CJK Font Support
Automatically switches font stacks for Chinese, Japanese, and Korean content — sketch aesthetics work for non-Latin character sets without manual font configuration
📝
Editable Output
Despite the hand-drawn background, all text is placed as native python-pptx TextBox objects — collaborators can edit content directly in PowerPoint without regenerating the slide
Signals
Output Format
Native .pptx
Render Engine
rough.js + Playwright
Style Presets
6 sketch themes
Requires Playwright
~130MB Chromium
Quality Assessment
Visual Design Quality
4.6
Tested with Clean Sketch and Blackboard styles. Visual quality is genuinely distinctive — rough.js rendering looks intentional, not broken. Ease score reflects the Playwright + Chromium requirement (~130MB) which adds friction for first-time setup. Layout diversity algorithm works as described: no two consecutive slides shared a layout in our test deck.
Install & Use
git clone https://github.com/danny0926/ppt-skills
cp -r ppt-skills/.claude/skills/excalidraw-slides ~/.claude/skills/excalidraw-slides
pip install jinja2 playwright python-pptx lxml
playwright install chromium