Linting
The BPMN Modeler can validate your diagram while you edit using bpmnlint — the same linter you can run in CI. When a .bpmnlintrc is found, rule violations appear as ⚠️/❌ overlays on the offending elements and a summary button (error/warning counts) is shown on the canvas. If no .bpmnlintrc exists, the feature stays dormant and the modeler looks exactly as it did before.
Usage
Add a
.bpmnlintrcat your workspace root (or under yourconfigFolder, default.camunda/):json{ "extends": "bpmnlint:recommended" }Open (or reopen) a
.bpmnfile with a known issue — e.g. a task without a label or a process missing an end event. Violations show up as overlays on the diagram, and the in-canvas lint button summarises the counts. The VS Code status bar shows$(check) BPMNlint(hover for the config path).Fix the issue and the overlay clears live — no save required.
Configuring rules
Discovery uses bpmnlint's nearest-config semantics: walking from the BPMN file's directory up to the workspace root, the first .bpmnlintrc found wins (checking <dir>/.bpmnlintrc then <dir>/<configFolder>/.bpmnlintrc at each level). No merging is performed, so the modeler and CI lint against the same file.
Tune rules with the standard .bpmnlintrc syntax — turn a rule off, downgrade it to a warning, or start from a different built-in preset:
{
"extends": "bpmnlint:recommended",
"rules": {
"label-required": "off",
"no-overlapping-elements": "warn"
}
}The built-in presets are bpmnlint:recommended, bpmnlint:all, and bpmnlint:correctness. See the bpmnlint rule reference for the full list of rules and what each one checks.
Current scope
- Built-in rules only. Custom / 3rd-party rule packages (
extendsto external npm configs,plugin:*, orpkg/rulekeys) are skipped with a warning logged to the bpmn.modeler output channel — built-in rules keep linting and the editor never crashes on an unsupported entry. - BPMN only. DMN linting is not supported.