Skip to content
Agent Orchestration
Skill

/d2

This skill should be used when the user invokes "/d2" to create a diagram from the current context using D2 and output the resulting image path.

BOOST
From plugin
emacs-skills
14519 skills
Install
$ npx -y skills add xenodium/emacs-skills --skill d2 --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/d2

Context preview

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

This skill should be used when the user invokes "/d2" to create a diagram from the current context using D2 and output the resulting image path.

SKILL.md

d2.SKILL.md
name: d2
description: 'This skill should be used when the user invokes "/d2" to create a diagram from the current context using D2 and output the resulting image path.'
tools: Bash
disable-model-invocation: true

Create diagrams with D2

Create a diagram from the most recent interaction context using D2. Generate a PNG image 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 D2 file to a temporary file using the foreground color. 4. Run D2 with `--theme 200` if background mode is `dark`, or `--theme 0` if `light`. 5. Output the result as a markdown image on its own line:

   ![description](/tmp/agent-diagram-XXXX.png)
# Use --theme 200 for dark, --theme 0 for light
d2 --theme 200 --pad 40 /tmp/agent-diagram-XXXX.d2 /tmp/agent-diagram-XXXX.png

D2 template

Use `--theme 200` for dark or `--theme 0` for light, based on the Emacs background mode. Apply the queried foreground color to `style.font-color` and `style.stroke` on nodes and edges.

direction: right

node1: Label {
  style.font-color: "#eeffff"
  style.fill: "#2d3748"
  style.stroke: "#eeffff"
}

node2: Label {
  style.font-color: "#eeffff"
  style.fill: "#2d3748"
  style.stroke: "#eeffff"
}

node1 -> node2: label {style.stroke: "#eeffff"; style.font-color: "#eeffff"}

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 `--theme 200` for `dark` or `--theme 0` for `light`. Always use `--pad 40`.
  • Always use a timestamp in the filename (e.g., `/tmp/agent-diagram-$(date +%s).png`). Never use descriptive names.
  • Set the queried foreground color on `style.font-color` and `style.stroke` for all nodes and edges so the diagram is readable on the user's Emacs background.
  • Use meaningful fill colors to distinguish different types of elements.
  • After D2 runs successfully, output a markdown image (`![description](path)`) on its own line.
  • Choose an appropriate layout direction and structure for the data.
  • Include labels on edges when they add 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.