From learning-loop
Generates Excalidraw diagrams for concepts, mechanisms, and system architectures. Saves .excalidraw.md files to the vault's Excalidraw folder. Invoke via /learning-loop:diagram.
How this skill is triggered — by the user, by Claude, or both
Slash command
/learning-loop:diagramThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Generate an Excalidraw diagram and save it to the vault. Handles the full pipeline: determine what to diagram, build the JSON, write the file, and optionally embed it in a note.
Generate an Excalidraw diagram and save it to the vault. Handles the full pipeline: determine what to diagram, build the JSON, write the file, and optionally embed it in a note.
/learning-loop:diagram "concept or mechanism" -- user specifies what to diagram/learning-loop:diagram -- infer from conversation contextIf args provided: Use as the concept description.
If no args: Read recent conversation. Identify the most diagram-worthy concept -- a mechanism, pathway, feedback loop, multi-step process, or system architecture where relationships between parts matter more than the parts themselves.
Diagram gate -- check BEFORE proceeding:
If the answer to all three is no, tell the user: "This works better as text/table -- no diagram needed." and stop.
Read the diagram-rules agent file to get the full Excalidraw construction spec:
PLUGIN/agents/_skills/diagram-rules.md
Follow every rule in that file. Key points:
.excalidraw.md format with empty ## Text Elements section#a5d8ff (blue), #b2f2bb (green), #ffec99 (yellow), #ffc9c9 (red), #d0bfff (purple)fontFamily: 5, roughness: 1frameId, index, versionNonce, or rawText fieldsBefore writing JSON, plan on paper:
Build the full Excalidraw JSON following diagram-rules exactly. Write to:
{{VAULT}}/Excalidraw/{slug}.excalidraw.md
Where {slug} is a descriptive kebab-case name (e.g., thalen-engagement-loop-tiers).
File format:
---
excalidraw-plugin: parsed
tags: [excalidraw]
---
==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== You can decompress Drawing data with the command palette: 'Decompress current Excalidraw file'. For more info check in plugin settings under 'Saving'
# Excalidraw Data
## Text Elements
%%
## Drawing
```json
{JSON here}
%%
### Step 5: Validate
Check the generated JSON:
1. No overlapping positions (30px minimum between edges)
2. Container text fits (text width < container width - 60px)
3. Arrow first point is `[0, 0]`, width/height match point bounding box
4. All IDs unique
5. No `frameId`, `index`, `versionNonce`, or `rawText` fields present
### Step 6: Report
Diagram: "{title}" -> Excalidraw/{slug}.excalidraw.md Embed with: ![[{slug}]]
If the conversation has an obvious note to embed it in, suggest which note. Otherwise just report the path.
## Key Principles
- **Connections carry meaning.** If you remove the arrows and it still works, it was a layout, not a diagram.
- **Focused scope.** One mechanism per diagram. Split complex systems.
- **Follow diagram-rules exactly.** Read the agent file every time. Don't rely on memory.
- **No extra elements.** Default to free-floating text. Only add containers when the shape itself carries meaning.
- **Calculate widths.** Never hardcode text widths. Compute from character count every time.
npx claudepluginhub robinslange/learning-loop --plugin learning-loopGenerates Excalidraw JSON diagram files (.excalidraw) for visualizing workflows, architectures, and concepts as visual arguments with evidence artifacts for technical diagrams.
Generates hand-drawn Excalidraw diagrams for concepts, architectures, mind maps, flows, and comparisons. Enforces accessibility and cognitive limits; auto-renders JSON to SVG.
Generates Excalidraw diagram JSON files (.excalidraw) that argue visually for workflows, architectures, or concepts. Ideal for teaching relationships, flows, and technical integrations with evidence artifacts.