Agent skill

Uipath Maestro Flow

by UiPath in UiPath/skills

TRIGGER for .flow / .flow.ts files and UiPath Flow / Maestro Flow / Maestro Automate requests: build, edit, run, debug, fix, or evaluate a flow.

MITAuto-check: notesMobile

Install Uipath Maestro Flow

skills CLI
$ npx skills add UiPath/skills --skill uipath-maestro-flow -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install UiPath/skills uipath-maestro-flow --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/UiPath/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/uipath-maestro-flow .claude/skills/uipath-maestro-flow && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
uipath-maestro-flow
GitHub stars
167
Token cost
~7k tokens
SKILL.md length
2,684 words
Files
77 (incl. references)
Skills in repo
28
Repo updated
First seen
Licence
MIT

At a glance

TRIGGER for .flow / .flow.ts files and UiPath Flow / Maestro Flow / Maestro Automate requests: build, edit, run, debug, fix, or evaluate a flow.

  • .flow / .flow.ts files and UiPath Flow / Maestro Flow / Maestro Automate requests: build
  • SKILL.md covers Project layout, Lifecycle, Editing an existing flow and Builder frame, plus 7 more sections
  • Runs TypeScript scripts from its folder; calls node and npm
  • Evaluate a flow

What it does

Uipath Maestro Flow is an agent skill from UiPath/skills. TRIGGER for .flow / .flow.ts files and UiPath Flow / Maestro Flow / Maestro Automate requests: build, edit, run, debug, fix, or evaluate a flow. Author with the TypeScript builder SDK (@uipath/maestro-builder-sdk): nodes, triggers, schedules, connectors, IXP document extraction (add or list IXP models), inline agents, HITL, chat/voice flows, bindings, brownfield edits, and the check/compile/validate loop. Operate: upload, publish, deploy, debug a real run, trigger a process, job status/traces…

Its SKILL.md is about 7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 77 other files, including reference files (for example `examples/AquariumSafetyStop.flow.ts`, `examples/ArchiveCardExtract.flow.ts` and `examples/BakeOffEntryForm.flow.ts`).

It sits in Mobile, covering Mobile testing and debugging and Workflow automation. It works with TypeScript and C#. The repository describes itself as: This is a repository of skills for interfacing UiPath capabilities to external developers. The licence is MIT.

When your agent uses it

  • .flow / .flow.ts files and UiPath Flow / Maestro Flow / Maestro Automate requests: build
  • Evaluate a flow
  • Job status/traces
  • Pause/resume/cancel/retry an instance

Example prompts

  • “/uipath-maestro-flow”

Requirements

  • Node.js
  • Pre-approved tools (allowed-tools): Bash, Read, Write, Edit, Glob, Grep, AskUserQuestion

What it can do on your machine

Read from SKILL.md and the folder at commit 0bada1b. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Bash
    • Read
    • Write
    • Edit
    • Glob
    • Grep
    • AskUserQuestion

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships script files (TypeScript, from the files we listed), which the agent can run.

    Shell commands in SKILL.md call:

    • node
    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Uipath Maestro Flow loads about 7k tokens when it runs, and up to ~66k if it reads all its reference files. Until then it costs about 239 tokens; SKILL.md has 2,684 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~239
When it runs · the whole SKILL.md, loaded when a task matches
~7k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~66k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Bash, Read, Write, Edit, Glob, Grep, AskUserQuestion

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from UiPath/skills at commit 0bada1b, republished under its MIT licence (© UiPath). 2,684 words, ~7,018 tokens.

Download SKILL.mdSave it as .claude/skills/uipath-maestro-flow/SKILL.md (or your agent's skills folder). This skill also uses 76 other files; get the full folder from GitHub.
name
uipath-maestro-flow
description
TRIGGER for `.flow` / `.flow.ts` files and UiPath Flow / Maestro Flow / Maestro Automate requests: build, edit, run, debug, fix, or evaluate a flow. Author with the TypeScript builder SDK (`@uipath/maestro-builder-sdk`): nodes, triggers, schedules, connectors, IXP document extraction (add or list IXP models), inline agents, HITL, chat/voice flows, bindings, brownfield edits, and the check/compile/validate loop. Operate: upload, publish, deploy, debug a real run, trigger a process, job status/traces, pause/resume/cancel/retry an instance. Diagnose: faulted runs, incidents, runtime variables, why validate passed but the run failed. Evaluate: eval sets, evaluators, simulations, eval runs. Case plans (`caseplan.json`) → uipath-maestro-case; BPMN (`.bpmn`, `.bpmn.ts`) → uipath-maestro-bpmn. DO NOT TRIGGER for raw IXP labelling or prompt tuning outside a Flow → uipath-ixp; standalone agents → uipath-agents; C#/XAML → uipath-rpa.
allowed-tools
Bash, Read, Write, Edit, Glob, Grep, AskUserQuestion
<!-- CANONICAL — edit here, not in UiPath/flow-builder-sdk. Why: docs/SKILLS_PROMOTION_PLAN.md in that repo. -->

UiPath Flow — TypeScript Builder SDK

UiPath Flow orchestrations can be authored in TypeScript using the @uipath/maestro-builder-sdk package. The SDK provides a builder API to construct a Flow graph, allowing developers to define inputs, outputs, steps, and control flow in a type-safe manner. The graph is "compiled" down to a Flow JSON, which is the artifact used for executing the Flow on the UiPath platform. An existing Flow JSON can also be decompiled back into TypeScript for editing.

Project layout

@uipath/maestro-builder-sdk is installed globally (npm install -g); examples/ contains authored examples, and references/ contains the details routed from this guide. A Flow is authored as .flow-sdk/<Name>.flow.ts inside its project folder <Solution>/<Name>/, and it imports the package directly.

Authoring files live in .flow-sdk/; the compiled artifact does not. .flow-sdk/ is the SDK's own work directory: the source, bindings.json, connectors/ and connectors-local/ all go there by default, relative to the directory you run uip from. Each Flow project keeps its own, so a solution can hold several flows; Studio Web never reads it, and uip solution pack/upload and flow debug leave it out. Run the SDK verbs (flow check, compile, decompile, merge, registry pull/prepare, node .flow-sdk/*.pipeline.mjs) from the project folder <Solution>/<Name>/, as ( cd <Solution>/<Name> && … ) when your shell does not keep its directory between commands; every .flow-sdk/ path in this guide and its references is relative to that folder. Everything else runs from the workspace root. Scaffold the project first, seed the source from it, then emit back into it — compile -o is the authority over where the emitted file is written. <Solution> and <Name> are the request's own names, used verbatim: a request that gives one name for both ("inside a solution of the same name") uses it for both, and a request that names only the Flow uses <Name> for both. Look for an existing solution before uip solution init: run find . -maxdepth 2 -name '*.uipx'. If one exists and a user can answer, ask which to use (one option per solution, then "Create a new solution", then "Something else") and scaffold nothing until they do; never create a second solution silently. Headless, use the solution the request names, else the only one present, else a new one named as above, and record the choice in the final response.

bash
uip solution init <Solution>
( cd <Solution> && uip maestro flow init <Name> --sdk-source )
# edit <Solution>/<Name>/.flow-sdk/<Name>.flow.ts, then run the Lifecycle loop below

Do not hand-write the skeleton. --sdk-source decompiles the trigger-only artifact flow init writes into the project's .flow-sdk/<Name>.flow.ts, creating the folder; the source carries the flow id and name the product already assigned — a hand-written flow('<name>') invents an id instead. So the stub is the seed rather than litter: the first compile -o overwrites it in place. init refuses an existing source file unless --force; when the source is already there, drop --sdk-source. Maestro Automate is --automate on the same flow init: when the request names Maestro Automate as the product, run ( cd <Solution> && uip maestro flow init <Name> --automate --sdk-source ); the bare verb ("automate invoice intake") asks for a plain Flow. Nothing after init changes; the flag writes runtimeOptions.profile into operate.json plus a .maestro_automate marker (how Orchestrator and Studio Web tell the two apart), and compile -o rewrites only the .flow, so both survive.

An existing project needs no init: skip the first two commands and seed from the .flow that is already there with ( cd <Solution>/<Name> && uip maestro flow decompile <Name>.flow -o .flow-sdk/<Name>.flow.ts --no-pipeline ) (--no-pipeline skips the brownfield helper, references/brownfield.md); skip the decompile when the source already exists. The three names stay aligned: .flow-sdk/<Name>.flow.ts, the <Name> project directory, and <Name>.flow inside it. Exactly one emitted <Name>.flow may exist, at <Solution>/<Name>/<Name>.flow, and never a second copy at the workspace root — validators and evidence collectors cannot choose safely between duplicates. Emitting to the root is correct only for the packaged-SDK local gates, which never scaffold a project; pick the loop first (Lifecycle) and do not mix the two.

Install the SDK first, once per machine: npm install -g @uipath/maestro-builder-sdk; skip it when already installed, and see references/CLI-LOOP.md for the checks and failure handling.

Integrations with non-UiPath systems are handled through connectors. Choose the node before writing it. For an external service or data (weather, Slack, a REST API), run uip maestro registry search '<brand or service name>' over the local connector library, unless the request names the transport itself ("over HTTP, not a connector" means http()): a hit is a connector, "total": 0 is a miss and means http(), and a usage error means the library is not cached, so run uip maestro registry pull first. For document extraction or another tenant capability (agent, process), which that library does not hold, run the family's uip maestro flow registry search (references/ixp.md, references/agent.md). A script() returning fixed values is never a stand-in for that step, and mock() only marks a capability the search proved absent. Connectors require .flow-sdk/bindings.json. uip maestro registry pull writes a descriptor per referenced connector to .flow-sdk/connectors/<key>.ts, and caches the library itself outside the project. Prepared connector modules live at .flow-sdk/connectors-local/<key>.ts; their descriptor data is kept separately below .flow-sdk/connectors-local/descriptors/<key>/. Because the source sits in .flow-sdk/ too, it imports them as ./connectors/<key>.ts and ./connectors-local/<key>.ts.

The connector loop: author → check → prepare → check → compile

Authoring never waits on prepare: once the search above has chosen the node, no further discovery command precedes the source. Write the connector step from the task's own words — the fields you intend, lookup() tokens for ids, { object: '<name-as-the-task-said-it>' } for a generic operation — then run uip maestro flow check .flow-sdk/<Name>.flow.ts --source. Check names every prepare you owe, with the exact command: OBJECT_UNPREPARED for an unmaterialized object, CUSTOM_FIELDS_UNPREPARED for an input outside the tenant-agnostic snapshot, LOOKUP_UNRESOLVED for a lookup token with no recorded value, CONNECTOR_INPUT for a field the operation does not declare. Run that one uip maestro registry prepare <connector-key> <action> — --object, --resolve and -f compose in a single invocation, it finds the connection itself, writes .flow-sdk/bindings.json, and repoints your import at the generated ./connectors-local/<key>.ts descriptor — then re-run check and compile. Where two flows import the same connector it names them instead of guessing, and asks for --source. CONNECTOR_NOT_IN_LIBRARY, CONNECTOR_OBJECT_REQUIRED and CONNECTOR_OBJECT_NOT_GENERIC are source fixes, not prepares: connector-params.md.

Schema-dynamic operations (loadByDefault, dependent dropdowns, customFieldsRequestDetails) need the prepare check names with every required -f, and a post-compile cache check: references/connector-params.md.

Hello world Flow
ts
import { flow, script, input, out, types } from '@uipath/maestro-builder-sdk';
export default flow('hello').name('Hello')
  .input({ name: types.string }).output({ greeting: types.string })
  .step('greet', script({ code: 'return `Hello ${$vars.start.output.name}`;' }))
  .return({ greeting: out('greet') }).build();

A script is a first-class Flow node; it runs inline JavaScript and returns a value. The start step is the default name for a "manual trigger", which carries the flow's inputs. A Flow can have outputs, which are returned to the caller when the flow completes successfully.

Lifecycle

Pick one loop before any build command; never mix them in one workspace or use one as a probe for the other (their layouts and evidence contracts differ):

  • Product-CLI loop (emit-only) when the task asks for product validate/debug evidence, or the workspace is emit-only: a package.json with { "flowSdk": { "emitOnly": true } } (the product-runtime eval sets it), or FLOW_SDK_EMIT_ONLY=1. Scaffold first (Project layout), then run the block below.
  • Packaged-SDK local gates otherwise: source check, compile to the root, validate — references/CLI-LOOP.md.

The uip maestro flow commands delegate their semantics to the installed @uipath/maestro-builder-sdk. Emit-only belongs to the project, not the directory you run from: the nearest package.json up the tree that declares flowSdk.emitOnly decides it, a nested one that does not mention flowSdk inherits, and emitOnly: false opts out. In that mode compile only serializes source, both flow check modes refuse, and product validate owns structural verification. The base pass is emit, any required artifact bindings, then validate:

bash
( cd <Solution>/<Name> && uip maestro flow compile .flow-sdk/<Name>.flow.ts -o <Name>.flow )
uip maestro flow validate <Solution>/<Name>/<Name>.flow --output json
# Before anything opens the emitted file (upload, debug, a designer):
uip maestro flow format <Solution>/<Name>/<Name>.flow --output json
# Only for a stated runtime-behavior claim:
( cd <Solution> && uip solution resources refresh --solution-folder . --output json )
( cd <Solution> && uip maestro flow debug <Name> --log-level error \
  --output-filter "{status:finalStatus,instance:instanceId,url:studioWebUrl,failed:elementExecutions[?status!='Completed'].{id:elementId,status:status},<Out>:variables.globals.<Out>,incidents:incidents}" \
  --output json )

<Out>: each declared out variable, never all of variables.globals. Re-run it from compile after the last source or binding edit. Valid is top-level Result plus Data.Status: "Valid"; treat Data.Warnings as failures except the reviewed shared-connection advisory. Completed with the expected globals and an empty failed is runtime evidence; a bare exit code is not. Debug inputs, attachments, other projections and incidents: references/CLI-LOOP.md.

Editing an existing flow

In brownfield work, preserve the supplied source, step names, and unaffected wiring. Insert a step by moving the old edge through it, not by creating a second path. If only emitted .flow JSON exists, decompile it, compile the pristine baseline, edit narrowly, and merge the delta back into the original. These are before/after judgments; no final-artifact checker can prove them.

For a narrow edit, decompile writes .flow-sdk/<Name>.pipeline.mjs, which runs the loop in two invocations and gets the baseline ordering right. It keeps its baseline, edited and merged .flow files in .flow-sdk/ too:

bash
uip maestro flow decompile <Name>.flow -o .flow-sdk/<Name>.flow.ts
node .flow-sdk/<Name>.pipeline.mjs      # captures the pristine baseline
# edit .flow-sdk/<Name>.flow.ts narrowly
node .flow-sdk/<Name>.pipeline.mjs      # compiles the edit and merges it back
uip maestro flow validate .flow-sdk/<Name>.merged.flow --output json

Validate the merged artifact, never the intermediate edited compile. If the source must stay inside the Flow project (for example, to preserve relative sidecars), keep baseline, edited, and candidate .flow files in an external .flow-work/ directory. Validate the candidate, replace the canonical artifact, and leave exactly one .flow under the project. The reference below contains the copyable safe-project sequence.

True-brownfield procedure: references/brownfield.md.

Builder frame

The quick start above shows the shape — flow(id), declarations, nodes, .return(...), .build(). Three things it does not show:

  • .var(name, types.*, default?) declares a flow VARIABLE: a value more than one step writes or reads. .input and .output are the flow's contract with its caller; a var is the state in between. A step writes one with { updates: { name: <expr> } }. Inputs, outputs and vars use one of the six types the Flow CLI and Workbench offer: types.string, types.number, types.boolean, types.object, types.array, types.file. The other types members (integer, float, double, date, datetime, jsonSchema) come from the Case and BPMN builders; the Flow builder and validate accept them without an error, but Workbench does not offer them, so write a date as types.string and an integer as types.number.

  • .return(...) ends a PATH. .terminate(...) ends the RUN. They look interchangeable on a straight chain and are not: inside a .parallel arm a terminate aborts the sibling arms mid-flight, where a return leaves them going.

  • Expressions are how a step names something that is not a literal. There is one per kind of thing you can refer to:

    refers to
    input(name)a flow input
    v(name)a flow variable
    out(step, path?)a step's result, whole or one field
    err(step, field?)a FAILED step's error envelope — only inside its handler
    ran(step)whether a step ran at all, as a boolean
    lit(value)a constant, where a raw value would be ambiguous
    js`…` / tmpl`…` an expression, or a string, you write yourself

    ran(step) earns an early mention: when arms converge, one shared continuation usually reads better than the same work duplicated per arm, and ran is how that continuation asks whether the value it wants was produced.

Show full SKILL.md (951 more words)Show less

API index

Every signature, option shape and field is indexed in the installed @uipath/maestro-builder-sdk package, not in this guide; a row's path is relative to the package root:

you havelook ina row gives you
a field or method — outcomePorts, stepToList (the usual case)dist/api-members.mdthe shape that declares it, and the lines that do
an exported symbol — HitlInputs, hitl, FlowBuilderdist/api-index.mdits kind, area, and the lines that declare it

Match one name; do not read either file end to end. Then read the span (e.g. dist/core/actions.d.ts:583-597): the whole declaration with its doc comment, so one read answers the question. Read the .d.ts, never dist/*.js (no types, no comments). A name in neither index is probably a RUNTIME output key, which the node references carry. Why the index ships in the package, and more lookup rules: references/author.md.

Supported node types

The table is the authoritative router. Before writing a node, read its Reference: the signature, a worked example and the node's hazards live there, not here. Example names the one complete flow to copy from; paths under examples/ resolve inside this skill folder.

Node or surfaceEmitted node typeBuilderReferenceExample
Manual triggercore.trigger.manualomit .trigger(...)manual-trigger.mdexamples/GreenhouseWatering.flow.ts
Entry points (multiple triggers)one trigger node per extra root.entryPoint(id, trigger, { inputs?, version? }, prefixFn?); one var across roots: input { type, shared: '<var>' }manual-trigger.md—
Scheduled triggercore.trigger.scheduledscheduled(...)scheduled-trigger.mdexamples/HerbariumDispatch.flow.ts
Connector event triggeruipath.connector.trigger.<key>.<event>onEvent(...)event-trigger.mdexamples/DoorbellLog.flow.ts
Connector event waituipath.connector.event.<key>.<event>waitForEvent(...)event-trigger.mdexamples/PlanetariumConfirmation.flow.ts
Form triggercore.trigger.formformTrigger(...)form-trigger.mdexamples/BakeOffEntryForm.flow.ts
Conversation triggercore.trigger.conversationconversationTrigger(...)conversational.mdexamples/LibraryDeskChat.flow.ts
Voice triggercore.trigger.voicevoiceTrigger(...)voice.mdexamples/HarbourRadioLine.flow.ts
Standalone HTTPcore.action.httphttp({ managed: false, ... })http.mdexamples/LighthouseSignal.flow.ts
Managed HTTPcore.action.http.v2http({ managed: true, ... })http.mdexamples/ObservatorySeeing.flow.ts
Scriptcore.action.scriptscript(...)script.mdexamples/GreenhouseWatering.flow.ts
Transformcore.action.transformtransform(...)transform.mdexamples/TrailLogSummary.flow.ts
Filtercore.action.transform.filtertransform({ variant: 'filter', ... })transform.mdexamples/TrailLogSummary.flow.ts
Mapcore.action.transform.maptransform({ variant: 'map', ... })transform.mdexamples/TrailLogSummary.flow.ts
Group bycore.action.transform.group-bytransform({ variant: 'group-by', ... })transform.mdexamples/TrailLogSummary.flow.ts
Integration Service actionuipath.connector.<key>.<action> (Data Fabric / Data Service — the ops the native family lacks: file record fields, events: uipath.connector.uipath-uipath-dataservice.*)connector(...)connector-params.mdexamples/ClubDirectory.flow.ts
Data Fabric readcore.datafabric.read (resultMode: 'multiple' selects its 1.4 definition; limit caps at 1000)dataFabricRead(...)data-fabric.mdexamples/BeeHiveLedger.flow.ts
Data Fabric createcore.datafabric.createdataFabricCreate(...)data-fabric.mdexamples/BeeHiveLedger.flow.ts
Data Fabric updatecore.datafabric.updatedataFabricUpdate(...)data-fabric.mdexamples/BeeHiveLedger.flow.ts
Data Fabric deletecore.datafabric.delete (declares NO outputs)dataFabricDelete(...)data-fabric.mdexamples/BeeHiveLedger.flow.ts
Subflowcore.subflowsubflow(...)subflow.mdexamples/RecipeScaler.flow.ts
Human taskuipath.human-in-the-loophitl(...)hitl.mdexamples/GallerySubmission.flow.ts
Human quick formuipath.human-in-the-loop.quick-form (one exit per outcome: .stepSwitch routes them, a plain .step() continues every outcome)hitl({ variant: 'quick-form', ... })hitl.mdexamples/FieldTripQuickForm.flow.ts
Human action appuipath.human-in-the-loop.coded-action-apphitl({ variant: 'action-app', ... })hitl.mdexamples/KilnReview.flow.ts
RPA workflowuipath.core.rpa-workflow.<key>rpaWorkflow(...)rpa-workflow.mdexamples/WorkshopInventory.flow.ts
Queue itemcore.action.queue.create*queueItem(...)queue.mdexamples/HerbariumDispatch.flow.ts
Summarizeuipath.pattern.deep-ragsummarize(...)summarize.mdexamples/OralHistoryDigest.flow.ts
Batch transformuipath.pattern.batch-transformbatchTransform(...)batch-transform.mdexamples/FossilCatalogEnrich.flow.ts
Branchcore.logic.decision.branch(...)branch.mdexamples/GreenhouseWatering.flow.ts
Switchcore.logic.switch.switch(...)switch.mdexamples/BeltProgression.flow.ts
Parallel / Mergecore.logic.merge.parallel(...)parallel-merge.mdexamples/ConcertSoundcheck.flow.ts
Loopcore.logic.loop.loop(...)loops.mdexamples/ClubDirectory.flow.ts
Do whilecore.logic.dowhile.doWhile(...)loops.mdexamples/MeteorShowerPages.flow.ts
Return / Endcore.control.end.return(...)return.mdexamples/GreenhouseWatering.flow.ts
Terminatecore.logic.terminate.terminate(...)terminate.mdexamples/AquariumSafetyStop.flow.ts
Placeholdercore.logic.mockmock()placeholder.mdexamples/FestivalMapScaffold.flow.ts
Unknown node typethe registry's nodeType verbatim (never uipath.connector.*)rawNode(...)placeholder.md—
Error handlererror handle on an action node.onError(...)error-handling.mdexamples/ObservatorySeeing.flow.ts
Delaycore.logic.delaydelay(...)delay.mdexamples/LighthouseSignal.flow.ts
API workflowuipath.core.api-workflow.<key>apiWorkflow(...)api-workflow.mdexamples/BirdCountLookup.flow.ts
Agentic processuipath.core.agentic-process.<key>agenticProcess(...)agentic-process.mdexamples/NeighborhoodWalkPlanner.flow.ts
Agent resourceuipath.core.agent.<key>agent(...)agent.mdexamples/PlantNameAdvisor.flow.ts
Inline agentuipath.agent.autonomousinlineAgent(...)inline-agent.mdexamples/PostcardCaption.flow.ts
IxP extractionuipath.ixp.<project>.<version>-<folder>ixpExtract(...)ixp.mdexamples/ArchiveCardExtract.flow.ts
Document classifyuipath.document.classifydocumentClassify(...)document-pipeline.mdexamples/SeedPacketReader.flow.ts
Dynamic extractuipath.ixp.extract-document-builderdynamicExtract(...)document-pipeline.mdexamples/SeedPacketReader.flow.ts
Published functionuipath.core.function.<key>publishedFunction(...)published-function.mdexamples/TideTableConverter.flow.ts
Conversation message waituipath.conversational.wait-for-messagewaitForMessage(...)conversational.mdexamples/LibraryDeskChat.flow.ts
Conversational agentuipath.agent.conversationalconversationalAgent(...)conversational.mdexamples/LibraryDeskChat.flow.ts
Conversation send messageuipath.conversational.send-messagesendMessage(...)conversational.mdexamples/LibraryDeskChat.flow.ts
Voice outgoing calluipath.conversational.voice.create-outgoing-callcreateOutgoingCall(...)voice.mdexamples/PotteryStudioCallback.flow.ts
Voice agentuipath.agent.voicevoiceAgent(...)voice.mdexamples/PotteryStudioCallback.flow.ts
Voice end calluipath.conversational.voice.end-callendCall(...)voice.mdexamples/PotteryStudioCallback.flow.ts

Authoring a flow

Choose each node from a registry search, never a brand name; ask when the request leaves a finite decision open; bind every declared output on every path (check misses a missing one, and the run returns undefined); handle an error only when the request says what should happen. The journeys, the scope gate for a request that names no steps, when to plan first, and the completion report are in references/author.md.

Operating a deployed flow

Upload, deploy, debug, trigger, inspect a job, and drive an instance's lifecycle. All of it needs uip login, and uip solution resources refresh comes before every upload, publish or debug. flow debug is a REAL run, not a validation step. Read references/operate.md.

Diagnosing a failed run

Triage in order — the debug response you already have, then incidents, runtime variables, the deployed artifact, and traces last. Never re-run flow debug to look again. The builder removes several classic .flow defects and leaves others, including an expression that is really a literal. Read references/diagnose.md.

Evaluating a flow

An inline agent does not create evaluators, eval sets, data points or simulations — the Flow eval CLI manages them as project files. Simulate every side-effecting component before running a set, and never solution upload as part of an eval workflow without asking. Read references/evaluate.md.

Final evidence

The final pass must use the loop appropriate to the packaging mode and run after the last edit. Product-resource truth is live evidence: confirm plausible ids, argument names, scenario-named optional inputs, and warnings against the tenant. Static diagnostics own all mechanically checkable structure; fix their cause rather than copying rules back into this router.

Match proof to the request's acceptance bar. If one wiring question remains, a validate-only bar is complete when product validation is green and its required structural self-check passes; do not add debug only for confidence. For each behavior claim the bar names, plan at most one bounded product debug that answers it. If one wiring question remains, run one bounded experiment that distinguishes it, apply the answer, and stop; do not grow a family of scratch solutions or repeat equivalent variants.

© UiPath, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 76 other files (references) in skills/uipath-maestro-flow of UiPath/skills.

  • SKILL.md
  • examples/AquariumSafetyStop.flow.ts
  • examples/ArchiveCardExtract.flow.ts
  • examples/BakeOffEntryForm.flow.ts
  • examples/BeeHiveLedger.flow.ts
  • examples/BeltProgression.flow.ts
  • examples/BirdCountLookup.flow.ts
  • examples/ClubDirectory.flow.ts
  • examples/ConcertSoundcheck.flow.ts
  • examples/DoorbellLog.flow.ts
  • examples/FestivalMapScaffold.flow.ts
  • examples/FieldTripQuickForm.flow.ts
  • examples/FossilCatalogEnrich.flow.ts
  • examples/GallerySubmission.flow.ts
  • examples/GreenhouseWatering.flow.ts
  • examples/HarbourRadioLine.flow.ts
  • examples/HerbariumDispatch.flow.ts
  • examples/KilnReview.flow.ts
  • examples/LibraryDeskChat.flow.ts
  • examples/LighthouseSignal.flow.ts
  • … and 57 more

Open the folder on GitHubat commit 0bada1b

Compare with similar skills

Uipath Maestro Flow next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Uipath Maestro Flow compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Uipath Maestro Flow this skillUiPath/skills167—~7kAutomated safety check: NotesMIT
Build Teaql Appteaql/teaql-agent-kit2.8k—~4.6kAutomated safety check: PassMIT
Simulator Audio E2Ehyochan/react-native-nitro-sound961—~1.1kAutomated safety check: PassMIT
Phone Harnessmilind-soni/OpenMausBot4.4k—~364Automated safety check: PassApache-2.0
Burner Phone Android Controlsmallnest/goclaw599—~436Automated safety check: PassMIT
MCP SDK Tier Auditmodelcontextprotocol/conformance130—~4.4kAutomated safety check: PassCustom licence

Similar skills

  • Build Teaql App

    teaql/teaql-agent-kit

    Build or change a TeaQL application in Java, Rust, Go, Swift, Python, C/.NET, or TypeScript, including Kotlin/JVM applications that consume Java-generated libraries.

    2.8k GitHub stars~4.6k tokensUpdated 14 days ago
    MobileAuto-check passed
  • Simulator Audio E2E

    hyochan/react-native-nitro-sound

    Build and run repeatable react-native-nitro-sound recorder/player regression tests on an iOS Simulator or Android emulator, with explicit virtual-device selection, microphone permission, Maestro…

    961 GitHub stars~1.1k tokensUpdated 11 days ago
    MobileAuto-check passed
  • Phone Harness

    milind-soni/OpenMausBot

    Control, inspect, test, or automate a physical Android phone connected to OpenMausBot over authorized USB debugging.

    4.4k GitHub stars~364 tokensUpdated today
    MobileAuto-check passed
  • Controls an Android device over ADB in a loop of screenshot, vision analysis, tap and verification, so the agent acts on real on-screen coordinates.

    599 GitHub stars~436 tokensUpdated 6 mo ago
    MobileAuto-check passed
  • MCP SDK Tier Audit

    modelcontextprotocol/conformance

    Official

    Comprehensive tier assessment for an MCP SDK repository against SEP-1730.

    130 GitHub stars~4.4k tokensUpdated 6 days ago
    MobileAuto-check passed
  • Corvus Java Evaluator

    corvus-dotnet/Corvus.JsonSchema

    Work on the Java port of the V5 standalone schema evaluator (src-java/corvus-json-schema, Maven artifact io.github.corvus-dotnet:corvus-json-schema): loader, compiler, the ASM bytecode generator…

    200 GitHub stars~1.6k tokensUpdated yesterday
    MobileAuto-check passed

More from UiPath/skills

All 28 skills in this repo
  • UiPath automation discovery — mines Slack/email/wikis/CRM/HRIS/ERP for repetitive work, SPOFs, and replicable models; produces a 4-tier prioritized opportunity report with UiPath implementation…

    167 GitHub stars~3.7k tokensUpdated today
    Auto-check passed
  • Maintain build-time skill flavors in the UiPath skills repository.

    167 GitHub stars~3.5k tokensUpdated today
    Auto-check passed
  • Uipath Functions

    UiPath/skills

    UiPath Coded Functions — deterministic Python or TypeScript/JavaScript units built with the uip function CLI (new -l py|ts|js, init, serve, run, pack, publish); the functions map in uipath.json…

    167 GitHub stars~3.6k tokensUpdated today
    Auto-check: notes
  • Uipath Maestro Bpmn

    UiPath/skills

    TRIGGER for authoring, operating or diagnosing UiPath Maestro BPMN.

    167 GitHub stars~4.2k tokensUpdated today
    Auto-check: notes
  • Uipath Maestro Case

    UiPath/skills

    TRIGGER for authoring UiPath Maestro Case plans as <Name.case.ts with the reference-mode TypeScript builder SDK (@uipath/maestro-builder-sdk/case), compiling to caseplan.json, and running the uip…

    167 GitHub stars~2k tokensUpdated today
    Auto-check: notes
  • Uipath Troubleshoot

    UiPath/skills

    UiPath causal investigation across every product, runtime, and activity package.

    167 GitHub stars~5.3k tokensUpdated today
    Auto-check passed

Works with

Categories

Questions about Uipath Maestro Flow

What does Uipath Maestro Flow do?

TRIGGER for .flow / .flow.ts files and UiPath Flow / Maestro Flow / Maestro Automate requests: build, edit, run, debug, fix, or evaluate a flow. Uipath Maestro Flow is an agent skill from UiPath/skills.ts files and UiPath Flow / Maestro Flow / Maestro Automate requests: build, edit, run, debug, fix, or evaluate a flow.

When should I use Uipath Maestro Flow?

Uipath Maestro Flow fits situations like: .flow / .flow.ts files and UiPath Flow / Maestro Flow / Maestro Automate requests: build; evaluate a flow; job status/traces; pause/resume/cancel/retry an instance.

How do I install Uipath Maestro Flow in Claude Code?

Run `npx skills add UiPath/skills --skill uipath-maestro-flow -a claude-code`. Or copy the skill folder (skills/uipath-maestro-flow in UiPath/skills) into .claude/skills/uipath-maestro-flow in your project. Claude Code loads it when a task matches its description.

How do I install Uipath Maestro Flow in Codex?

Run `npx skills add UiPath/skills --skill uipath-maestro-flow -a codex`. Or copy the skill folder (skills/uipath-maestro-flow in UiPath/skills) into .agents/skills/uipath-maestro-flow in your project. Codex loads it when a task matches its description.

Can I use Uipath Maestro Flow in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add UiPath/skills --skill uipath-maestro-flow -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/uipath-maestro-flow, .gemini/skills/uipath-maestro-flow, .github/skills/uipath-maestro-flow and .opencode/skills/uipath-maestro-flow in your project.

What does Uipath Maestro Flow need to run?

Going by SKILL.md and its folder, Uipath Maestro Flow needs TypeScript for the scripts in its folder and the command-line tools its instructions call (node and npm). Our summary lists: Node.js. Its frontmatter pre-approves these tools: Bash, Read, Write, Edit, Glob, Grep, AskUserQuestion.

Does Uipath Maestro Flow access the network?

SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Uipath Maestro Flow safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Uipath Maestro Flow use?

Uipath Maestro Flow is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Uipath Maestro Flow use?

About 7k tokens (SKILL.md is roughly 28k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 59k tokens, read only when the agent opens those files.

What are the alternatives to Uipath Maestro Flow?

Skills that share tags, products or a category with Uipath Maestro Flow: Build Teaql App (teaql/teaql-agent-kit, 2.8k stars), Simulator Audio E2E (hyochan/react-native-nitro-sound, 961 stars), Phone Harness (milind-soni/OpenMausBot, 4.4k stars) and Burner Phone Android Control (smallnest/goclaw, 599 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Uipath Maestro Flow?

UiPath (a GitHub organization) maintains it in UiPath/skills, which has 167 GitHub stars. The repository holds 28 skills in this directory. The repository was last updated on October 10, 2026.

Source: UiPath/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.