Skip to content
Agent Orchestration
Skill

/mermaid

This 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.

BOOST
From plugin
emacs-skills
14519 skills
Install
$ npx -y skills add xenodium/emacs-skills --skill mermaid --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/mermaid

Context preview

The summary Claude sees to decide when to auto-load this skill.

This 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.

SKILL.md

mermaid.SKILL.md
name: mermaid
description: 'This 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.'
tools: Bash
disable-model-invocation: true

Create diagrams with Mermaid

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

1. Extract or derive diagrammable data from the current context. 2. If the Emacs foreground color and background mode are not already known from a previous diagram in this session, query them:

   emacsclient --eval '(face-foreground (quote default))'
   emacsclient --eval '(frame-parameter nil (quote background-mode))'

The first returns a hex color like `"#eeffff"`. The second returns `dark` or `light`. Reuse both for all subsequent diagrams. 3. Write a Mermaid file to a temporary file. 4. 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. 5. Run `mmdc` with `-t dark` if background mode is `dark`, or `-t default` if `light`. 6. Output the result as a markdown image on its own line:

   ![description](/tmp/agent-diagram-XXXX.png)
# 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 dark` for `dark` or `-t default` for `light`. Always use `-b transparent --scale 2`.
  • Always use `PUPPETEER_EXECUTABLE_PATH=/opt/homebrew/bin/chromium` when invoking `mmdc`.
  • Always write a JSON config file with `themeVariables` set 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 (`![description](path)`) 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.
Read more
Ships withemacs-skills

Claude Code skills for Emacs integration. These skills enable tighter integration with agents running inside Emacs, for example agent-shell.

Get the whole plugin
Stats
145
Stars
17
Forks
Maintained
Maintenance
Emacs Lisp
Language
3mo ago
Last commit
8mo ago
Created
4h ago
Added

Repo: xenodium/emacs-skills

Other skills on emacs-skills.