| name | uipath-maestro-bpmn |
| description | TRIGGER for authoring structural-core UiPath Maestro BPMN as `<Name>.bpmn.ts` with the TypeScript builder SDK (`@uipath/flow-sdk/bpmn`) and running the `uip maestro bpmn` check/compile/format/validate loop. Covers events, gateways, tasks, sub-processes, sequence flows, bindings, static rules, and semantic `.bpmn` output. Flow builder authoring → uipath-maestro-flow; case plans → uipath-maestro-case. DO NOT TRIGGER for registry-backed typed BPMN nodes beyond the structural core. |
| allowed-tools | Bash, Read, Write, Edit, Glob, Grep, AskUserQuestion |
UiPath Maestro BPMN — TypeScript Builder SDK
Author a Maestro process as a typed BPMN graph and compile it to .bpmn XML.
Builder methods map directly to events, gateways, activities, sub-processes,
variables, bindings, and sequence flows.
Use this file as a router. Read only the reference named by the capability you
need, then let TypeScript and bpmn check provide the detailed contract.
Workflow
- Keep
<Name>.bpmn.ts beside this SKILL.md and the workspace package.json.
- Import from
@uipath/flow-sdk/bpmn and default-export a chain ending in .build().
- Start from the closest staged
examples/*.bpmn.ts.
- Run
uip maestro bpmn check <Name>.bpmn.ts --source after structural changes.
- Compile, format only when layout is needed, and run product validation.
- Use the merge pipeline for targeted edits to an existing process.
Capability router
| Surface | Builder/API | Reference | Example |
|---|
| Process and nested scopes | bpmn, subProcess | Builders | examples/NotifyChannel.bpmn.ts |
| Variables, inputs, and outputs | var, input, output | ScopeBuilder | examples/NotifyChannel.bpmn.ts |
| Start, end, catch, throw, boundary | event methods | Events | examples/NotifyChannel.bpmn.ts |
| Exclusive, inclusive, parallel, event-based | gateway methods | GatewayOpts | examples/NotifyChannel.bpmn.ts |
| Script and assignment tasks | scriptTask, task | ScopeBuilder | examples/NotifyChannel.bpmn.ts |
| HTTP requests | http | HTTP | examples/NotifyChannel.bpmn.ts |
| Orchestrator jobs and queues | start/execute/queue methods | Work dispatch | examples/NotifyChannel.bpmn.ts |
| Human work | humanTask | Human tasks | examples/NotifyChannel.bpmn.ts |
Minimal shape
import { bpmn } from '@uipath/flow-sdk/bpmn';
export default bpmn('notify')
.name('Notify')
.startEvent('start')
.task('record', { set: { status: 'ready' } })
.endEvent('done')
.sequenceFlow('start', 'record')
.sequenceFlow('record', 'done')
.build();
Validation loop
uip maestro bpmn check <Name>.bpmn.ts --source
uip maestro bpmn compile <Name>.bpmn.ts -o <Name>.bpmn
uip maestro bpmn format <Name>.bpmn
uip maestro bpmn validate <Name>.bpmn --output json
check owns source and graph invariants. Product validation owns the compiled
BPMN contract. Change the TypeScript source and rebuild; do not patch emitted XML.
Evidence boundary
Static success does not prove tenant resource resolution, human outcomes, or
runtime-only values. Read BPMN runtime decisions
when the requested outcome depends on those behaviors.