Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Generate hand-drawn style Excalidraw diagrams from text descriptions
.claude/skills/brycewang-stanford-excalidraw-diagram-guide/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 19% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 4% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 19% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 44% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 21% | 0% |
Generate hand-drawn style diagrams, wireframes, and visual explanations using Excalidraw's open-source whiteboard format. This skill enables researchers to create informal yet informative sketches for brainstorming sessions, presentations, and collaborative workshops.
Excalidraw is an open-source virtual whiteboard tool that produces diagrams with a distinctive hand-drawn aesthetic. Unlike formal diagramming tools such as PlantUML or Visio, Excalidraw prioritizes approachability and rapid ideation. Its output looks intentionally informal, which makes it well-suited for early-stage research brainstorming, teaching materials, and conference posters where a polished UML diagram would feel overly rigid.
The tool stores diagrams in a JSON-based .excalidraw format, making them fully version-controllable and programmatically generatable. Researchers can describe what they need in natural language, and this skill translates those descriptions into valid Excalidraw scene files that can be opened in the Excalidraw editor or embedded directly into web pages.
Excalidraw supports real-time collaboration, end-to-end encryption for shared sessions, and export to PNG and SVG. The hand-drawn style is achieved through a custom rendering engine that applies subtle randomization to stroke paths, giving each element a natural, sketched appearance.
The Excalidraw JSON format consists of an array of elements, each with a type (rectangle, ellipse, arrow, text, line, diamond), position coordinates, dimensions, and style properties.
json{ "type": "rectangle", "x": 100, "y": 200, "width": 200, "height": 80, "strokeColor": "#1e1e1e", "backgroundColor": "#a5d8ff", "fillStyle": "hachure", "strokeWidth": 1, "roughness": 1, "roundness": { "type": 3 } }
| Property | Values | Description | |----------|--------|-------------| | fillStyle | hachure, cross-hatch, solid | Fill pattern style | | roughness | 0, 1, 2 | Hand-drawn roughness level | | strokeWidth | 1, 2, 4 | Line thickness | | strokeStyle | solid, dashed, dotted | Line style | | roundness | null, { "type": 3 } | Corner rounding |
Primary: #1971c2 (blue) Background: #a5d8ff
Accent: #e03131 (red) Background: #ffc9c9
Success: #2f9e44 (green) Background: #b2f2bb
Warning: #f08c00 (orange) Background: #ffec99
Neutral: #495057 (gray) Background: #dee2e6Describe a research pipeline and generate the corresponding layout:
Input: "Create a flowchart showing: Literature Review -> Research Questions ->
Hypothesis Formation -> Study Design -> Data Collection -> Analysis ->
Results -> Discussion -> Publication"Each step becomes a rounded rectangle connected by arrows. Decision points (e.g., "Results Significant?") use diamond shapes with branching arrows.
For software or experimental system diagrams, use grouped rectangles with labeled connections:
Input: "Draw a system architecture with three layers:
Frontend (React dashboard),
Backend (FastAPI + PostgreSQL),
External (OpenAlex API, CrossRef API)"The output places each layer as a dashed-border container with internal component boxes and inter-layer arrows.
exportScale: 2 for high-DPI output.html<iframe src="https://excalidraw.com/#json=YOUR_ENCODED_DATA" width="800" height="600" style="border: none;"> </iframe>
pythonimport json def create_box(text, x, y, width=200, height=80, color="#a5d8ff"): return [ { "type": "rectangle", "x": x, "y": y, "width": width, "height": height, "backgroundColor": color, "fillStyle": "hachure", "roughness": 1, "strokeWidth": 1 }, { "type": "text", "x": x + 10, "y": y + 25, "text": text, "fontSize": 16 } ] scene = { "type": "excalidraw", "version": 2, "elements": create_box("Literature Review", 100, 100) + create_box("Data Analysis", 100, 250) } with open("research_flow.excalidraw", "w") as f: json.dump(scene, f, indent=2)
Excalidraw supports live collaboration through shared session links. Each participant sees real-time cursor positions and edits. Sessions can be encrypted end-to-end using the built-in encryption feature, which is important when sketching unpublished research ideas.
For research teams, the recommended workflow is:
.excalidraw JSON and commit to the project repository\includesvg{} (requires svg package)IPython.display.Image.excalidraw files in the IDE| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 35,479 | 40,087 | +13% | 1 | 1 | 0% | 8,271 | 9,812 | +19% | 0 | 0 | — |
case-02 | fail→pass | 35,680 | 38,174 | +7% | 1 | 1 | 0% | 8,266 | 8,593 | +4% | 0 | 0 | — |
case-03 | fail→pass | 45,157 | 46,329 | +3% | 1 | 1 | 0% | 8,266 | 9,836 | +19% | 0 | 0 | — |
case-04 | pass→pass | 13,341 | 15,911 | +19% | 1 | 1 | 0% | 2,179 | 4,329 | +99% | 0 | 0 | — |
case-05 | pass→pass | 14,938 | 12,093 | -19% | 1 | 1 | 0% | 2,341 | 3,528 | +51% | 0 | 0 | — |
case-06 | pass→pass | 11,122 | 11,667 | +5% | 1 | 1 | 0% | 2,082 | 3,730 | +79% | 0 | 0 | — |
case-07 | pass→pass | 8,410 | 5,968 | -29% | 1 | 1 | 0% | 1,543 | 2,776 | +80% | 0 | 0 | — |
case-08 | pass→pass | 5,946 | 3,117 | -48% | 1 | 1 | 0% | 894 | 2,097 | +135% | 0 | 0 | — |
case-09 | pass→pass | 3,258 | 3,037 | -7% | 1 | 1 | 0% | 508 | 2,030 | +300% | 0 | 0 | — |
case-10 | pass→pass | 6,991 | 4,957 | -29% | 1 | 1 | 0% | 1,355 | 2,326 | +72% | 0 | 0 | — |
case-11 | fail→pass | 8,717 | 3,765 | -57% | 1 | 1 | 0% | 1,532 | 2,200 | +44% | 0 | 0 | — |
case-12 | fail→fail | 10,780 | 1,399 | -87% | 1 | 1 | 0% | 1,821 | 1,844 | +1% | 0 | 0 | — |
case-13 | fail→pass | 9,530 | 2,731 | -71% | 1 | 1 | 0% | 1,657 | 1,997 | +21% | 0 | 0 | — |
case-22 | pass→pass | 14,639 | 1,998 | -86% | 1 | 1 | 0% | 1,120 | 1,914 | +71% | 0 | 0 | — |
case-14 | fail→fail | 12,577 | 3,300 | -74% | 1 | 1 | 0% | 2,400 | 2,017 | -16% | 0 | 0 | — |
case-15 | pass→pass | 13,589 | 7,959 | -41% | 1 | 1 | 0% | 2,613 | 3,159 | +21% | 0 | 0 | — |
case-16 | fail→pass | 7,697 | 3,458 | -55% | 1 | 1 | 0% | 1,111 | 2,116 | +90% | 0 | 0 | — |
case-17 | pass→pass | 20,509 | 16,721 | -18% | 1 | 1 | 0% | 3,471 | 4,509 | +30% | 0 | 0 | — |
case-18 | pass→pass | 8,111 | 3,279 | -60% | 1 | 1 | 0% | 1,454 | 2,016 | +39% | 0 | 0 | — |
case-19 | pass→pass | 3,244 | 1,620 | -50% | 1 | 1 | 0% | 432 | 1,803 | +317% | 0 | 0 | — |
case-20 | pass→pass | 5,404 | 4,702 | -13% | 1 | 1 | 0% | 831 | 2,177 | +162% | 0 | 0 | — |
case-21 | pass→pass | 4,628 | 3,031 | -35% | 1 | 1 | 0% | 655 | 1,916 | +193% | 0 | 0 | — |
case-23 | fail→fail | 3,541 | 2,639 | -25% | 1 | 1 | 0% | 611 | 2,049 | +235% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +26 percentage points is the difference between those two pass rates over the 23 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.