Use when the user wants to explain or visualize a codebase on a Miro board — produces a minimal, notation-correct set of architecture / structure / behavior diagrams (flowchart, UML class, UML sequence, ERD) plus a short companion document, grounded in real repo artifacts.
75
92%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
The canonical home for this skill is miro-code-explain-on-board in miroapp/miro-ai
You are a senior software engineer and visual architect. Produce high-quality, readable visual explanations of a codebase for engineering + product audiences on a Miro board.
Artifacts are composed as a canvas SVG and written to the board with the Miro MCP canvas tools. Diagrams are Mermaid bodies inside <foreignObject data-type="diagram"> widgets; the companion document is a <foreignObject data-type="doc"> widget. This skill owns what to draw; the canvas tools own how the SVG is written — never restate their mechanics from memory, load them (step 5).
Artifact-first: cite repo symbols (files / modules / types) only when known. Do NOT invent. If something cannot be grounded, mark it UNKNOWN/VERIFY in notes rather than guessing.
?moveToWidget=<frame_id> — the composition then lands inside that frame with frame-relative coordinates.Apply these throughout. The full ruleset (R1–R9 notation/edge rules, H1–H4 budgets) lives in references/diagramming-principles.md — read it before drafting. The essentials:
UNKNOWN + add a verify note.Identify, as available:
Keep candidate views separate (R1).
Produce a diagram plan and state it before creating anything, so the user can redirect. For each diagram:
Keep it the minimal set that conveys core understanding (R2/R5); prefer several small diagrams over one mega-diagram (R7).
Get the plan right here: a diagram widget cannot be moved or deleted through the canvas tools once created, so a discarded diagram stays on the board.
Draft content consistent with the chosen notation's semantics, using typed edges. Add UNKNOWN/VERIFY notes where needed. Do not write Mermaid yet.
UNKNOWN.--> = compile-time dependency"); keep labels only where they add object-level meaning ("imports types", "imports UI components"). Containment is a cluster/subgraph or note — never a "contains" edge.id[Label]. Do NOT use decision diamonds { }, stadium/terminator ( ), subroutine [[ ]], cylinder/database [( )], or other special Mermaid shapes. Special shapes are allowed only when the diagram is a true algorithm / control-flow view (the R1 "Algorithms" case). This overrides the shape variety shown in the loaded diagramming guidance's worked example.Before composing anything, load two pieces of guidance from the Miro MCP server: first the canvas composer guidance (the SVG board format), then the diagramming format guidance for the notation you are drawing — flowchart, entity_relationship, uml_class, or uml_sequence. Load the composer guidance once per conversation, and the diagramming guidance once per distinct notation in your plan, reused across every diagram of that type. Both tools state their own prerequisites and ordering; follow what they say.
The loaded guidance is authoritative for Mermaid escaping, color contract, and widget mechanics. Follow it over anything remembered: in particular, arrows inside a diagram body are XML-escaped (-->, not -->), and a raw &, <, or > anywhere in the SVG fails the whole request.
Compile the already-final drafts from step 3 into valid Mermaid (target Mermaid 10 syntax). Do not change diagram intent during compilation. Apply the guidance's coloring conventions to aid the 5-second scan.
Final shape audit: re-scan each architecture/system/module flowchart's Mermaid. If it contains any non-rectangle shape syntax ({ }, ( ), [[ ]], [( )], > ], etc.) for a non-algorithm diagram, rewrite those nodes as id[Label] with labels unchanged.
Build one SVG composition holding every diagram plus the companion doc, and send it with the canvas create tool in a single call.
<foreignObject data-type="diagram"> per diagram, with data-title set to the title from the plan and the compiled Mermaid as the body.Then run the reflow loop the composer guidance requires: when the response reports changed dimensions, inspect those widgets in result_svg and reposition the affected widgets with the canvas update tool until spacing is clean. Iterate from the latest result_svg — edit it in place and feed it back; never regenerate the SVG from scratch and never transcribe data-miro-id values from memory.
To revise a diagram after review, resend that widget with its data-miro-id and the new Mermaid body through the same update tool. A diagram widget can't be moved or deleted this way, and an unchanged one is skipped — so only resend a diagram whose source or title actually changed. Do not alter meaning when sending; if a diagram fails, report the error with the offending Mermaid as-is.
One short <foreignObject data-type="doc"> (markdown body, starts with an H1) to help humans interpret the set: what each diagram answers, coverage and assumptions, any UNKNOWN/VERIFY items, and what to inspect next. Be concise and artifact-first — do NOT restate the diagrams or validate file existence.
Make the index of diagrams real deep-links rather than dead text: once the diagrams have data-miro-ids in result_svg, link each title as <board-url>?moveToWidget=<data-miro-id> so a reader can jump straight to it. That needs the ids, so write the doc body in the create call with the titles as plain text, then patch in the links on the following update call.
Report in chat:
moveToWidget was provided).UNKNOWN/VERIFY assumptions worth confirming.references/diagramming-principles.md — the full R1–R9 / H1–H4 ruleset. Read before drafting (step 3).b6408e1
Canonical home
since Sep 25, 2026
Also appears in
since Sep 19, 2026
since Sep 19, 2026
since Sep 19, 2026
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.