Loading...
Loading...
Create visual presentations, slide decks, and explanatory diagrams in Excalidraw. Use when user asks to create a presentation, slide deck, visual explainer, pitch deck, comparison diagram, process flow, or any multi-slide visual content. Supports two output modes — generating .excalidraw JSON files OR injecting slides directly into excalidraw.com via Chrome browser automation (clipboard JS injection + paste). Combines presentation design expertise with Excalidraw technical implementation.
npx skill4agent add naveedharri/benai-skills excalidrawAskUserQuestion.excalidraw/brand.md.claude/product-marketing-context.md"I found your saved brand config — I'll use it unless you want to start fresh."
AskUserQuestionquestion: "What type of presentation are you creating?"
header: "Type"
options:
- label: "Pitch deck"
description: "Persuade someone — sell an idea, product, or strategy"
- label: "Explainer"
description: "Break down a concept, system, or process so people understand it"
- label: "Tutorial / How-to"
description: "Step-by-step guide teaching someone how to do something"
- label: "Process / Architecture diagram"
description: "Map out a system, workflow, or technical architecture"
multiSelect: falsequestion: "Who will see this presentation?"
header: "Audience"
options:
- label: "Clients / Prospects"
description: "External stakeholders you want to impress or persuade"
- label: "Internal team"
description: "Colleagues who need clarity, not polish"
- label: "Investors"
description: "People evaluating your idea — need credibility and vision"
- label: "Social media / Educational"
description: "Public audience — needs to be visually striking and self-explanatory"
multiSelect: falsequestion: "What should this presentation accomplish?"
header: "Goal"
options:
- label: "Persuade"
description: "Sell an idea — emphasis on benefits, proof, and call to action"
- label: "Educate"
description: "Teach a concept — emphasis on clarity, progression, and examples"
- label: "Document"
description: "Capture a process — emphasis on accuracy, completeness, and structure"
- label: "Impress"
description: "Showcase results — emphasis on metrics, visuals, and impact"
multiSelect: false"Got it — a [type] for [audience] to [motivation]. Let's figure out the look and feel."
.excalidraw/brand.mdquestion: "I found your saved brand style. What would you like to do?"
header: "Brand"
options:
- label: "Use saved brand (Recommended)"
description: "Apply your existing colors, fonts, and tone"
- label: "Start fresh"
description: "Set up brand style from scratch"
multiSelect: falsequestion: "How should I get your brand style?"
header: "Style source"
options:
- label: "Scrape my website"
description: "I'll extract colors, fonts, and tone from your URL"
- label: "I'll describe it"
description: "Tell me your colors, tone, and vibe"
- label: "Use a clean default"
description: "Professional blue/gray palette — looks good on everything"
- label: "Match a reference"
description: "Provide a screenshot or link and I'll match the style"
multiSelect: falseWebFetchAskUserQuestionquestion: "What's your brand's visual tone?"
header: "Tone"
options:
- label: "Professional"
description: "Clean lines, muted colors, corporate feel"
- label: "Playful"
description: "Bright colors, rounded shapes, friendly vibe"
- label: "Bold"
description: "High contrast, strong colors, makes a statement"
- label: "Minimal"
description: "Lots of whitespace, subtle colors, elegant"
multiSelect: falsereferences/design-principles.md.excalidraw/brand.md# Brand Configuration
## Visual Identity
- Primary Color: #HEX (Name)
- Accent Color: #HEX (Name)
- Tone: Professional / Playful / Bold / Minimal
- Font Preference: Clean (fontFamily 2) / Hand-drawn (fontFamily 1)
## Source
- Origin: Website extraction / Manual / Preset / Reference match
- URL: (if applicable)
## Learned Preferences
<!-- Updated after each session -->
## Session History
<!-- Appended after each session -->
---
*Last updated: YYYY-MM-DDTHH:MM:SSZ*.excalidraw/"Do you have content ready — notes, a transcript, an article, bullet points — or should we build the narrative together?"
"What's the core message? If the audience remembers ONE thing, what should it be?" "What are the 3-5 key points that support this message?"
"Any specific data, quotes, examples, or comparisons to include?" "What should the audience DO after seeing this? (your call to action)"
AskUserQuestionquestion: "Which narrative flow fits your story best?"
header: "Structure"
options:
- label: "Problem → Solution → Proof"
description: "Start with the pain, show your fix, prove it works. Best for pitches."
- label: "Before → After → How"
description: "Show the old way vs. the new way, then explain the steps. Best for tutorials."
- label: "What → Why → How"
description: "Define the concept, explain why it matters, show how it works. Best for explainers."
- label: "Status Quo → Tension → Resolution"
description: "Build tension around a problem, then resolve it. Best for persuasion."
multiSelect: falsereferences/design-principles.mdHere's my proposed flow:
1. "The Problem" — Visual metaphor: heavy weight crushing down, red tones,
one dominant shape showing the pain
2. "Why It Happens" — Tangled web radiating from a central knot, showing
interconnected root causes (not a list of boxes)
3. "Our Solution" — Winding path from dark/cramped (left) to open/bright
(right), showing the transformation journey
4. "The Results" — Giant "47%" as the visual anchor, with small supporting
context around it. The number IS the slide.
5. "Next Steps" — Single bold shape with CTA, clean and spacious
Want to add, remove, or reorder anything?**[SLIDE 1: The Problem]**
**What you'll see:** A large, heavy dark shape dominates the center — it
feels oppressive, like a weight pressing down. Three smaller red shapes
are being crushed underneath it, each labeled with a specific pain point.
The visual immediately communicates "something is wrong and heavy."
**Shapes used:** Large ellipse (the problem), small compressed rectangles
(the pain points), downward arrows showing pressure
**Mood:** Tense, urgent — red/dark tones, high contrastquestion: "Does this visual approach work for Slide 1?"
header: "Slide 1"
options:
- label: "Go ahead"
description: "Build it as described"
- label: "Try a different layout"
description: "I'd prefer a different diagram type"
- label: "Simpler"
description: "Fewer elements, more whitespace"
- label: "More detailed"
description: "Add more information and visual elements"
multiSelect: falsereferences/element-reference.mdreferences/design-principles.mdconst slideGroupId = `slide${N}-group-${Math.random().toString(36).substr(2, 6)}`;Slide 1: x=0, y=0 Slide 2: x=900, y=0
Slide 3: x=0, y=600 Slide 4: x=900, y=600
Slide 5: x=0, y=1200 Slide 6: x=900, y=1200references/chrome-automation.mdquestion: "How does Slide N look?"
header: "Review"
options:
- label: "Looks great, next slide"
description: "Move on to the next slide"
- label: "Adjust colors/style"
description: "The layout is fine but the colors or styling need tweaking"
- label: "Redo layout"
description: "The visual approach isn't working — try a different diagram type"
- label: "Edit text/content"
description: "The visuals are fine but the text needs changes"
multiSelect: falsetabs_context_mcpTo inject slides into Excalidraw, please install the Claude in Chrome extension: https://chromewebstore.google.com/detail/claude-in-chrome/anthropicOnce installed, restart Chrome and try again.Alternatively, I can save slides as .excalidraw JSON files you can import.
references/chrome-automation.md"All slides are on the canvas. Want to adjust any slide before we finalize?"
.excalidrawpresentation-name.excalidraw.excalidraw/brand.md.excalidraw/brand.md## Session History
### YYYY-MM-DD — [Presentation Title]
- Type: Pitch deck for investors
- Slides: 6
- Style notes: Preferred minimal layouts, liked hub & spoke for architecture
- Adjustments: Made Slide 3 simpler, changed accent from orange to teal"Your presentation is ready! Here's a summary of what we built:
- [N] slides using [narrative arc]
- Brand config saved to
.excalidraw/brand.md- [File location or 'injected into excalidraw.com']"
(async () => {
const elements = [ /* slide elements here */ ];
const clipboardData = {
type: "excalidraw/clipboard",
elements: elements,
files: {}
};
await navigator.clipboard.writeText(JSON.stringify(clipboardData));
return "Slide ready";
})()cmd+vctrl+v| Purpose | Light | Dark |
|---|---|---|
| Primary/Blue | #a5d8ff | #1971c2 |
| Success/Green | #b2f2bb | #2f9e44 |
| Warning/Yellow | #fff3bf | #f08c00 |
| Danger/Red | #ffc9c9 | #e03131 |
| Neutral/Gray | #e9ecef | #495057 |
| Text | — | #1e1e1e |
| Accent/Orange | — | #d97757 |
123