plantuml
Create diagrams with PlantUML
Create a diagram from the most recent interaction context using PlantUML. Generate a PNG image with a transparent background and output it as a markdown image so it renders inline.
How to create a diagram
- Extract or derive diagrammable data from the current context.
- If the Emacs foreground color is not already known from a previous diagram in this session, query it:
This returns a hex color likeemacsclient --eval ' (face-foreground (quote default))'"#eeffff". Reuse it for all subsequent diagrams. - Write a PlantUML file to a temporary file using that color.
- Run PlantUML on the file.
- Output the result as a markdown image on its own line:

plantuml -tpng /tmp/agent-diagram-XXXX.puml
PlantUML template
@startuml
skinparam backgroundColor transparent
skinparam shadowing true
skinparam roundcorner 10
skinparam defaultFontName "Helvetica"
skinparam defaultFontColor #eeffff
' Set foreground color on all element types
skinparam titleFontColor #eeffff
skinparam sequenceLifeLineBorderColor #eeffff
skinparam sequenceArrowColor #eeffff
skinparam sequenceGroupHeaderFontColor #eeffff
skinparam sequenceGroupBorderColor #eeffff
skinparam sequenceDividerFontColor #eeffff
skinparam sequenceDividerBorderColor #eeffff
skinparam actorBorderColor #eeffff
skinparam actorFontColor #eeffff
skinparam participantFontColor #eeffff
skinparam participantBorderColor #eeffff
skinparam collectionsFontColor #eeffff
skinparam collectionsBorderColor #eeffff
skinparam noteFontColor #eeffff
skinparam noteBorderColor #eeffff
skinparam arrowFontColor #eeffff
skinparam classFontColor #eeffff
skinparam classBorderColor #eeffff
skinparam classAttributeFontColor #eeffff
skinparam packageFontColor #eeffff
skinparam packageBorderColor #eeffff
skinparam componentFontColor #eeffff
skinparam componentBorderColor #eeffff
skinparam interfaceFontColor #eeffff
skinparam interfaceBorderColor #eeffff
' ... diagram content ...
@enduml
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.
- Always use
skinparam backgroundColor transparentfor transparent background. - 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
defaultFontColorand all relevantskinparamentries for borders, arrows, and text so the diagram is readable on the user's Emacs background. - After PlantUML runs successfully, output a markdown image (
) on its own line. - Choose an appropriate diagram type for the data (sequence, class, component, activity, state, etc.).
- Include a title when it adds clarity.
- If no diagrammable data exists in the recent context, inform the user.
More from xenodium/emacs-skills
emacsclient
Always use emacsclient instead of emacs. This applies to all Emacs operations: user requests, byte compilation, check-parens, running ERT tests, and any other elisp evaluation.
51describe
This skill should be used when the user invokes "/describe" to look up Emacs documentation via emacsclient.
34dired
This skill should be used when the user invokes "/dired" to open files from the latest interaction in an Emacs dired buffer via emacsclient.
33open
This skill should be used when the user invokes "/open" to open files from the latest interaction in Emacs buffers via emacsclient.
32select
This skill should be used when the user invokes "/select" to open one or more files in Emacs and select a region relevant to the current discussion via emacsclient.
31highlight
This skill should be used when the user invokes "/highlight" to highlight relevant regions in one or more files in Emacs via emacsclient.
31