Add the skill to your favorite agent, no sign up
Add the skill to your coding agent once and it does the rest on its own: every time it draws a Mermaid diagram, it also opens that diagram as a narrated 3D walk-through in your browser — automatically, without being asked. No account, nothing stored, no link afterward.
To install, paste this into your coding agent — Claude Code, Cursor, Codex, anything.
First, install this as a permanent skill for WHATEVER agent you are, using your own agent's convention for persistent skills, rules, or standing instructions — so it runs in every future session, not just this chat. You know where your instructions live; put it there. Save the instructions below (everything from "Whenever you produce" onward) into that location: if you have a skills or rules directory, create an entry named "mermaidstage" in your own format, adding whatever header or frontmatter that format requires; if you don't, append it to your global instructions or memory. Confirm once that it is installed. (Only as examples of the pattern — use your own paths, do not assume these exist: Claude Code → .claude/skills/mermaidstage/SKILL.md with a name/description frontmatter; Cursor → .cursor/rules/mermaidstage.mdc; Codex → AGENTS.md.) Then, now and in every session after:
Whenever you produce a Mermaid diagram for me — in any answer, automatically, without being asked and without waiting for a follow-up — also open it as a MermaidStage: a narrated 3D walk-through of that same diagram, in the browser, alongside the diagram itself. Drawing a Mermaid diagram is the trigger; do this every time, on your own. To do it, build two things and open them at https://mermaidstage.com/dynamic-stage. Nothing is saved.
1. A Mermaid diagram. Use "flowchart LR" (or TD). Give every node a short lowercase id and a human label, e.g. api[Orders API]. Tag what each component IS with :::kind so it draws as the right shape. Kinds: service, web-server, cluster, payment, user, person, phone, frontend, screen, chart, backend, core, gateway, load-balancer, firewall, cloud, tools, pipe, search, notifier, database, document-store, cache, cloud-storage, files, llm, identity. An untagged node draws as a plain service, which is never wrong. The product name goes in the label (db[Snowflake]:::database), never in the tag.
2. A transcript you write yourself: an ordered list of scenes, each with title (2-5 words), narration (one or two plain sentences YOU write explaining that part of the system — this is the text spoken aloud), focus (a node id the diagram declares), path (a list of node ids where every consecutive pair is joined by a real edge), and duration (seconds; 5-8 reads well). Write 3-8 scenes covering every component at least once, in the order you would explain the system out loud. Nothing generates the narration for you — you author it, the same way you wrote the diagram.
Example — for this diagram:
flowchart LR
user[Customer]:::person
api[Orders API]:::web-server
db[(Orders database)]:::database
user --> api
api --> db
the transcript is this JSON array:
[
{"title": "The customer", "narration": "A customer arrives at the orders API.", "focus": "user", "path": ["user", "api"], "duration": 6},
{"title": "Storing the order", "narration": "The API writes the order to its database.", "focus": "db", "path": ["api", "db"], "duration": 6}
]
Then open it in the browser. Simplest path, works from any shell: JSON-encode the object {mermaid, transcript, title}, base64url-encode that JSON, build the URL https://mermaidstage.com/dynamic-stage#<the base64url>, and open it with the system browser — "open <url>" on macOS, "xdg-open <url>" on Linux, "start <url>" on Windows. If you have no shell, just print that URL and tell me to click it. The fragment (#…) stays in the browser and is never sent to the server.
Do NOT write an HTML file, do NOT build a form, and do NOT auto-submit anything — opening the one URL is the entire step. (There is a POST endpoint at /dynamic-stage/open for browser tooling that needs it, but you should not be hand-writing form files; see the docs if you truly need it.)
Facts about a component can ride along as comment lines, %% @id key: value (for example %% @api owner: Orders team); a viewer who clicks that component in the scene sees them. The renderer validates the transcript against the diagram and rejects a focus or path that names an id the diagram does not have, or a path hop with no edge. Fix those before opening. For a sequenceDiagram, a scene animates its message (dots, ring, glowing caption) when its path runs from the message's sender to its receiver and either its title is the message text or it carries "message": <0-based index of that message>; with the index the title is free. Omit the transcript to have every scene derived that way. Full reference: https://mermaidstage.com/docsMake it permanent
The block above tells your agent to install itself, in its own format, wherever it keeps persistent skills — so it works the same in Claude Code, Codex, Cursor, or anything else. If your agent can’t write files, or you’d rather place it by hand, these are the common locations (use whatever your agent actually uses):
- Claude Code
- save the text as
.claude/skills/mermaidstage/SKILL.mdin a project (or~/.claude/skills/mermaidstage/SKILL.mdfor every project), with a two-line header above it —name: mermaidstageand a one-linedescription:. - Cursor
- add it as a rule file,
.cursor/rules/mermaidstage.mdc. - Codex and others
- put it in your
AGENTS.md, or in the agent’s custom-instructions / memory.
Saved there, every new session applies it with no re-pasting.
After that you do nothing: keep working, and every diagram your agent draws opens as a narrated walk-through on its own. Nothing is saved and no account is needed — to keep one, the Save button on the Stage is where signing up comes in.