"Generate diagrams (state machines, class diagrams) from natural language requirements using Umple. Use when user requests: (1) State machine diagrams (2) UML class diagrams (3) Diagram generation from text descriptions, (4) Any mention of Umple diagram generation, (5) Visual representation of states, transitions, events, classes, or relationships. Outputs SVG diagrams with organized folder structure."
Resources
2Install
npx skillscat add umple/umple-skills/umple-diagram-generator Install via the SkillsCat registry.
Umple Diagram Generator Skill
Overview
Generate an Umple .ump model from requirements and render it to SVG (Umple + Graphviz).
Supported diagram types
| Type | Umple generator | Read before writing Umple |
|---|---|---|
state-machine |
GvStateDiagram |
references/state-machine-guidance.md |
class-diagram |
GvClassDiagram |
references/class-diagram-guidance.md |
Script
Entry point: scripts/main.ts (run with Bun via npx -y bun).
Quick start
# Folder mode: organized output with all files (.ump, .gv, .svg)
npx -y bun ${SKILL_DIR}/scripts/main.ts --input model.ump --output ./diagrams --name "light-controller"
# Exact path mode: save SVG to specific file path
npx -y bun ${SKILL_DIR}/scripts/main.ts --input model.ump --output ./my-diagram.svg
# Class diagram with custom name
npx -y bun ${SKILL_DIR}/scripts/main.ts --input model.ump --output ./diagrams --name "user-system" --type class-diagramReplace ${SKILL_DIR} with the absolute path to this skill directory.
Script options
| Option | Description |
|---|---|
-i, --input <path> |
Input .ump file (required) |
-o, --output <path> |
Output path: directory for folder mode, or .svg file for exact path (required) |
-n, --name <name> |
Diagram name for folder mode (optional, triggers folder mode) |
-t, --type <type> |
Diagram type: state-machine (default), class-diagram |
-s, --suboption <opt> |
GvStateDiagram suboption (repeatable) |
--json |
JSON output with details |
-h, --help |
Show help |
Output modes
Folder Mode (when --name is specified or --output is a directory):
- Creates organized folder with timestamped name
- Includes all files:
.ump(source),.gv(graphviz),.svg(diagram)
Folder naming:
- With
--name:<sanitized-name>_<timestamp>/ - Without
--name:<diagram-type>_<timestamp>/
Example:
diagrams/
└── light-controller_20260121_183045/
├── model.ump
├── model.gv
└── model.svgExact Path Mode (when --output ends with .svg):
- Saves only the SVG file to the exact specified path
- Useful when user specifies a specific output location
Example:
npx -y bun ${SKILL_DIR}/scripts/main.ts --input model.ump --output /path/to/my-diagram.svg
# Result: /path/to/my-diagram.svg (only SVG, no folder created)Exit codes
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | Missing dependencies (umple or dot) |
| 2 | Umple validation/compilation failed |
| 3 | SVG generation failed or unsupported diagram type |
Workflow
- Pre-flight: verify deps
command -v umplecommand -v dot
If missing, stop and ask the user to install them.
- Clarify only what you must
- State machine: initial state, events, finals, guards/actions
- Class diagram: entities, attributes, relationships, multiplicities
- Write Umple
- Read the relevant guidance file (table above) before writing.
- Render
- Prefer folder mode unless the user explicitly provides an
.svgoutput path.
- Prefer folder mode unless the user explicitly provides an
- Validate
- On failure: fix Umple and retry up to 3 times.
Repair loop
If rendering fails: read script output, apply a focused fix, re-run the same command.
Output contract
- Diagram type
- Generated Umple (single
umpleblock) - Exact command run
- Output paths (folder + SVG, or exact SVG path)
Guardrails
- Prefer a smaller valid Umple model over guessing syntax.
- Use exact path mode only when the user provides an
.svgpath. - Do not install system dependencies.
- Keep actions/guards minimal (no secrets, no I/O).