mcpField
D
d2

d2

github.com/xenodiumドキュメント14751 回インストール14 週間前に更新
リポジトリ

d2 について

d2は、直近のやり取りから情報を取り出してD2図にし、インライン表示用のPNGを生成するエージェント向けスキルです。Emacsの前景色と背景モードに合わせて図のスタイルを設定します。

主な機能

  1. 01直近の文脈から図のデータを抽出
  2. 02D2ソースファイルの作成
  3. 03Emacsの外観に応じたテーマ設定
  4. 04PNGを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))'
    
    1 つ目は "#eeffff" のような 16 進数の色を返します。2 つ目は dark または light を返します。後続の図でも、この 2 つを再利用します。
  3. 前景色を使って、一時ファイルに D2 ファイルを書き込みます。
  4. 背景モードが dark の場合は --theme 200、light の場合は --theme 0 を指定して D2 を実行します。
  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 の背景モードに基づき、dark の場合は --theme 200、light の場合は --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 の背景でも図が読みやすくなるよう、すべてのノードとエッジの style.font-color および style.stroke に、問い合わせた前景色を設定します。
  • 要素の種類を区別するため、意味のある塗りつぶし色を使用します。
  • D2 の実行に成功したら、Markdown 画像(![description](path))を単独の行に出力します。
  • データに適したレイアウトの方向と構造を選びます。
  • 明確になる場合は、エッジにラベルを付けます。
  • 直近のコンテキストに図にできるデータがない場合は、その旨をユーザーに伝えます。

コメント