Create diagrams with Mermaid
SkillMediaThis skill should be used when the user invokes "/mermaid" to create a diagram from the current context using Mermaid and output the resulting image path.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Create diagrams with Mermaid skill
What this skill tells your AI
The instructions your AI receives, as published by xenodium/emacs-skills in skills/mermaid/SKILL.md and read by ahel’s review.
Create a diagram from the most recent interaction context using Mermaid. Generate a PNG image with a transparent background and output it as a markdown image so it renders inline.
How to create a diagram
- Extract or derive diagrammable data from the current context.
- If the Emacs foreground color and background mode are not already known from a previous diagram in this session, query them:
The first returns a hex color likeemacsclient --eval '(face-foreground (quote default))' emacsclient --eval '(frame-parameter nil (quote background-mode))'"#eeffff". The second returnsdarkorlight. Reuse both for all subsequent diagrams. - Write a Mermaid file to a temporary file.
- Write a JSON config file that overrides theme variables with the queried foreground color. Set
"theme"to"dark"or"default"based on the background mode. - Run
mmdcwith-t darkif background mode isdark, or-t defaultiflight. - Output the result as a markdown image on its own line:

# Use -t dark for dark, -t default for light
PUPPETEER_EXECUTABLE_PATH=/opt/homebrew/bin/chromium mmdc \
-i /tmp/agent-diagram-XXXX.mmd \
-o /tmp/agent-diagram-XXXX.png \
-t dark -b transparent --scale 2 \
--configFile /tmp/agent-diagram-XXXX-config.json
Mermaid config template
Write this JSON config file to apply the Emacs foreground color. Replace #eeffff with the queried color. Set "theme" to "dark" or "default" based on the Emacs background mode.
{
"theme": "dark",
"themeVariables": {
"primaryTextColor": "#eeffff",
"secondaryTextColor": "#eeffff",
"tertiaryTextColor": "#eeffff",
"primaryBorderColor": "#eeffff",
"lineColor": "#eeffff",
"textColor": "#eeffff",
"actorTextColor": "#eeffff",
"actorBorder": "#eeffff",
"signalColor": "#eeffff",
"signalTextColor": "#eeffff",
"labelTextColor": "#eeffff",
"loopTextColor": "#eeffff",
"noteTextColor": "#eeffff",
"noteBorderColor": "#eeffff",
"sectionTextColor": "#eeffff",
"titleColor": "#eeffff"
}
}
Mermaid diagram template
sequenceDiagram
participant a as Alice
participant b as Bob
a->>b: Hello
b-->>a: Hi back
Rules
- Query the Emacs foreground color once per session and reuse it for all subsequent diagrams. Only query again if the color is not already known.
- Query the Emacs background mode once per session via
(frame-parameter nil 'background-mode). Use-t darkfordarkor-t defaultforlight. Always use-b transparent --scale 2. - Always use
PUPPETEER_EXECUTABLE_PATH=/opt/homebrew/bin/chromiumwhen invokingmmdc. - Always write a JSON config file with
themeVariablesset to the queried foreground color and pass it via--configFile. - Always use a timestamp in the filename (e.g.,
/tmp/agent-diagram-$(date +%s).png). Never use descriptive names. - After mmdc runs successfully, output a markdown image (
) on its own line. - Choose an appropriate diagram type for the data (sequence, flowchart, class, state, er, gantt, etc.).
- Include a title when it adds clarity.
- If no diagrammable data exists in the recent context, inform the user.
Signals
- GitHub stars
- 135
- Forks
- 17
- Last commit
- Jul 2026
Advanced
- Catalog kind
- skill
- Gateway key
mermaid-xenodium- Source
- github.com/xenodium/emacs-skills