一键导入
excalidraw-diagram
Use when someone asks to draw a diagram, make an Excalidraw diagram, or build an editable diagram. Default for all diagram requests.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Use when someone asks to draw a diagram, make an Excalidraw diagram, or build an editable diagram. Default for all diagram requests.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
DEPRECATED. Koyeb removed its free tier. Use github-actions-deploy or n8n-workflow-deploy instead.
Deploy any automation to run on schedule using GitHub Actions. Use when user asks to deploy with cron, schedule an automation, run code automatically, or deploy for free.
Deploy serverless Python functions and AI workloads to Modal. Use when user needs GPU, AI inference, serverless Python, or scheduled AI tasks.
Deploy automations as n8n workflows — visual, webhook-driven, multi-step. Use when user asks to create a workflow, connect services visually, or deploy to n8n.
Deploy frontends, dashboards, webhooks, and API endpoints to Vercel. Use when user needs a web UI, dashboard, webhook receiver, or Next.js/React frontend.
Add 6-layer guardrail pipeline to any AI agent — RBAC, injection defense, output filtering, monitoring
| name | excalidraw-diagram |
| description | Use when someone asks to draw a diagram, make an Excalidraw diagram, or build an editable diagram. Default for all diagram requests. |
| argument-hint | [topic] |
Before generating anything, make sure you know:
If the request is vague (e.g., "make a diagram of Docker"), ask 1-2 clarifying questions:
If you're not confident about the technical accuracy of the concept, research it before diagramming. Verify:
Before writing any JSON, sketch the layout mentally:
Write down the section plan:
[Section A: w=170] --40px gap-- [Section B: w=170] --40px gap-- [Section C: w=640]
Build elements in order:
[concept-slug].excalidraw in the current directoryHow to view and edit your diagram:
- Go to excalidraw.com (free, no account needed)
- Option A: Click the menu (top-left hamburger icon) > "Open" > select the
.excalidrawfile- Option B: Copy the JSON code block above, open excalidraw.com, and paste it with Ctrl+V / Cmd+V
- Every element is fully editable -- drag to move, grab handles to resize, double-click to edit text
If the user asks for changes:
text and originalText fieldsText inside colored shapes must be readable. Use #1e1e1e (near-black) or #343a40 (dark charcoal) for all text inside filled shapes. Never use the zone's stroke color for text sitting on that zone's background (e.g., yellow text on a yellow card is unreadable). Reserve the zone's strokeColor for shape borders and arrows only.
Color tells the story: One color per logical zone. Everything in the "input" zone is blue. Everything in the "output" zone is green. The viewer should understand structure before reading a word.
Nesting shows containment: If X lives inside Y, X's box is drawn inside Y's box with consistent padding. Coordinates are absolute, not relative: child_x = parent_x + padding.
Labels are short: 2-5 words per label. Longer explanations become annotations with smaller fontSize and muted color (#868e96).
White space is structure: 15px minimum gap between siblings. 40px minimum between major sections.
Arrows carry intent: Color arrows to match purpose. Label every non-obvious arrow.
Always plan coordinates before writing JSON.
next_y = current_y + current_height + gapPadding rules:
Text width trick: Set text width = parent box width. Text centers automatically when textAlign: "center".
Arrow labels: Position as separate text elements, 20-25px above the arrow's midpoint y, with width and x matching the arrow.
Coordinate math example:
Section A: x=30, w=170 -> right edge = 200
Gap: 40px
Section B: x=240, w=170 -> right edge = 410
Gap: 40px
Section C: x=450, w=600 -> right edge = 1050
| Zone | Use for | strokeColor | backgroundColor |
|---|---|---|---|
| Blue | Input, source, external services | #1971c2 | #e7f5ff |
| Yellow | Processing, transformation | #f59f00 | #fff9db |
| Green | Output, containers, success | #2f9e44 | #d3f9d8 |
| Purple | Shared layers, infrastructure | #862e9c | #f3d9fa |
| Red | Host OS, warnings, errors | #c92a2a | #ffe3e3 |
| Gray | Hardware, neutral containers | #495057 | #f8f9fa |
For nested elements, vary the fill intensity:
#d3f9d8)#8ce99a)#b2f2bb)| Role | fontSize | fontFamily |
|---|---|---|
| Diagram title | 32-36 | 1 (Virgil) |
| Section header | 20-24 | 1 |
| Element label | 16-18 | 1 |
| Annotation | 14-15 | 1 |
| Small note | 12-13 | 1 |
| Code label | 14-16 | 3 (Cascadia) |
Text width = parent box width. Text x/y offset ~8-10px from box x/y for padding.
Every element needs these base fields. Do not omit any.
{
"id": "unique-string",
"type": "rectangle|ellipse|diamond|arrow|line|text|freedraw",
"x": 0, "y": 0,
"width": 100, "height": 50,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"frameId": null,
"roundness": null,
"boundElements": [],
"updated": 1,
"link": null,
"locked": false
}
{
"text": "Label text",
"fontSize": 16,
"fontFamily": 1,
"textAlign": "center",
"verticalAlign": "top",
"containerId": null,
"originalText": "Label text",
"lineHeight": 1.25
}
{
"points": [[0, 0], [100, 0]],
"lastCommittedPoint": null,
"startBinding": null,
"endBinding": null,
"startArrowhead": null,
"endArrowhead": "arrow"
}
"solid" for clean diagrams, "hachure" for classic Excalidraw hatchingnull = sharp corners, {"type": 3} = rounded rectangles, {"type": 2} = curved arrows"solid", "dashed" (optional connections), "dotted"[Rect: x, y, w, h]
[Title text: x, y+10, w, fontSize=18]
[Subtitle: x, y+38, w, fontSize=14, strokeColor=#868e96]
[Host rect: x=0, y=0, w=640, h=500]
[Host label: x=0, y=10, w=640]
[Item 1: x=15, y=50, w=190, h=200]
[Item 2: x=225, y=50, w=190, h=200]
[Item 3: x=435, y=50, w=190, h=200]
[Arrow: x=start_x, y=mid_y, width=gap_width, points=[[0,0],[gap_width,0]]]
[Label: x=start_x, y=mid_y-25, width=gap_width, textAlign=center]
Every diagram uses this shell:
{
"type": "excalidraw",
"version": 2,
"source": "https://excalidraw.com",
"elements": [ ... ],
"appState": {
"gridSize": null,
"viewBackgroundColor": "#ffffff"
},
"files": {}
}