Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Generate, validate, normalise, and explain Mermaid-native bpmn-beta diagrams from a Process Narrative Specification. Use this skill when the user wants to convert a PNS or process notes into a visual diagram; when they ask for BPMN, a process flow, a swimlane diagram, or a workflow diagram; when they want to validate or repair existing bpmn-beta code; when they mention pools, lanes, gateways, tasks, events, or BPMN 2.0; when they want a Mermaid-native process model they can commit to a repo; whe
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-05 | ✗→✓ | ▲ Improved | -62% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 75% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 87% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 40% | 0% |
| case-02 | ✗→✓ | ▲ Improved | -29% | 0% |
OverKill Hill P³ · overkillhill.com · github.com/OKHP3
Generate a Mermaid-native bpmn-beta diagram from a validated PNS. The diagram uses the BPMN 2.0 Descriptive Conformance Sub-Class node set — tasks, gateways, events, message flows, pools, and lanes — expressed in the readable bpmn-beta DSL.
validation.ready_for_bpmn_modeling: truebpmn-beta codedecision-model-authoring for a DMN tableprocess-narrative-authoring first| PNS field | bpmn-beta element | |---|---| | activity_sequence.activities[] | Task nodes ([task label]) | | decision_points[] | Gateway nodes ({condition?}) | | exception_paths[] | Error/intermediate event paths | | roles_and_raci.roles[] | Lane labels | | process_box.trigger | Start event ((( ))) | | process_box.outputs[] consumer | End event or message flow | | Multiple departments | Pool blocks |
When the PNS has ≥3 decision_points, hand off to decision-model-authoring concurrently with diagram generation. The BPMN gateway labels must match the DMN rule IDs.
actor_role_id{condition?} for exclusive gateways; {+} for parallel--> for sequence flows; ~~> for message flows (top level only)(( start )) and ([ end ]) for process boundaries; ((! error )) for exception pathsscripts/validate-bpmn-beta.mjs; fix all errorsscripts/normalize-bpmn-beta.mjs for consistent whitespace and orderingscripts/lint-process-model.mjs for naming conventions and pool structurebpmn-beta
title Purchase Order Approval
pool Finance {
lane Requester {
(( start )) --> [Submit PO Request] --> {Approved?}
{Approved?} -- yes --> [Release to Vendor] --> ([ end ])
{Approved?} -- no --> [Return with Comments] --> ([ end ])
}
lane Finance Manager {
[Review PO Request] --> {Approved?}
}
}Rules:
bpmn-beta keyword opens the diagrampool Name { } groups lanes; omit for flat (single-lane) diagramslane Name { } defines a swimlane~~> must be at top level, outside pool/lane blocks} closes the most recently opened pool or lanescripts/validate-bpmn-beta.mjs <file.mmd> — schema and structural validationscripts/repair-bpmn-beta.mjs <file.mmd> — auto-fixes common structural errorsscripts/normalize-bpmn-beta.mjs <file.mmd> — normalises whitespace, IDs, and orderingscripts/lint-process-model.mjs <file.mmd> — naming convention and pool structure lintPass bpmn-beta.mmd to publication-and-handoff-packaging for bundle assembly. If ≥3 gateways, also pass pns.yaml to decision-model-authoring.
Load on demand:
references/bpmn-beta-syntax.md — complete bpmn-beta DSL keyword reference, element types, and flow operator rulesscripts/validate-bpmn-beta.mjs — structural and schema validationscripts/normalize-bpmn-beta.mjs — whitespace and ordering normalisationscripts/repair-bpmn-beta.mjs — auto-repair for common structural errorsscripts/lint-process-model.mjs — naming and pool structure lintassets/fixtures/process-model-example.yaml — metadata fixture for a purchase-approval bpmn-beta diagramBuilt by Jamie Hill · OverKill Hill P³ Published at github.com/OKHP3 Part of the OKHP3/skillz Agent Skill library. MIT License -- free to use, fork, and adapt. A nod to the source is appreciated.
Other measured skills in the registry, with their headline benchmark lift.