Skip to content
Development
Skill

/bpmn

Read, explain, create, and edit BPMN 2.0 business-process diagrams (.bpmn XML). Use this whenever the user opens, reviews, summarizes, models, or modifies a process/workflow as BPMN - including swimlanes, pools, lanes, gateways, tasks, events, sequence flows, or boundary events.

From plugin
bpmn
51 skill5 commands
Install
$ npx -y skills add architawr/claude-bpmn-skill --skill bpmn --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/bpmn

Context preview

The summary Claude sees to decide when to auto-load this skill.

Read, explain, create, and edit BPMN 2.0 business-process diagrams (.bpmn XML). Use this whenever the user opens, reviews, summarizes, models, or modifies a process/workflow as BPMN - including swimlanes, pools, lanes, gateways, tasks, events, sequence flows, or boundary events.

SKILL.md

bpmn.SKILL.md
name: bpmn
description: >-
  Read, explain, create, and edit BPMN 2.0 business-process diagrams (.bpmn XML).
  Use this whenever the user opens, reviews, summarizes, models, or modifies a
  process/workflow as BPMN - including swimlanes, pools, lanes, gateways, tasks,
  events, sequence flows, or boundary events. Trigger even when the user does not
  say "BPMN" explicitly but works with a .bpmn file, a process model/diagram, a
  workflow description they want turned into a diagram, or Camunda/Zeebe/Flowable/
  bpmn.io models. Produces valid BPMN 2.0 XML with a clean, auto-generated layout.
compatibility: Requires Node.js >= 18 and npm. On first use, run `npm install` in the skill folder to fetch bpmn-moddle and bpmn-auto-layout.

BPMN 2.0: read and edit process diagrams

What this skill does

Helps you understand existing `.bpmn` files in plain language and produce new or edited ones that are **valid and visually clean** when opened in any modeler (Camunda Modeler, bpmn.io, Cawemo, etc.).

The job splits cleanly:

  • **You** do the semantic reasoning: what the process means, what to add or change.
  • **The bundled script** does the deterministic mechanics: parsing, regenerating

layout, and validating. Lean on it instead of hand-rolling these each time.

The one idea that makes BPMN tractable: two layers

A `.bpmn` file holds two layers in one XML document:

1. **Semantics** - the actual process: `bpmn:process` with tasks, gateways, events, and `sequenceFlow`s connecting them. This is the meaning. 2. **Diagram interchange (DI)** - `bpmndi:BPMNDiagram` with x/y coordinates for every shape and waypoints for every edge. This is only the picture.

Editing DI by hand is where BPMN work goes wrong: coordinates drift, shapes overlap, edges cross. **So we never hand-write DI.** You edit semantics; the `layout` command owns the DI. That is exactly what makes the diagram "clear" - a tidy left-to-right layout, generated deterministically.

`layout` is **non-destructive by default**, which is the rule that keeps you out of trouble: on a file that already has a diagram it *preserves* the existing layout and only syncs it to your edit (prune shapes for deleted elements, place shapes for new ones). On a file with no DI it generates a fresh layout. It only throws the whole diagram away and rebuilds from scratch when you pass `--rebuild`. So the habit is simple: **after editing semantics, always run `layout`; it never destroys a good diagram.**

Setup (once per machine)

The script needs two npm packages. From the skill's own directory:

npm install --prefix "<SKILL_DIR>"

`<SKILL_DIR>` is the folder containing this SKILL.md. After that, the four commands below are available. If a run fails with "Cannot find package", the install step was skipped - run it and retry.

Reading / explaining a diagram

1. Get a structured outline (don't try to read raw DI coordinates):

   node "<SKILL_DIR>/scripts/bpmn-tool.mjs" summarize path/to/file.bpmn

This prints pools/lanes, start/end events, activities (with their type), gateways (with direction), boundary events (host + interrupting?), and every sequence flow as `source -> target [condition]`. Add `--json` if you want to process it programmatically.

2. Explain it the way a person would understand the process: the happy path first, then decision points (what each gateway branches on), parallel work, and exception/boundary handling. Name real business steps, not element IDs. Match the user's language.

The summarize output is your source of truth for "what does this diagram do" - read from it rather than eyeballing the XML, especially for anything non-trivial.

To **locate** a specific element before an edit, use `find <file> <term>` (matches name or type). To **compare** two diagrams - As-Is vs To-Be, or to show exactly what an edit changed - use `diff <a> <b>`; it reports elements added, removed, renamed, or retyped and any sequence flows that were rewired.

When the user wants a **review** ("is this correct?", "find the bug", "why does it hang?"), also run `lint`. It catches control-flow bugs that are valid XML and pass `validate` but are wrong behavior - the kind that are easy to miss by eye:

node "<SKILL_DIR>/scripts/bpmn-tool.mjs" lint path/to/file.bpmn

It flags: a parallel (AND) join fed by an exclusive (XOR) split (**deadlock**); a parallel split merged by an exclusive join (runs **twice**); an exclusive gateway whose conditions can all be false with no default (**stuck token**); **unreachable** nodes; **dead ends** (non-end node, no outgoing); a missing start/end; an **implicit split** (non-gateway node with several outgoing flows); **misdirected events** (start with an incoming flow, end with an outgoing one); a boundary event on a **non-activity**; a node in **no lane** when the process uses lanes; and a message flow that stays **inside one pool**. Read its finding, confirm it against the model, then explain it in plain terms.

Creating or editing a diagram

Before writing XML for a *new* process, think like a business analyst and pin down the structure - it's what separates a clear model from a box-and-arrow mess. If any of these is unclear from the request, ask:

  • **Trigger** - what starts the process (and is it a plain start, a message, a

timer?).

  • **Participants** - who does what. Multiple actors usually means lanes (one

pool) or pools + message flows (separate processes).

  • **Happy path** - the main sequence of activities when nothing goes wrong.
  • **Decision points** - where the path forks, on what condition, and which

gateway fits (exclusive = either/or, parallel = all, inclusive = one-or-more).

  • **Exceptions / alternatives** - timeouts, rejections, errors; often boundary

events or extra branches.

  • **End states** - the distinct ways the process can finish.

If the user is documenting current vs future state, treat **As-Is** and **To-Be** as separ

Read more
Ships withbpmn

A Claude Code plugin that lets Claude work with BPMN 2.0 process diagrams (.bpmn XML): read and explain them in plain language, and create or edit them so they come out valid and visually clean in any modeler (Camunda Modeler, bpmn.io, Cawemo…).

Get the whole plugin
Stats
5
Stars
4
Forks
Maintained
Maintenance
JavaScript
Language
MIT
License
3mo ago
Last commit
3mo ago
Created

Repo: architawr/claude-bpmn-skill