mcpField
D
d2

d2

github.com/xenodium文档处理14751 次安装14 周前更新
代码仓库

关于 d2

d2 是一项面向对话 Agent 的绘图技能,可将最近交互中的信息转为 D2 图表,并生成可内嵌显示的 PNG。它会依据 Emacs 前景色和背景模式设置图表样式。

主要功能

  1. 01从近期上下文提取图表数据
  2. 02生成 D2 源文件
  3. 03依据 Emacs 外观设置主题
  4. 04输出 PNG Markdown 图片

适用场景

  1. 01将讨论中的流程绘成图表
  2. 02把近期上下文整理为可视化结构

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/xenodium/emacs-skills --skill d2

安装后在 Claude Code 中输入/d2确认已加载。

详细介绍

使用 D2 创建图表

使用 D2 根据最近的交互上下文创建图表。生成 PNG 图片,并以 Markdown 图片的形式输出,使其能够内嵌显示。

如何创建图表

  1. 从当前上下文中提取或推导可用于绘制图表的数据。
  2. 如果尚未在本次会话的先前图表中获知 Emacs 前景色和背景模式,请查询它们:
    emacsclient --eval '(face-foreground (quote default))'
    emacsclient --eval '(frame-parameter nil (quote background-mode))'
    
    第一个命令会返回类似 "#eeffff" 的十六进制颜色值。第二个命令会返回 dark 或 light。后续图表都重复使用这两个值。
  3. 使用前景色将 D2 文件写入临时文件。
  4. 如果背景模式为 dark,使用 --theme 200 运行 D2;如果为 light,则使用 --theme 0。
  5. 将结果作为 Markdown 图片单独一行输出:
    ![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 模板

根据 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 图片(![description](path))单独一行输出。
  • 为数据选择合适的布局方向和结构。
  • 在有助于说明关系时,为边添加标签。
  • 如果最近的上下文中没有可用于绘制图表的数据,请告知用户。

评论

支持 Markdown