Plantuml logo

Plantuml

Organization
SpillwaveSolutions
plantuml

Generate leftover PlantUML types Mermaid cannot do easily (Salt wireframes, use case, timing, ArchiMate, nwdiag, WBS) and convert them to PNG/SVG. Use when asked for a wireframe, PlantUML image export, extract puml from markdown, or prepare Confluence uploads. Class, ER, state, sequence, and C4 default to design-doc-mermaid on GitHub wiki.

Overview

PublisherSpillwaveSolutions
Repositoryplantuml
Skill nameplantuml
Stars
59
Forks
12
Bundled files
56
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 56 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by SpillwaveSolutions on GitHub. Read the source before you install it.

Installation

Install the Plantuml AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/SpillwaveSolutions/plantuml/tree/main
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/SpillwaveSolutions/plantuml.git \
  .claude/skills/plantuml
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Plantuml in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Plantuml on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Plantuml is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

PlantUML Diagram Generation and Conversion

Table of Contents

Purpose

This skill enables comprehensive PlantUML diagram creation and conversion workflows. PlantUML is a text-based diagramming tool that generates professional diagrams from simple, intuitive syntax.

Core capabilities:

  1. Create diagrams from natural language descriptions
  2. Convert source code to architecture diagrams (Spring Boot, FastAPI, Python ETL, Node.js, React)
  3. Convert standalone .puml files to PNG or SVG images
  4. Extract puml code blocks from markdown and convert to images
  5. Process linked .puml files in markdown (![diagram](path/to/diagram.puml))
  6. Validate PlantUML syntax without conversion
  7. Replace markdown diagrams with image links for publication (Confluence, Notion)

When to Use This Skill

Default for WikiTicket, GitHub wiki, architecture docs, walkthroughs, and requirements is design-doc-mermaid. GitHub renders fenced mermaid (flowchart, sequence, class, ER, state, C4). This skill is opt-in.

Activate for:

  • Salt wireframes / UI mocks
  • UML use case, timing, ArchiMate
  • nwdiag networks, WBS, JSON/YAML trees
  • .puml file to PNG or SVG conversion (always required; GitHub wiki does not render PlantUML source)
  • Markdown files containing PlantUML fences or linked .puml files
  • Confluence or Notion image export (render first, then upload)
  • PlantUML syntax validation
  • A user who already has .puml source and wants an image

Do not take class, ER, state, sequence, or C4 from WikiTicket design docs unless Mermaid cannot do the job or the user names PlantUML.

GitHub wiki: never leave a raw PlantUML fence as the only view. Render PNG or SVG, commit under docs/diagrams/, link the image, upload it with the wiki page.

Confluence/Notion: render PlantUML (and Mermaid, via design-doc-mermaid) to PNG or SVG and upload both. See references/wiki-ticket-integration.md.

Prerequisites

Before creating diagrams, verify the PlantUML setup:

bash
python scripts/check_setup.py

Required components:

ComponentPurposeInstallation
Java JRE/JDK 8+Runtimehttps://www.oracle.com/java/technologies/downloads/
plantuml.jarDiagram generatorhttps://plantuml.com/download (place in ~/plantuml.jar or set PLANTUML_JAR)
Graphviz (optional)Complex layoutshttps://graphviz.org/download/

Creating Diagrams

Diagram Type Identification

Identify the appropriate diagram type based on user intent.

WikiTicket / GitHub wiki default is design-doc-mermaid. Use the sequence, class, activity, state, ER, and component rows below only when the user names PlantUML or you are converting existing .puml files. Always emit PNG or SVG. Never leave a raw PlantUML fence as the only view.

User IntentDiagram TypeReference
UI mock, screen sketchSalt wireframereferences/wireframes_salt.md
Actors and goalsUse Casereferences/use_case_diagrams.md
Clock, waveformTimingreferences/timing_diagrams.md
Enterprise layersArchiMatereferences/archimate_diagrams.md
Network racknwdiagreferences/network_diagrams.md
Work breakdownWBSreferences/wbs_diagrams.md
Interactions over time (only if user names PlantUML)Sequencereferences/sequence_diagrams.md
System structure with classes (only if user names PlantUML)Classreferences/class_diagrams.md
Workflows, decision flows (only if user names PlantUML)Activityreferences/activity_diagrams.md
Object states and transitions (only if user names PlantUML)Statereferences/state_diagrams.md
Database schemas (only if user names PlantUML)ER (Entity Relationship)references/er_diagrams.md
Project timelinesGanttreferences/gantt_diagrams.md
Idea organizationMindMapreferences/mindmap_diagrams.md
System architecture (only if user names PlantUML)Componentreferences/component_diagrams.md
All 19 typesSee navigation hubreferences/toc.md
WikiTicket / GitHub wiki / ConfluenceImage export rulesreferences/wiki-ticket-integration.md

Syntax resources:

  • references/toc.md: Navigation hub linking to all diagram types
  • references/common_format.md: Universal elements (delimiters, metadata, comments, notes)
  • references/styling_guide.md: Modern <style> syntax for visual customization

Resilient Workflow (Primary - Recommended)

For reliable diagram generation with error recovery, follow the 4-step resilient workflow:

Step 1: Identify Diagram Type & Load Reference

  • Identify diagram type from user intent
  • Load references/[diagram_type]_diagrams.md for syntax guide
  • Consult references/toc.md if ambiguous

Step 2: Create File with Structured Naming

./diagrams/<markdown_name>_<num>_<type>_<title>.puml

Example: ./diagrams/architecture_001_sequence_user_auth.puml

Step 3: Convert with Error Handling (max 3 retries)

If conversion fails:

  1. Check references/troubleshooting/toc.md for error classification
  2. Load specific guide from references/troubleshooting/[category]_guide.md
  3. Check references/common_syntax_errors.md for diagram type

Step 4: Validate & Integrate

  1. Verify image file exists
  2. Add image link: ![title](diagrams/filename.png)
  3. Keep .puml source file for future edits

Full documentation: references/workflows/resilient-execution-guide.md

Quick Syntax Reference

Common elements:

  • Delimiters: @startuml / @enduml (required)
  • Comments: ' Single line or /' Multi-line '/
  • Relationships: -> (solid), --> (dashed), ..> (dotted)
  • Labels: A -> B : Label text

Minimal examples (see references/[type]_diagrams.md for comprehensive syntax):

puml
' Sequence: references/sequence_diagrams.md
@startuml
Alice -> Bob: Request
Bob --> Alice: Response
@enduml
puml
' Class: references/class_diagrams.md
@startuml
class Animal { +move() }
class Dog extends Animal { +bark() }
@enduml
puml
' ER: references/er_diagrams.md
@startuml
entity User { *id: int }
entity Post { *id: int }
User ||--o{ Post
@enduml

Converting Source Code to Diagrams

The examples/ directory contains language-specific templates for converting common application architectures:

Application TypeDirectoryKey Diagrams
Spring Bootexamples/spring-boot/Deployment, Component, Sequence
FastAPIexamples/fastapi/Deployment, Component (async routers)
Python ETLexamples/python-etl/Architecture with Airflow
Node.jsexamples/nodejs-web/Express/Nest.js components
Reactexamples/react-frontend/SPA deployment, component architecture

Workflow:

  1. Identify application type
  2. Review example in examples/[app-type]/
  3. Map code structure to diagram patterns
  4. Copy and adapt the example .puml file
  5. Use Unicode symbols from references/unicode_symbols.md for semantic clarity

Converting Diagrams to Images

Convert Standalone .puml Files

bash
# Convert to PNG (default)
python scripts/convert_puml.py diagram.puml

# Convert to SVG
python scripts/convert_puml.py diagram.puml --format svg

# Specify output directory
python scripts/convert_puml.py diagram.puml --format svg --output-dir images/

Extract and Convert from Markdown

CRITICAL for Confluence/Notion: Run this FIRST before upload if markdown contains PlantUML diagrams.

bash
# Process embedded ```puml blocks AND linked ![](diagram.puml) files
python scripts/process_markdown_puml.py article.md

# Convert to SVG format
python scripts/process_markdown_puml.py article.md --format svg

# Validate syntax only (for CI/CD)
python scripts/process_markdown_puml.py article.md --validate

Outputs:

  • article_with_images.md: Markdown with image links
  • images/: Directory with generated images

IDE-Friendly Workflow: Keep diagrams as .puml files during development for IDE preview, then convert for publication.

Direct Command-Line Usage

bash
# Basic conversion
java -jar ~/plantuml.jar diagram.puml

# SVG with custom output
java -jar ~/plantuml.jar --svg --output-dir out/ diagram.puml

# Batch conversion
java -jar ~/plantuml.jar "**/*.puml" --svg

See references/plantuml_reference.md for comprehensive command-line options.

Best Practices

Diagram Quality:

  • Use descriptive filenames from diagram content
  • Add comments with ' for clarity
  • Follow standard UML notation
  • Test incrementally before adding complexity

Format Selection:

  • PNG: Web publishing, smaller files, fixed resolution
  • SVG: Documentation, scalable, supports hyperlinks

Styling: Apply modern <style> syntax from references/styling_guide.md:

puml
@startuml
<style>
classDiagram {
  class { BackgroundColor LightBlue }
}
</style>
' diagram content
@enduml

Themes: !theme cerulean (also: bluegray, plain, sketchy, amiga)

Unicode symbols: Add semantic meaning with symbols from references/unicode_symbols.md:

puml
node "☁️ AWS Cloud" as aws
database "💾 PostgreSQL" as db

Troubleshooting

Quick diagnosis:

  1. Check syntax: java -jar plantuml.jar --check-syntax file.puml
  2. Identify error type
  3. Load troubleshooting guide: references/troubleshooting/toc.md

Common issues:

IssueSolution
"plantuml.jar not found"Download from https://plantuml.com/download, set PLANTUML_JAR
"Graphviz not found"Install from https://graphviz.org/download/
"Syntax Error"Check delimiters match, consult references/common_format.md
"Java not found"Install Java JRE/JDK 8+, verify with java -version

Comprehensive guides (215+ errors documented):

  • references/troubleshooting/toc.md - Navigation hub with error decision tree
  • references/troubleshooting/[category]_guide.md - 12 focused guides by error type

References

Core Syntax References

ResourcePurpose
references/wiki-ticket-integration.mdWikiTicket leftover types, always PNG/SVG, Confluence upload
references/toc.mdNavigation hub for all 19 diagram types
references/common_format.mdUniversal elements (delimiters, metadata, comments)
references/styling_guide.mdModern <style> syntax with CSS-like rules
references/plantuml_reference.mdInstallation, CLI, and troubleshooting

Troubleshooting Guides

ResourceCoverage
references/troubleshooting/toc.mdNavigation hub with error decision tree
references/troubleshooting/installation_setup_guide.mdSetup problems
references/troubleshooting/general_syntax_guide.mdSyntax errors
references/troubleshooting/[diagram_type]_guide.mdDiagram-specific errors

Enrichment Resources

ResourcePurpose
references/unicode_symbols.mdUnicode symbols for semantic enrichment
examples/[framework]/Code-to-diagram patterns

Summary

  1. Verify setup: python scripts/check_setup.py
  2. Navigate types: Start with references/toc.md
  3. Learn syntax: Open references/[diagram_type]_diagrams.md
  4. Apply styling: Use references/styling_guide.md
  5. Add symbols: Use references/unicode_symbols.md
  6. Convert files: scripts/convert_puml.py
  7. Process markdown: scripts/process_markdown_puml.py
  8. Troubleshoot: references/troubleshooting/toc.md

Supported diagrams:

  • UML: sequence, class, activity, state, component, deployment, use case, object, timing
  • Non-UML: ER, Gantt, mindmap, WBS, JSON/YAML, network, Archimate, wireframes

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Plantuml AI skill do?

Generate leftover PlantUML types Mermaid cannot do easily (Salt wireframes, use case, timing, ArchiMate, nwdiag, WBS) and convert them to PNG/SVG. Use when asked for a wireframe, PlantUML image export, extract puml from markdown, or prepare Confluence uploads. Class, ER, state, sequence, and C4 default to design-doc-mermaid on GitHub wiki.

Why use Plantuml on TypingMind?

Because you install it once and use it with any model. Plantuml is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Plantuml in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/SpillwaveSolutions/plantuml/tree/main. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Plantuml?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Plantuml?

As many as you like. As long as a model supports skills, you can use Plantuml with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Plantuml AI skill free?

It is published on GitHub by SpillwaveSolutions. Check the repository for licensing terms. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇