From u-flow
This skill should be used when the user wants to create visual diagrams from academic content for study or presentation purposes. Triggers on phrases like "haceme un mapa mental", "diagrama de flujo", "mapa conceptual", "esquema para estudiar", "graficá esto", "representá en un diagrama", "organizá visualmente", "mapa para el parcial", "esquema visual", "diagrama de causa y efecto", or when the user provides content and asks for a visual or graphic representation. Responds in Spanish by default.
How this skill is triggered — by the user, by Claude, or both
Slash command
/u-flow:diagramsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
To generate visual diagrams from academic content as Excalidraw-compatible JSON. Apply when the user wants to visualize concept relationships, processes, hierarchies, or timelines for study or presentation purposes.
To generate visual diagrams from academic content as Excalidraw-compatible JSON. Apply when the user wants to visualize concept relationships, processes, hierarchies, or timelines for study or presentation purposes.
| Content Type | Recommended Diagram |
|---|---|
| Topic with subtopics, ideas branching out | Mind map |
| Relationships between defined concepts | Concept map |
| Step-by-step process or algorithm | Flowchart |
| Historical events in order | Timeline |
| Categories with members | Hierarchy tree |
| Cause → Effect chains | Causal diagram |
Always output a valid Excalidraw JSON block. Wrap it in a fenced code block labeled json:
Critical rules for valid output:
text element with containerId pointing at the shape. Never put text/fontSize/textAlign on the shape itself — they are ignored.boundElements. Excalidraw recomputes the text's x/y to center it, so approximate coordinates are fine — do not hand-calculate exact centering.boundElements. Without the back-reference the binding breaks when the node moves.angle, groupIds, roundness, seed, versionNonce, isDeleted, etc.). Vary seed and versionNonce per element (use any distinct integers).This example has two nodes, bound labels, and a connecting arrow — a complete, pasteable template to imitate:
{
"type": "excalidraw",
"version": 2,
"source": "https://excalidraw.com",
"elements": [
{
"id": "node-1", "type": "ellipse",
"x": 400, "y": 300, "width": 200, "height": 80,
"angle": 0, "strokeColor": "#1e1e2e", "backgroundColor": "#cba6f7",
"fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid",
"roughness": 1, "opacity": 100, "groupIds": [], "frameId": null,
"roundness": null, "seed": 1001, "version": 1, "versionNonce": 11,
"isDeleted": false, "link": null, "locked": false,
"boundElements": [{"type": "text", "id": "text-1"}, {"type": "arrow", "id": "arrow-1-2"}]
},
{
"id": "text-1", "type": "text",
"x": 430, "y": 330, "width": 140, "height": 25,
"angle": 0, "strokeColor": "#1e1e2e", "backgroundColor": "transparent",
"fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid",
"roughness": 1, "opacity": 100, "groupIds": [], "frameId": null,
"roundness": null, "seed": 1002, "version": 1, "versionNonce": 12,
"isDeleted": false, "link": null, "locked": false,
"text": "Concepto Central", "originalText": "Concepto Central",
"fontSize": 18, "fontFamily": 1, "textAlign": "center",
"verticalAlign": "middle", "lineHeight": 1.25, "baseline": 18,
"containerId": "node-1", "boundElements": []
},
{
"id": "node-2", "type": "rectangle",
"x": 400, "y": 480, "width": 200, "height": 70,
"angle": 0, "strokeColor": "#1e1e2e", "backgroundColor": "#89b4fa",
"fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid",
"roughness": 1, "opacity": 100, "groupIds": [], "frameId": null,
"roundness": null, "seed": 1003, "version": 1, "versionNonce": 13,
"isDeleted": false, "link": null, "locked": false,
"boundElements": [{"type": "text", "id": "text-2"}, {"type": "arrow", "id": "arrow-1-2"}]
},
{
"id": "text-2", "type": "text",
"x": 430, "y": 505, "width": 140, "height": 25,
"angle": 0, "strokeColor": "#1e1e2e", "backgroundColor": "transparent",
"fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid",
"roughness": 1, "opacity": 100, "groupIds": [], "frameId": null,
"roundness": null, "seed": 1004, "version": 1, "versionNonce": 14,
"isDeleted": false, "link": null, "locked": false,
"text": "Subtema", "originalText": "Subtema",
"fontSize": 18, "fontFamily": 1, "textAlign": "center",
"verticalAlign": "middle", "lineHeight": 1.25, "baseline": 18,
"containerId": "node-2", "boundElements": []
},
{
"id": "arrow-1-2", "type": "arrow",
"x": 500, "y": 380, "width": 0, "height": 100,
"angle": 0, "strokeColor": "#6c7086", "backgroundColor": "transparent",
"fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid",
"roughness": 1, "opacity": 100, "groupIds": [], "frameId": null,
"roundness": null, "seed": 1005, "version": 1, "versionNonce": 15,
"isDeleted": false, "link": null, "locked": false,
"points": [[0, 0], [0, 100]],
"startBinding": {"elementId": "node-1", "focus": 0, "gap": 8},
"endBinding": {"elementId": "node-2", "focus": 0, "gap": 8},
"startArrowhead": null, "endArrowhead": "arrow", "boundElements": []
}
],
"appState": {
"viewBackgroundColor": "#ffffff"
},
"files": {}
}
Every shape needs a corresponding bound text element. Add each text element immediately after its parent shape, and add every connecting arrow to the boundElements of both shapes it links.
arrow)Mind Map:
Flowchart:
Hierarchy Tree:
#cba6f7 (purple) background#89b4fa (blue) background#a6e3a1 (green) background#f9e2af (yellow) background#1e1e2e (dark)#6c7086 (gray)node-central, node-subtopic-1, arrow-1-2startBinding and endBinding must reference real node IDs(See the full arrow element in the example above for required fields.)
x and y are the arrow's absolute start positionpoints are relative offsets from that position — [0,0] is the start, the last point is the end"x": 500, "y": 340, "points": [[0,0],[150,100]]width and height must match the bounding box of the points array (absolute values)boundElementsAfter the JSON block, always provide:
Instructions to import:
Para usar en Excalidraw:
1. Copiá el bloque JSON completo
2. Abrí excalidraw.com (o la app de escritorio)
3. Hacé clic en cualquier parte del lienzo y pegá con Ctrl+V (Cmd+V en Mac)
— Excalidraw detecta el JSON del portapapeles y crea el diagrama
Text description of what the diagram shows (for users who can't load it immediately)
Mermaid fallback — always include a Mermaid version after the Excalidraw JSON. Many students use Notion, Obsidian, or VS Code which render Mermaid natively without needing Excalidraw:
También en formato Mermaid (para Notion, Obsidian, VS Code):
```mermaid
[mermaid code here]
```
If the topic has more than 15 subtopics:
Before finalizing:
Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub facundomartinezvidal/claude-plugins --plugin u-flow