xenodium/emacs-skills/d2

Claude Code and agent skill by xenodium/emacs-skills

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

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.

Install

npx vskill@latest install xenodium/emacs-skills/d2

SKILL.md

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:

``sh 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.

  1. Write a D2 file to a temporary file using the foreground color.
  2. Run D2 with --theme 200 if background mode is dark, or --theme 0 if light.
  3. Output the result as a markdown image on its own line:

`` ![description](/tmp/agent-diagram-XXXX.png) ``

sh
# 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.

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

Security

  • Security scanPassed, 85 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
65
Repository forks
8
7-day trend score
21

Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 18 Mar 2026, 7 months ago.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/xenodium/emacs-skills/d2/badge)](https://verified-skill.com/skills/xenodium/emacs-skills/d2)

Something wrong with this skill or its page? Tell us.