关于 d2
d2 是一项面向对话 Agent 的绘图技能,可将最近交互中的信息转为 D2 图表,并生成可内嵌显示的 PNG。它会依据 Emacs 前景色和背景模式设置图表样式。
主要功能
- 01从近期上下文提取图表数据
- 02生成 D2 源文件
- 03依据 Emacs 外观设置主题
- 04输出 PNG Markdown 图片
适用场景
- 01将讨论中的流程绘成图表
- 02把近期上下文整理为可视化结构
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ xenodium/ emacs-skills --skill d2安装后在 Claude Code 中输入/d2确认已加载。
详细介绍
使用 D2 创建图表
使用 D2 根据最近的交互上下文创建图表。生成 PNG 图片,并以 Markdown 图片的形式输出,使其能够内嵌显示。
如何创建图表
- 从当前上下文中提取或推导可用于绘制图表的数据。
- 如果尚未在本次会话的先前图表中获知 Emacs 前景色和背景模式,请查询它们:
第一个命令会返回类似emacsclient --eval '(face-foreground (quote default))' emacsclient --eval '(frame-parameter nil (quote background-mode))'"#eeffff"的十六进制颜色值。第二个命令会返回dark或light。后续图表都重复使用这两个值。 - 使用前景色将 D2 文件写入临时文件。
- 如果背景模式为
dark,使用--theme 200运行 D2;如果为light,则使用--theme 0。 - 将结果作为 Markdown 图片单独一行输出:

# 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 模板
根据 Emacs 背景模式使用 --theme 200(深色)或 --theme 0(浅色)。将查询到的前景色应用于节点和边的 style.font-color 和 style.stroke。
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"}
规则
- 每次会话只查询一次 Emacs 前景色,并在后续图表中重复使用。只有在尚未获知颜色时才再次查询。
- 每次会话通过
(frame-parameter nil 'background-mode)查询一次 Emacs 背景模式。dark使用--theme 200,light使用--theme 0。始终使用--pad 40。 - 文件名中始终使用时间戳(例如
/tmp/agent-diagram-$(date +%s).png)。切勿使用描述性名称。 - 为所有节点和边设置查询到的前景色,以确保图表在用户的 Emacs 背景上清晰可读。
- 使用有意义的填充色区分不同类型的元素。
- D2 成功运行后,将 Markdown 图片(
)单独一行输出。 - 为数据选择合适的布局方向和结构。
- 在有助于说明关系时,为边添加标签。
- 如果最近的上下文中没有可用于绘制图表的数据,请告知用户。
评论
支持 Markdown