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…
TRIGGER for authoring, operating or diagnosing UiPath Maestro BPMN.
$ npx skills add UiPath/skills --skill uipath-maestro-bpmn -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install UiPath/skills uipath-maestro-bpmn --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/UiPath/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/preview/skills/uipath-maestro-bpmn .claude/skills/uipath-maestro-bpmn && rm -rf skills-srcUse ~/.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/
Install the "uipath-maestro-bpmn" agent skill from https://github.com/UiPath/skills/tree/main/preview/skills/uipath-maestro-bpmn into .claude/skills/uipath-maestro-bpmn/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "uipath-maestro-bpmn", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/UiPath/skills/tree/main/preview/skills/uipath-maestro-bpmnType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add UiPath/skills --skill uipath-maestro-bpmn -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install UiPath/skills uipath-maestro-bpmn --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/UiPath/skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/preview/skills/uipath-maestro-bpmn .agents/skills/uipath-maestro-bpmn && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "uipath-maestro-bpmn" agent skill from https://github.com/UiPath/skills/tree/main/preview/skills/uipath-maestro-bpmn into .agents/skills/uipath-maestro-bpmn/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "uipath-maestro-bpmn", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add UiPath/skills --skill uipath-maestro-bpmn -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install UiPath/skills uipath-maestro-bpmn --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/UiPath/skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/preview/skills/uipath-maestro-bpmn .cursor/skills/uipath-maestro-bpmn && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "uipath-maestro-bpmn" agent skill from https://github.com/UiPath/skills/tree/main/preview/skills/uipath-maestro-bpmn into .cursor/skills/uipath-maestro-bpmn/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "uipath-maestro-bpmn", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/UiPath/skills.git --path preview/skills/uipath-maestro-bpmn--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add UiPath/skills --skill uipath-maestro-bpmn -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install UiPath/skills uipath-maestro-bpmn --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/UiPath/skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/preview/skills/uipath-maestro-bpmn .gemini/skills/uipath-maestro-bpmn && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "uipath-maestro-bpmn" agent skill from https://github.com/UiPath/skills/tree/main/preview/skills/uipath-maestro-bpmn into .gemini/skills/uipath-maestro-bpmn/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "uipath-maestro-bpmn", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install UiPath/skills uipath-maestro-bpmnInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add UiPath/skills --skill uipath-maestro-bpmn -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/UiPath/skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/preview/skills/uipath-maestro-bpmn .github/skills/uipath-maestro-bpmn && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "uipath-maestro-bpmn" agent skill from https://github.com/UiPath/skills/tree/main/preview/skills/uipath-maestro-bpmn into .github/skills/uipath-maestro-bpmn/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "uipath-maestro-bpmn", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add UiPath/skills --skill uipath-maestro-bpmn -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install UiPath/skills uipath-maestro-bpmn --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/UiPath/skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/preview/skills/uipath-maestro-bpmn .opencode/skills/uipath-maestro-bpmn && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "uipath-maestro-bpmn" agent skill from https://github.com/UiPath/skills/tree/main/preview/skills/uipath-maestro-bpmn into .opencode/skills/uipath-maestro-bpmn/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "uipath-maestro-bpmn", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
uipath-maestro-bpmnTRIGGER for authoring, operating or diagnosing UiPath Maestro BPMN.
Uipath Maestro Bpmn is an agent skill from UiPath/skills. TRIGGER for authoring, operating or diagnosing UiPath Maestro BPMN. Author <Name.bpmn.ts with the TypeScript builder SDK (@uipath/maestro-builder-sdk/bpmn) and run the uip maestro bpmn check/compile/format/validate loop. Operate: refresh package metadata, pack, upload to Studio Web, publish, debug a real run, run a deployed process, inspect jobs and instances, pause/resume/cancel/retry/migrate. Diagnose a failed or stuck run: job status, incidents, runtime variables, the deployed BPMN asset, element executions…
Its SKILL.md is about 4.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 10 other files, including reference files (for example `examples/ContractRegistry.bpmn.ts`, `examples/InvoiceApproval.bpmn.ts` and `examples/InvoiceEscalation.bpmn.ts`).
It sits in Mobile, covering Mobile testing and debugging. It works with TypeScript. The repository describes itself as: This is a repository of skills for interfacing UiPath capabilities to external developers. The licence is MIT.
8 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 4c7cb7c. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
BashReadWriteEditGlobGrepAskUserQuestionFrom allowed-tools in the SKILL.md frontmatter.
Ships script files (TypeScript), which the agent can run.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
FOLDER_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Uipath Maestro Bpmn loads about 4.2k tokens when it runs, and up to ~16k if it reads all its reference files. Until then it costs about 254 tokens; SKILL.md has 1,790 words of instructions outside code blocks.
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.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Bash, Read, Write, Edit, Glob, Grep, AskUserQuestionAutomated 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.
The full file from UiPath/skills at commit 4c7cb7c, republished under its MIT licence (© UiPath). 1,790 words, ~4,238 tokens.
.claude/skills/uipath-maestro-bpmn/SKILL.md (or your agent's skills folder). This skill also uses 8 other files; get the full folder from GitHub.<!-- CANONICAL — edit here, not in UiPath/flow-builder-sdk. Why: docs/SKILLS_PROMOTION_PLAN.md in that repo. -->
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.
uip maestro bpmn init <Name>. It writes
<Name>/<Name>.bpmn plus project.uiproj, operate.json, entry-points.json,
bindings_v2.json, and package-descriptor.json — the layout bpmn pack and
product tooling require. Run it inside a solution to join that solution; run it
outside one and a parent <Name>Solution is scaffolded around it.<Name>.bpmn.ts at the workspace root, beside package.json.@uipath/maestro-builder-sdk/bpmn and default-export a chain ending in .build().bpmn init wrote —
uip maestro bpmn decompile <Name>/<Name>.bpmn -o <Name>.bpmn.ts --style nested — rather than
hand-writing the skeleton.
--style nested lifts an existing process's boundary events, gateways and event sub-processes into the nesting constructs, writes the top level in order (flowMode('sequence')), and leaves whatever it cannot prove flat with a printed reason; the compiled graph is verified identical before it is written. It KEEPS the flow ids the constructs now imply: an import's edge_… is pinned back onto the implied edge with a .flowIds([…]) call at the top of the chain, so the recompile reproduces the ids the artifact arrived with. That matters for brownfield work — bpmn merge keys every element by id, flows included, so a renamed flow reads as a new one, the original is deleted with its diagram edge, and a gateway default left naming the old id produces a file validate rejects. --keep-flow-ids now only confines the lift to regions whose ids already match, for source with no pin table, at the cost of lifting far less. Without --style nested the whole process is written flat. It carries the process id and the entryPointId UUID the
product assigned, which a hand-written chain cannot invent. An existing project needs
no init: seed from the .bpmn already there. For shape, copy the closest staged
examples/*.bpmn.ts.
Two things it does to the declaration blocks, both reported: it DROPS bindings nothing
references (--keep-unused-bindings keeps them) and it writes .preserve({ … }) for
state the document carried that nothing derives. Leave the .preserve call alone; see
Process contract.uip maestro bpmn check <Name>.bpmn.ts --source after structural changes.format it, then refresh it, then
run product validation — in that order, every time. validate refuses a file with
no diagram (BPMN_PARSE_ERROR: No diagrams found), and compile writes none;
format adds it.
Exactly one emitted <Name>.bpmn may exist, at
<Name>/<Name>.bpmn; do not leave a second copy at the workspace root, and do not
leave the template init wrote in place of your compiled output.refresh is part of the loop, not part of packaging. init generates
entry-points.json and operate.json once, naming the start event of the template
it wrote (Event_start); they do not follow source edits. Author a start event with
any other id — which authoring from your own chain always does — and step 6's
validator fails on the mismatch:
entry-points.json references start event "Event_start" via filePath, but no <bpmn:startEvent id="Event_start"> exists. uip maestro bpmn refresh <project-path>
regenerates both from the compiled BPMN. Run it after any edit that changes a start
event id or adds or removes an entry point. It validates before it writes, so lay
the diagram out first (format) or it fails with MISSING_DI_SHAPE, and it needs an
init-generated project — with no project.uiproj it has nothing to regenerate.Indexed in the INSTALLED PACKAGE, not here, because a .d.ts line span is only
true of the build that emitted it. The @uipath/maestro-builder-sdk package
ships dist/api-members.md, keyed by field or method name (gateway), and
dist/api-index.md, keyed by exported symbol (BpmnBuilder). Match one name — do not
read either end to end — then read the span it gives you: the whole declaration,
doc comment included. Both cover all three entry points; each file's own header
spells the paths its rows are relative to.
| Surface | Builder/API | Reference | Example |
|---|---|---|---|
| Process and nested scopes | bpmn, subProcess | Builders | examples/NotifyChannel.bpmn.ts |
| Variables, inputs, and outputs | vars, var, input, output, schemas, schema | Process contract | examples/NotifyChannel.bpmn.ts |
| A node's own output | the node's outputRows — not a .var() beside it | Process contract | examples/InvoiceApproval.bpmn.ts |
| Carried-from-import state, not for editing | preserve | Process contract | examples/InvoiceApproval.bpmn.ts |
| Start, end, catch, throw, boundary | event methods | Events | examples/NotifyChannel.bpmn.ts |
| Error, timer, or message ON an activity | the body callback of any activity method: onError, onTimer, onMessage | ActivityBuilder | examples/InvoiceEscalation.bpmn.ts |
| Exclusive, inclusive, parallel, event-based | gateway methods | GatewayOpts | examples/NotifyChannel.bpmn.ts |
| Decision, parallel split, or wait-for-first, written in place | choose, fork, race, goto | ChooseArm | examples/InvoiceEscalation.bpmn.ts |
| Safety net for a whole scope | eventSubProcess | Event sub-process scope | examples/InvoiceEscalation.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 |
| Connectors and external work | connector, externalAgent, externalWorkflow | Connectors | examples/NotifyChannel.bpmn.ts |
| A connector EVENT, as a start or a mid-flow wait | eventTrigger, waitForEvent | Connector events | — |
| Data Fabric records and file fields | dataService | Connections | examples/ContractRegistry.bpmn.ts |
| Any registry type, typed method or not | activity | Registry extension types | examples/InvoiceApproval.bpmn.ts |
| Existing BPMN | bpmn decompile, compile, merge | Brownfield | examples/NotifyChannel.bpmn.ts |
| Process metadata, package, and layout | metadata, project metadata, bpmn format | Contract metadata | examples/NotifyChannel.bpmn.ts |
| Package, upload, publish, debug, run, manage an instance | uip maestro bpmn refresh / pack / debug / process run / instance … | Operate | — |
| A run failed or is stuck | uip maestro bpmn job status / instance incidents / instance variables / instance asset | Diagnose | — |
import { bpmn } from '@uipath/maestro-builder-sdk/bpmn';
export default bpmn('notify')
.name('Notify')
.flowMode('sequence')
.var('status', 'string')
.startEvent('start')
.task('record', { set: { status: 'ready' } })
.endEvent('done')
.build();In sequence mode each element continues to the next, so a process written top to bottom has no .sequenceFlow(); branch with .choose(), attach handlers in an activity's body, and read bpmn check --graph to see the wiring that resulted.
The explicit form — .sequenceFlow('start', 'record') after the elements, in the default mode — is what bpmn decompile writes for an import unless --style nested lifts it, and both forms mix freely.
Where a relationship can be written by nesting, write it that way instead of by id.
Each form lowers to the same elements and flows the explicit methods produce, and the explicit .sequenceFlow() still works anywhere, mixed freely.
examples/InvoiceEscalation.bpmn.ts is a full process written this way, with no .sequenceFlow() at all; examples/InvoiceApproval.bpmn.ts is a real 71-element import lifted into this form by bpmn decompile --style nested — sixteen decisions as .choose(), five error handlers in their activities' bodies, and the seven .sequenceFlow() calls that remain are the merges and fan-outs no construct owns.
export default bpmn('approval')
.var('action', 'string')
.var('outcome', 'string', { default: 'RUNNING' })
.startEvent('start')
.humanTask('approve', { app: 'InvoiceApproval', actions: ['Approve', 'Reject'] }, (t) => {
t.onTimer('PT1H', { interrupting: false }, (b) => b.task('remind').endEvent('reminded'));
t.onError(true, { errorVar: 'failure' }, (b) => b.endEvent('failed', { name: 'Approval failed' }));
})
.choose('approved', [
{ when: '=vars.action == "Approved"', label: 'Yes', body: (b) => b.task('post') },
{ otherwise: true, label: 'No', body: (b) => b.task('reject') },
])
.endEvent('done')
.sequenceFlow('start', 'approve')
.sequenceFlow('approve', 'approved')
.eventSubProcess('failures', { error: true }, (h) =>
h.task('record', { set: { outcome: '=js:"FAILED: " + vars.failures_Error.message' } }).endEvent('recorded', { name: 'Failure recorded' }))
.build();attachedTo is never written.
An interrupting handler's path rejoins at the statement after the activity; a non-interrupting one runs beside the activity and must end its own path with an end event, .goto(), or an explicit flow.choose arms need when or otherwise: true; the fallback is the default flow, and no flow id is named.
Arms rejoin at the next statement, through a join named <id>_join only when more than one arm reaches it.choose / fork / race, not a bare gateway, and jump elsewhere with .goto(id).eventSubProcess inside the multi-instance sub-process.
An error net captures the caught error on its start by default, into vars.<net>_Error — so .eventSubProcess('failures', …) gives you vars.failures_Error, and you classify on .code / .message / .detail / .status with nothing more written. That per-net id is what the designer writes: over the real exports measured, every error capture carries a unique id with the display name Error, and the bare vars.Error appears in none of them. The Error spelling that IS fixed is the capture row's source="=Error", the key the engine seeds the payload under, which the SDK writes for you. errorVar names the variable something else; errorVar: false omits the capture.
A boundary handler captures nothing by default; there errorVar is what makes the error readable, as =vars.<errorVar>.code.check warns NO_DEFAULT_FLOW on an exclusive gateway whose every flow is conditioned; give it an otherwise arm or a default..flowMode('sequence'), called before the first element, wires consecutive elements of that scope in order, so a process written top to bottom needs no .sequenceFlow() at all; a .subProcess() body inherits it and may set its own.
An element that already has an explicit outgoing flow is not also wired to the next one, a bare gateway is wired into but implies no outgoing flows, and an element nothing leads into or a path that does not end is refused at build.uip maestro bpmn check <Name>.bpmn.ts --graph prints the wiring that resulted, ~> for an implied edge and -> for an explicit one, with [NO INCOMING] / [NO OUTGOING] where they apply.
Read it after a structural edit in a sequence scope, because inserting a line there rewires the graph.uip maestro bpmn init <Name> # once, before authoring
uip maestro bpmn check <Name>.bpmn.ts --source
uip maestro bpmn check <Name>.bpmn.ts --graph # the resolved wiring, implied edges marked ~>
uip maestro bpmn compile <Name>.bpmn.ts -o <Name>/<Name>.bpmn
uip maestro bpmn format <Name>/<Name>.bpmn
uip maestro bpmn refresh <Name> --output json # entry-points.json + operate.json, from the BPMN
uip maestro bpmn validate <Name>/<Name>.bpmn --output jsoncheck owns source and graph invariants. Product validation owns the compiled
BPMN contract. Change the TypeScript source and rebuild; do not patch emitted XML.
Skipping refresh is the most common way to fail validate on a process that is
otherwise correct: see step 7 above.
A process with connector nodes gives check more to work with. It reads the connector
library and the project's bindings.json when they are there, and reports a missing
required input, an unresolved lookup(), an unprepared object or a self-naming binding
before compile does — each with the one command that closes it. --library <dir> and
--connectors-local <dir> name them explicitly; both are auto-detected otherwise.
Refresh the package metadata, pack, upload to Studio Web (what "publish" means
unless the user names Orchestrator), debug a real run, run a deployed process,
inspect a job, and drive an instance's lifecycle. All of it needs uip login;
uip maestro bpmn refresh <project-path> comes before every cloud action, and
bpmn debug is a REAL run, not a validation step. Every mutation needs the
user's decision for that action. Read
references/operate.md.
Triage in order — job status, incidents, runtime variables, the deployed BPMN
asset, element executions and cursors, the generated package files, traces last
— with the CLI's exact verbs, every instance read carrying -f <FOLDER_KEY>.
Never mutate while diagnosing, and never guess a command shape: the reference
lists them. Read references/diagnose.md.
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.
© UiPath, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 8 other files (references) in preview/skills/uipath-maestro-bpmn of UiPath/skills.
Open the folder on GitHubat commit 4c7cb7c
Uipath Maestro Bpmn 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Uipath Maestro Bpmn this skillUiPath/skills | 167 | — | ~4.2k | Automated safety check: Notes | MIT | |
| Simulator Audio E2Ehyochan/react-native-nitro-sound | 961 | — | ~1.1k | Automated safety check: Pass | MIT | |
| Phone Harnessmilind-soni/OpenMausBot | 4.4k | — | ~364 | Automated safety check: Pass | Apache-2.0 | |
| Keybase E2E Flow Testskeybase/client | 9.3k | — | ~1.2k | Automated safety check: Pass | BSD-3-Clause | |
| Phone HarnessShawnPana/phone-harness | 3.2k | — | ~7.7k | Automated safety check: Pass | MIT | |
| Maa Issue Log AnalysisMaaAssistantArknights/MaaAssistantArknights | 24k | — | ~4k | Automated safety check: Pass | AGPL-3.0 |
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…
milind-soni/OpenMausBot
Control, inspect, test, or automate a physical Android phone connected to OpenMausBot over authorized USB debugging.
keybase/client
Guides writing and fixing end-to-end flow tests for the Keybase app on desktop with Playwright and on iOS with Appium and WebdriverIO, sharing one testID registry.
ShawnPana/phone-harness
Control the user's phone - an iPhone through the Mac's iPhone Mirroring window, an Android over adb, a rented cloud Android, or a cloud iPhone over HTTPS: open apps, tap, type, swipe, read the screen.
MaaAssistantArknights/MaaAssistantArknights
分析 MaaAssistantArknights 上游仓库公开 Issue(https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/...
tloncorp/tlon-apps
Run a mobile QA checklist on a physical Android device over adb for tlon-apps, then triage what fails into fixes.
UiPath/skills
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…
UiPath/skills
Maintain build-time skill flavors in the UiPath skills repository.
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…
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…
UiPath/skills
UiPath causal investigation across every product, runtime, and activity package.
UiPath/skills
UiPath API Workflow assistant — author, run, validate, package, publish, deploy, and troubleshoot JSON workflows for uip api-workflow.
Works with
Categories
TRIGGER for authoring, operating or diagnosing UiPath Maestro BPMN. Uipath Maestro Bpmn is an agent skill from UiPath/skills. TRIGGER for authoring, operating or diagnosing UiPath Maestro BPMN.
Uipath Maestro Bpmn fits situations like: diagnosing UiPath Maestro BPMN; tasks that involve Mobile testing and debugging.
Run `npx skills add UiPath/skills --skill uipath-maestro-bpmn -a claude-code`. Or copy the skill folder (preview/skills/uipath-maestro-bpmn in UiPath/skills) into .claude/skills/uipath-maestro-bpmn in your project. Claude Code loads it when a task matches its description.
Run `npx skills add UiPath/skills --skill uipath-maestro-bpmn -a codex`. Or copy the skill folder (preview/skills/uipath-maestro-bpmn in UiPath/skills) into .agents/skills/uipath-maestro-bpmn in your project. Codex loads it when a task matches its description.
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-bpmn -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-bpmn, .gemini/skills/uipath-maestro-bpmn, .github/skills/uipath-maestro-bpmn and .opencode/skills/uipath-maestro-bpmn in your project.
Going by SKILL.md and its folder, Uipath Maestro Bpmn needs TypeScript for the scripts in its folder and credentials named FOLDER_KEY. Our summary lists: Node.js. Its frontmatter pre-approves these tools: Bash, Read, Write, Edit, Glob, Grep, AskUserQuestion.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
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.
Uipath Maestro Bpmn is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.2k tokens (SKILL.md is roughly 17k 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 12k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Uipath Maestro Bpmn: Simulator Audio E2E (hyochan/react-native-nitro-sound, 961 stars), Phone Harness (milind-soni/OpenMausBot, 4.4k stars), Keybase E2E Flow Tests (keybase/client, 9.3k stars) and Phone Harness (ShawnPana/phone-harness, 3.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
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 11, 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.