Agent skill

Uipath Activity Migrator

by UiPath in UiPath/skills

UiPath Activity Migrator — migrate Windows-Legacy RPA projects (targetFramework: Legacy, classic ui: activities) to the Windows framework and rewrite UiPath's own classic activities into their…

MITAuto-check passedProductivity & Automation

Install Uipath Activity Migrator

skills CLI
$ npx skills add UiPath/skills --skill uipath-activity-migrator -a claude-code

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

GitHub CLI
$ gh skill install UiPath/skills uipath-activity-migrator --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-activity-migrator .claude/skills/uipath-activity-migrator && 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-activity-migrator
GitHub stars
167
Token cost
~8.5k tokens
SKILL.md length
4,193 words
Files
14 (incl. scripts, references)
Skills in repo
28
Repo updated
First seen
Licence
MIT

At a glance

UiPath Activity Migrator — migrate Windows-Legacy RPA projects (targetFramework: Legacy, classic ui: activities) to the Windows framework and rewrite UiPath's own classic activities into their…

  • Works in 7 steps: Preflight and acquire the tool → Discover the project → Resolve the target package line → …
  • Tasks that involve Workflow automation
  • SKILL.md covers When to Use This Skill, Critical Rules, Workflow and Package Routing, plus 2 more sections
  • Runs JavaScript scripts from its folder; calls node and git

What it does

Uipath Activity Migrator is an agent skill from UiPath/skills. UiPath Activity Migrator — migrate Windows-Legacy RPA projects (targetFramework: Legacy, classic ui: activities) to the Windows framework and rewrite UiPath's own classic activities into their modern UiPath counterparts with the standalone UiPath.Upgrade.exe. Windows only. Third-party or custom packages are not rewritten, only version-moved. Acquires the tool, resolves the target UIAutomation line, runs analyze then upgrade into a sibling folder, verifies with uip rpa build, triages the SARIF. Classic UI…

Its SKILL.md is about 8.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 16 other files, including scripts and reference files (for example `references/acquisition-guide.md`, `references/build-verification-guide.md` and `references/packages/gsuite-guide.md`).

It sits in Productivity & Automation, covering Workflow automation, Mobile testing and debugging and Cloud office suites. It works with Google Workspace and Microsoft 365. 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

  • Tasks that involve Workflow automation
  • Tasks that involve Mobile testing and debugging
  • Tasks that involve Cloud office suites

Example prompts

  • “/uipath-activity-migrator”

Requirements

  • Node.js

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. Preflight and acquire the tool
  2. Discover the project
  3. Resolve the target package line
  4. Analyze
  5. Upgrade
  6. Verify
  7. Post-migration and report

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 nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 3 files in scripts/ (JavaScript), which the agent can run.

    Shell commands in SKILL.md call:

    • node
    • git

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

  • Network

    No URLs in SKILL.md. Its commands use git, 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 Activity Migrator loads about 8.5k tokens when it runs, and up to ~32k if it reads all its reference files. Until then it costs about 256 tokens; SKILL.md has 4,193 words of instructions outside code blocks.

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

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 passed

The automated check found no risky patterns in SKILL.md.

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); the scripts in this folder are not scanned.

SKILL.md

The full file from UiPath/skills at commit 0bada1b, republished under its MIT licence (© UiPath). 4,193 words, ~8,486 tokens.

Download SKILL.mdSave it as .claude/skills/uipath-activity-migrator/SKILL.md (or your agent's skills folder). This skill also uses 13 other files; get the full folder from GitHub.
name
uipath-activity-migrator
description
UiPath Activity Migrator — migrate Windows-Legacy RPA projects (`targetFramework: Legacy`, classic `ui:` activities) to the Windows framework and rewrite UiPath's own classic activities into their modern UiPath counterparts with the standalone `UiPath.Upgrade.exe`. Windows only. Third-party or custom packages are not rewritten, only version-moved. Acquires the tool, resolves the target UIAutomation line, runs analyze then upgrade into a sibling folder, verifies with `uip rpa build`, triages the SARIF. Classic UI Automation→modern UIA, Outlook classic→Microsoft 365, GSuite classic→modern, Microsoft.Activities.Extensions→Invoke Code. Also the post-migration fix for migrated projects whose expression-selector targets fail or silently report not-found. Authoring or editing Legacy `.xaml`→uipath-rpa. Migration-readiness review without running the tool→uipath-review. Post-migration failures with neither marker nor annotation→uipath-troubleshoot. Maestro `instance migrate`→the Maestro skills.
when_to_use
User says 'migrate activities', 'migrate UiPath activities', 'classic UiPath activities to modern', 'migrate this project', 'upgrade from Windows-Legacy'…

UiPath Activity Migrator

Drive the standalone Activity Migrator (UiPath.Upgrade.exe) end to end: acquire, analyze, upgrade, verify, report. The tool converts a Windows-Legacy project to the Windows framework and rewrites UiPath's classic activities into their modern UiPath equivalents; third-party and custom packages are only moved to a Windows-compatible version by restore, never rewritten. It runs without Studio. It requires Windows and the .NET Desktop Runtime 8.

<!--skill-flavor:host-availability-extra:start-->
<!--skill-flavor:host-availability-extra:end-->

Read referenced files in full. This SKILL.md is a router. Before running analyze, open and read the whole package guide for every classic package the project uses (see Package Routing). Package guides add flags, config files, triage rules, and post-migration steps that the core workflow does not know.

<SKILL_DIR> below is the folder that contains this SKILL.md. <PROJECT_DIR> is the absolute path of the folder holding project.json. <OUTPUT_DIR> is the migrated copy, a sibling folder, <PROJECT_DIR>_Upgraded by default, always as an absolute path: uip rpa rejects relative ones.

When to Use This Skill

  • User wants to migrate, upgrade, convert, or modernize a Windows-Legacy project or its classic UiPath activities
  • User wants classic UiPath UI Automation activities rewritten as their modern counterparts
  • User wants to run the Activity Migrator or mentions UiPath.Upgrade.exe
  • User wants a migration dry run or migration report produced by the tool (analyze)
  • User wants classic Outlook mail, classic GSuite, or Microsoft.Activities.Extensions activities migrated
  • User wants a post-migration fix: an already-migrated project whose expression-selector targets fail at runtime or silently report not-found, or one carrying [PostMigration Action Required] annotations. The skill owns such a failure while the failing target or an enclosing construct carries one of three signals: the .ToStringWithDelimiter() marker, a [PostMigration Action Required] line, or a by uipath-activity-migrator line (Rule 12). Otherwise the failure belongs to uipath-troubleshoot

Do not use for: authoring or editing Legacy workflows (uipath-rpa, Legacy mode), a readiness review that does not run the tool (uipath-review), diagnosing a runtime failure of an already-migrated project whose failing construct carries none of the three signals above (uipath-troubleshoot), uip solution deploy upgrade, or Maestro instance migrate.

Critical Rules

  1. Windows only. Check the OS before anything else. On macOS or Linux, stop and tell the user to run the migration from a Windows machine that holds the project. The tool is a .NET 8 desktop process and cannot run elsewhere.
  2. Never run the tool in console mode. Always pass --output-format sarif and redirect stdout to a file. Console mode opens an HTML report in the browser and prints no machine-readable result.
  3. Never trust the exit code. The tool exits 0 whether the migration succeeded, partially succeeded, or failed. Status comes only from the SARIF results, classified per sarif-triage-guide.md.
  4. Analyze before upgrade, every time. Run analyze, triage it, and only then run upgrade. When the analyze triage shows no stop condition, proceed to upgrade without asking, unless the user asked only for an analysis, a report or a plan: then stop after the triage, present the findings with the proposed treatment of each needs-attention item, and run upgrade only on the user's go. Any request whose deliverable is information rather than a migrated project counts as that: analysis, report, plan, dry run, "can this be migrated", "what would change"; when the wording leaves it open, ask one yes/no before upgrade. Rule 13 governs a treatment the user chooses there. One exception: a Step 4 rerun that the build guide or a package guide prescribes with an added flag reuses the Step 3 analyze; it counts as one build-fix iteration (Rule 10), and the skill deletes the <OUTPUT_DIR> it created in this session without asking.
  5. Never write into the source project. upgrade writes to a fresh sibling folder. Never point --output-path at <PROJECT_DIR>, never copy the output back over the source, never delete the source, and never edit a file in it, project.json included. This holds for every source project the task touches, including a library's source project. Two folders inside the source are the only exception: .upgrade/, which holds the tool's reports and the logs, summaries and config files this skill's steps write there, and .local/, the tool's restore cache.
  6. Never pass secrets through the agent. Do not type --orchestrator-pat or --orchestrator-application-secret values yourself. When a tenant feed is required, rely on the tool's fallback to the local Studio or Robot connection; if that fails, hand the user the complete command with <PLACEHOLDER> values to run themselves.
  7. Resolve the target UIAutomation package line explicitly. When the project uses UiPath.UIAutomation.Activities, resolve the latest stable patch of a release line per Step 2 and pass it as --uia-package-version=<UIA_VERSION>. Extension options bind only in the --name=value form; the space-separated form parses without error and is silently ignored. Accept the tool default only when the feed is unreachable, and say so in the report. The target version is settled before the migration runs; the skill never edits package versions on the output afterwards to reach it.
  8. Verify with the modern CLI. Migration is not done until uip rpa build passes on <OUTPUT_DIR>, or the remaining errors are reported as needs-attention items after the bounded fix loop in build-verification-guide.md. Every uip rpa command this skill runs unsets UIPATH_STUDIO_PID in the syntax of the shell that runs it: in bash, the Bash tool on Windows included, prefix env -u UIPATH_STUDIO_PID; in PowerShell, put $env:UIPATH_STUDIO_PID = $null; in the same command, before uip, which removes it; a separate tool call starts a new process and loses the assignment. The PowerShell form does not unset the variable in bash, the bash prefix fails in PowerShell, and setting the variable to an empty string does not unset it. A brief to a subagent passes this rule on together with the commands, so the subagent writes the form for its own shell. Dropping it is never an acceptable translation. runtime-verification-guide.md says why.
  9. Libraries first. When analyze reports RESTORE-CUSTOM-LIBRARY-MIGRATION-REQUIRED, stop. Tell the user to migrate and publish that library to the feed before migrating this project. The tool cannot order dependencies.
  10. Bounded loops. At most 3 build-fix iterations in Step 5. Then report what remains.
  11. Never run the migrated project unasked. The runtime check of Step 6 runs only after the user answers yes to its one question. An earlier explicit request to run the migrated project, given in the same task, counts as that yes, and the question is then not asked. Every fix and every rerun after it happens only through the runtime guide's fix and rerun loop, each behind one yes/no; outside that loop the check only observes. It runs in the headless Studio, never in the Studio the user has open (Rule 8).
  12. Mark every edit. Every construct the skill edits or adds outside the tool, in the post-migration fix guide, the build loop, the runtime loop, a plan treatment or an edit delegated to the RPA authoring skill, carries the annotation line Remediated by uipath-activity-migrator on <YYYY-MM-DD>: <what changed>. It replaces the matching [PostMigration Action Required] line when there is one and is added as a new annotation otherwise. Write it as part of the edit itself, so an undone fix loses it with the backup restore and a standing fix keeps it whatever happens next. One exception: a construct whose only edit is the fix guide's rewrite of an annotation line to Verified healthy by uipath-activity-migrator carries that line as its mark and gets no Remediated line. A later failure at a construct carrying either line is this skill's to diagnose.
  13. Plan-mode treatments. When the user asked for a plan (Rule 4), the treatment their go names is the edit, even when it differs from the one proposed. A proposal leaves open any name only a run can reveal, such as the exception an activity actually throws ("retype the Catch to the exception the run reports"); it never guesses one. Step 5a applies the chosen treatment.

Workflow

Fix-only entry. When the user asks to fix or scan a project that was already migrated, or reports a UI failure in one, none of the steps below apply. First settle ownership: grep the project's XAML for the three signals, ToStringWithDelimiter, PostMigration Action Required and by uipath-activity-migrator. When the failing construct and its ancestors carry none, or for a project-wide request no file carries any, hand the failure to uipath-troubleshoot together with that result: do not build, do not run. Otherwise run uia-post-migration-fix-guide.md with that project as <MIGRATED_DIR>, then build it with the build and fix loop in build-verification-guide.md, offer the runtime check per runtime-verification-guide.md with <MIGRATED_DIR> as its <OUTPUT_DIR>, and report once, at the end, in the shape given by the fix guide's Output section. Do not resolve a package version, do not run package-guide hooks, and do not use the Step 6 template: nothing was analyzed or upgraded.

Step 0 — Preflight and acquire the tool

Run the acquisition script with node, which Steps 2 to 4 already use for their scripts; the same command works in bash and in PowerShell. It executes no PowerShell or shell script file, so script execution policies and hosts that gate a script invocation do not apply. The script locates a cached tool, downloads and extracts it when missing, checks the .NET Desktop Runtime 8, and prints one JSON object on its last stdout line. Any run can download the archive, a first install or an update, a few hundred MB: give the command at least 10 minutes, not the host's default timeout. Every other shell command in this skill assumes Git Bash, which the Bash tool uses on Windows: the redirections and the grep pipelines are not translated, and the only PowerShell alternative given is Rule 8's variable.

bash
node "<SKILL_DIR>/scripts/ensure-migrator.mjs"
statusAction
okRecord exe as <MIGRATOR_EXE> and version. Continue.
error, code: not-windowsRule 1. Stop.
error, code: runtime-missingRelay the script's message; it names the fix. Stop.
error, code: download-failedRelay the script's message, which names each downloader's error, and give the manual steps from acquisition-guide.md § Manual placement. Stop.
error with an env fieldPut that assignment, as is, at the start of this script's command and of every "<MIGRATOR_EXE>" command from here on, then rerun the script. In PowerShell write it as $env:<NAME> = '<value>'; in the same command. Never drop or alter the assignment.
any other errorShow message. Stop.

Then read the flag list of this build once. It is the only authority on which flags exist.

bash
"<MIGRATOR_EXE>" analyze --help

Keep the output for Steps 3 and 4. For this run, the flags in that output are the only flags that exist: a guide-named flag is passed only when it appears there, and its absence is not a finding, not a note, and not a report item. A flag the help lists but no guide names may be used only when its help text directly addresses a problem this run has shown (a specific SARIF result or build error); pass it as --name=value and say so in the report. Never one that changes what migrates or which extensions run; those are passed only on the user's request. Behavior the help does not state (option binding, exit code, output streams, folders) is in tool-behavior-guide.md.

Summarize to the user in one line: tool version and location.

Step 1 — Discover the project
  1. Resolve <PROJECT_DIR>: the folder containing project.json. If several exist under the working directory, ask which one, unless the user named it. For "migrate everything in this repo", see tool-behavior-guide.md § bulk.
  2. Read project.json and record: targetFramework, expressionLanguage, dependencies. Legacy (or absent) is the primary case. Windows projects still qualify when they hold classic activities; tell the user the framework step will be a no-op.
  3. Match dependencies against the Package Routing table. Read every matching package guide in full now.
  4. Pick <OUTPUT_DIR>: the user's choice, else <PROJECT_DIR>_Upgraded. If it already exists, ask whether to delete it or use a different name. Never reuse it silently: the tool merges into an existing folder.
  5. If the project is under git, run git status --short in it and mention uncommitted changes in the report. Do not commit or stash. The tool's .upgrade/ and .local/ folders will show as untracked afterwards; say so.
Step 2 — Resolve the target package line

Only when UiPath.UIAutomation.Activities is a dependency. Rationale and details: packages/uia-guide.md § Resolve the target line.

  1. If the user named a line or version ("migrate to 26.10", "use 25.10.40"), resolve that and skip the question. A version below the minimum in uia-guide.md § Version gates cannot be used: say so, name the minimum, and ask for another; the tool enforces the same minimum in Step 3.

  2. Otherwise resolve the candidate lines from the official UiPath NuGet feed. The script needs no project and no login. Do not use uip rpa packages versions here: the headless Studio host it starts refuses to open Legacy projects.

    bash
    node "<SKILL_DIR>/scripts/resolve-package-lines.mjs" --package UiPath.UIAutomation.Activities --min 25.10.21

    Output: the two most recent LTS lines (<year>.10) with their highest stable patch; the newest is recommended.

  3. Ask once with AskUserQuestion: newest line first, labeled (Recommended), each option showing <line>.x → <version>. Say once that a package version runs only on Studio and robots at or above the minimum its release notes list, so the older line is the safe pick when the fleet is behind. The project's studioVersion field is not a signal: it records the Studio that last saved the Legacy project. If the user defers the choice, take the recommended line.

  4. If the script prints error (feed unreachable), pass no version and let the tool pin its built-in default: do not ask. Step 3 sets <UIA_VERSION> from the version the tool reports, and the report line carries the suffix "(tool default, feed unreachable)".

Record the chosen version as <UIA_VERSION>.

Step 3 — Analyze

Assemble <PACKAGE_FLAGS> from every package guide read in Step 1 (Hook 1 sections). Then:

bash
mkdir -p "<PROJECT_DIR>/.upgrade"
"<MIGRATOR_EXE>" analyze --project-path "<PROJECT_DIR>" --uia-package-version=<UIA_VERSION> --output-format sarif <PACKAGE_FLAGS> > "<PROJECT_DIR>/.upgrade/analyze-latest.sarif" 2> "<PROJECT_DIR>/.upgrade/analyze-latest.err"
node "<SKILL_DIR>/scripts/summarize-sarif.mjs" "<PROJECT_DIR>/.upgrade/analyze-latest.sarif" --out "<PROJECT_DIR>/.upgrade/analyze-latest.md"

Omit --uia-package-version when the project has no UIAutomation dependency or when Step 2 fell back to the tool default; never pass the flag with an empty value. The summarizer prints a short summary (status, counts, blockers, a Reason: line for a failed without blockers or an unknown, step failures, what needs attention grouped by reason and by file) and writes the full per-item report to the --out file. Show the user the short summary as is.

Read the UiPath.UIAutomation.Activities entry on the summarizer's Packages: line. Its to value, the version after → or the one marked (unchanged), is what <OUTPUT_DIR>/project.json will hold. Decide by what the entry says, first matching row wins:

Packages: entryMeaningAction
to equals <UIA_VERSION>The flag boundContinue
Step 2 fell back, no flag was passedTool defaultSet <UIA_VERSION> to the to value now; the report line carries "(tool default, feed unreachable)"
(requested <UIA_VERSION>, raised to the tool minimum <Y>)The tool refused the version and used its minimumTell the user <UIA_VERSION> cannot be used and <Y> is the lowest possible; ask whether to migrate to <Y> or abort. On yes, <UIA_VERSION> is <Y> from here on; the analyze results already describe that version, so no rerun is needed. Never compensate by editing package versions on the output afterwards
<Y> (unchanged) with <Y> above <UIA_VERSION>The project already holds a newer version; the tool keeps itSet <UIA_VERSION> to <Y> and say so in the report
to differs from <UIA_VERSION> and nothing above appliesThe flag did not bind, almost always the space-separated form (--uia-package-version 25.10.39), which the tool accepts and ignoresFix the command to the = form and rerun analyze

Then apply the stop conditions:

Analyze outcomeAction
No stop conditionContinue to Step 4 without asking. When the user asked only for an analysis, a report or a plan (Rule 4), stop here instead: present the summary with the proposed treatment of each needs-attention item, and continue to Step 4 only on the user's go. A treatment the user chose there that edits the output follows Rule 13 and Step 5a.
RESTORE-MISSING-PACKAGE / RESTORE-INCOMPATIBLE-PACKAGEStop. Explain which package, offer the Orchestrator-feed command with placeholders (Rule 6) or --ignore-missing-dependencies with its consequences. Rerun analyze after the user acts.
RESTORE-CUSTOM-LIBRARY-MIGRATION-REQUIREDRule 9. Stop.
Package guide stop conditionFollow the guide.
Summarizer exits 2 (cannot parse, no .sarif files)The tool wrote no log: it died or rejected the command line. Read <PROJECT_DIR>/.upgrade/analyze-latest.err and the exit code, fix the cause, rerun analyze. A crash is not yours to fix: stop and report it with the .err content.
status: failed or status: unknown for any other reasonStop. Show the blockers or the Reason: line and the .upgrade log path. Never continue to Step 4.
Show full SKILL.md (1,447 more words)Show less
Step 4 — Upgrade

Same flags as the analyze run, plus the output path:

bash
"<MIGRATOR_EXE>" upgrade --project-path "<PROJECT_DIR>" --output-path "<OUTPUT_DIR>" --uia-package-version=<UIA_VERSION> --output-format sarif <PACKAGE_FLAGS> > "<PROJECT_DIR>/.upgrade/upgrade-latest.sarif" 2> "<PROJECT_DIR>/.upgrade/upgrade-latest.err"
node "<SKILL_DIR>/scripts/summarize-sarif.mjs" "<PROJECT_DIR>/.upgrade/upgrade-latest.sarif" --out "<PROJECT_DIR>/.upgrade/upgrade-latest.md"

Confirm <OUTPUT_DIR>/project.json exists and its targetFramework is Windows. If the summarizer cannot parse the log or the status is failed or unknown, report and stop: <OUTPUT_DIR> may be partially written, so delete or rename it before any rerun (Step 1 item 4). Do not retry with different flags unless a package guide says so.

Step 5 — Verify

Follow build-verification-guide.md. In short, with <OUTPUT_DIR> absolute (never .):

bash
env -u UIPATH_STUDIO_PID uip rpa build "<OUTPUT_DIR>" --output json

Build passes: continue. Build fails: validate the offending files, fix per the guide's rules, rebuild, at most 3 iterations (Rule 10). Package guides list build errors that call for a rerun of Step 4 with an extra flag rather than a hand fix. If uip is unavailable, skip verification and say so prominently in the report.

Step 5a — Apply a plan-chosen treatment

Only when Rule 13 applies; otherwise continue to Step 6.

  1. Read runtime-verification-guide.md § Fix and rerun loop. Its Evidence, Limits and Sources sub-steps and its subagent brief govern the edit.
  2. Back the file up as edit 1 under <PROJECT_DIR>/.upgrade/runtime-fixes/1/, make the edit, then validate and build with that loop's step 3 commands. The edit does not count toward the loop's limit of 3 fixes.
  3. Nothing runs here, even when the user already asked for a run: the run happens in Step 6, where that earlier request counts as its yes (Rule 11).
  4. The edit carries its Remediated line as Rule 12 says, written with the edit itself, never after validate and build pass. The line records the change made; the run in Step 6 is what verifies it.
  5. Report the edit under Fixes applied with the source requested.
Step 6 — Post-migration and report
  1. Run every matching package guide's Hook 3 section (annotations, delegated fix skills, manual follow-ups).
  2. Offer the runtime check when the conditions in runtime-verification-guide.md hold: one yes/no question, default no, no time limit proposed. On yes, run it as the guide says, attribute a failure with its table, offer the guide's fix and rerun loop for a migration-related failure, and fill the Runtime check block below.
  3. Report once, at the end: after the runtime check's question was answered and any run and its fix loop ended. Report only what the reader must act on or decide, under these rules:
    1. Success is one line with counts. Detail exists only for what needs attention, grouped, never one line per activity.
    2. <L> is the summarizer's left-classic count. Activities the tool left classic are not defects: they compile and run as classic, so they are the <L> count on the status line and entries in the full list, never lines. No left-classic activity is named anywhere in the report: not as a Needs attention item, not in a Next steps line, not in a sentence after the last block that lists or explains them. The full list the status line points to is where the reader finds them.
    3. <M> is built in this order:
      1. Start from the summarizer's needs-attention items.
      2. Remove each item whose report key matches a finding the fix guide reported as fixed or healthy. The report key is the file plus the DisplayName the tool reported, which for a generated card is the wrapped child, never the card. One item per finding, never per annotation line rewritten. A finding that matches no item removes nothing; a fixed one still appears under Fixes applied, a healthy one appears nowhere.
      3. Add every item a package guide's Hook 3 left open and every build error the Step 5 loop left unfixed.
      4. Add every defect introduced by the skill's own edit that is still open. <M> is never below zero. The by-reason and by-file lines are derived from the remaining items only.
    4. <status> is the summarizer's, copied as printed. One promotion exists: partial becomes success only when <L> = 0 and <M> = 0 after rule 3, both at once. When <L> > 0 the status stays partial whatever <M> is: an activity left classic is not a defect, but it is not migrated either, and success would claim it is. failed and unknown are never promoted.
    5. Report only what the tool reported or the build showed: no speculation about how migrated activities will behave at runtime, no description of the migration mechanics, no table of what changed. Name a specific replacement activity only when the tool's message names one. Do not list constructions that were checked and left alone, and do not restate that edited files validated; the build result covers it.
    6. The report is these blocks and nothing else: no sentences before, between or after them. A lead-in line before the heading and a closing paragraph after the last block are padding, whatever they explain. Shape:
markdown
## Migration result: <status>
<N> activities migrated, <L> left classic, <M> need attention, build <passed|failed|not verified>. Output: <OUTPUT_DIR>. UIAutomation <from> → <UIA_VERSION>.   <- append " (tool default, feed unreachable)" after the version when Step 2 fell back
Full list: <PROJECT_DIR>/.upgrade/upgrade-latest.md · Tool report: <PROJECT_DIR>/.upgrade/<name>-<id>.html   <- only when L + M > 0; left-classic activities still run as classic and are listed there

### Needs attention (<M>)            <- only when M > 0
- By reason: <reason> ×<n>, <reason> ×<n>
- By file: <file> (<n>), <file> (<n>), … <k> more files
<items inline only when M ≤ 10: - <file>: <activity> — <what to do>>

### Fixes applied (<F>)              <- only when the post-migration fix or the runtime loop edited the output
- <file>: <activity> — <what was changed>   <- one line per fix, no sub-bullets; loop fixes end with (fix <n>, fix guide | annotation | hypothesis | requested)
- <k> annotations rewritten to Verified healthy (no structural change)   <- one line, only when k > 0

### Runtime check                    <- only when the user said yes
<Passed in <duration> | Passed on run <n> after <k> <fix or fixes> | Failed at <file>: <activity> — <exception type>: <first line of message>, after <k> <fix or fixes>, <u> undone | Stopped at <last logged step> | Not started: <reason>>   <- this line only; no workflow output
- <migration-related | not migration-related>: <why>. <what to do>     <- only when failed

### Next steps                       <- these lines only; when the runtime check did not run, one more line saying what makes it possible
- Open <OUTPUT_DIR> with Studio 2024.10 or later and run the main workflow once in Debug.   <- drop the Debug clause when the runtime check passed
- <package-specific runtime prerequisites, only when a package guide lists one>

Package Routing

Match project.json dependencies to guides; the dependency is the only routing key. Do not pre-scan XAML for classic activities: no pattern is exhaustive, and the analyze run reports every affected activity per file anyway. Every guide has three hook sections the workflow calls: Hook 1 (flags and config before analyze), Hook 2 (triage rules for that extension's SARIF results), Hook 3 (post-migration steps). Adding a package to this skill means adding one guide with those three sections and one row here.

Dependency in project.jsonExtension name (--help)Guide
UiPath.UIAutomation.ActivitiesUiAutomationActivitiespackages/uia-guide.md
UiPath.Mail.ActivitiesMailActivitiespackages/mail-guide.md
UiPath.GSuite.Activities (classic line)GSuiteActivities (preview-gated)packages/gsuite-guide.md
Microsoft.Activities.Extensions, Microsoft.ActivitiesMicrosoftActivitiesExtensionpackages/microsoft-activities-guide.md

The framework flip, package restore, reference fixing, and type checking are core steps and run for every project with no routing.

Reference Navigation

FileRead when
acquisition-guide.mdStep 0 fails, the machine is offline or behind a proxy, or the user asks where the tool lives or how to update it
tool-behavior-guide.mdBehavior --help cannot tell you: option binding, exit code, output streams, the .upgrade and output folders, restore version selection, the Orchestrator hand-off template, bulk
sarif-triage-guide.mdEvery analyze and upgrade run: status mapping, core rule IDs, summarizer usage
build-verification-guide.mdStep 5: build and validate loop, expected warnings, fix policy
runtime-verification-guide.mdStep 6: the opt-in run of the migrated project, its verdict and attribution rules, the starting-state baseline, and the fix and rerun loop
uia-post-migration-fix-guide.mdThe migrated output carries .ToStringWithDelimiter() markers (UIA Hook 3), or the user asks for a post-migration fix on an already-migrated project
packages/uia-guide.mdProject depends on UiPath.UIAutomation.Activities
packages/mail-guide.mdProject depends on UiPath.Mail.Activities
packages/gsuite-guide.mdProject depends on classic UiPath.GSuite.Activities
packages/microsoft-activities-guide.mdProject depends on Microsoft.Activities.Extensions or Microsoft.Activities
scripts/ensure-migrator.mjsStep 0
scripts/summarize-sarif.mjsSteps 3 and 4. Node script, no dependencies
scripts/resolve-package-lines.mjsStep 2 and package guides. Lists release lines of a package from the official feed; no project or login needed

Anti-patterns

  • Running UiPath.Upgrade.exe without --output-format sarif, or reading its exit code as a verdict
  • Running upgrade without an analyze triage first, or pointing --output-path at the source project
  • Pasting a PAT or client secret into a command line
  • Hand-converting classic activities in XAML instead of letting the tool do it, or "finishing" activities the tool left classic by rewriting them blind
  • Reworking or "improving" a selector that carries the .ToStringWithDelimiter() marker instead of running the post-migration fix procedure; the defect is structural and the rewrite destroys the variable binding
  • Accepting the tool's default UIAutomation version when the feed was reachable
  • Passing an extension option space-separated (--uia-package-version 25.10.39); only --uia-package-version=25.10.39 binds
  • Raising the UIAutomation package on the migrated output with uip rpa packages install to reach the requested line instead of fixing the flag or asking the user
  • Resolving package versions with uip rpa packages versions against a Legacy project; the headless Studio host cannot open it
  • Pre-scanning the XAML for classic activities (grep on <ui: prefixes) before or after analyze; the SARIF is the only complete inventory, and the ui: prefix also covers System and Excel activities
  • Skipping the package guides and passing no package flags for a project that uses Outlook classic or GSuite classic activities
  • Declaring success because upgrade finished, without uip rpa build on the output
  • Running the migrated project without the user's yes, or repairing and rerunning outside the runtime guide's fix and rerun loop; every fix and every rerun sits behind one yes/no. The runtime check's other anti-patterns are in runtime-verification-guide.md § Anti-patterns, read with that guide
  • Editing the SARIF summary by hand instead of rerunning the summarizer after a rerun
  • Padding the report with checks that found nothing, a classic-to-modern mapping table, or guesses about how the migrated activities will behave at runtime. Typical offenders: "both edited files validate with 0 errors", "left alone (valid cross-window probes)", "the project now mixes two package lines", "the framework step was a no-op", a closing paragraph that names the activities left classic and explains why they stayed classic

© 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 13 other files (scripts, references) in skills/uipath-activity-migrator of UiPath/skills.

  • SKILL.md
  • references/acquisition-guide.md
  • references/build-verification-guide.md
  • references/packages/gsuite-guide.md
  • references/packages/mail-guide.md
  • references/packages/microsoft-activities-guide.md
  • references/packages/uia-guide.md
  • references/runtime-verification-guide.md
  • references/sarif-triage-guide.md
  • references/tool-behavior-guide.md
  • references/uia-post-migration-fix-guide.md
  • scripts/ensure-migrator.mjs
  • scripts/resolve-package-lines.mjs
  • scripts/summarize-sarif.mjs

Open the folder on GitHubat commit 0bada1b

Compare with similar skills

Uipath Activity Migrator 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 Activity Migrator compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Uipath Activity Migrator this skillUiPath/skills167—~8.5kAutomated safety check: PassMIT
Detecting Email Account Compromisemukul975/Anthropic-Cybersecurity-Skills34k—~823Automated safety check: PassApache-2.0
Google Workspaceyc-software/qm15k—~1.8kAutomated safety check: PassMIT
Gogtrpc-group/trpc-agent-go1.9k15 repos~1.1kAutomated safety check: PassApache-2.0
Googleletta-ai/lettabot327—~774Automated safety check: NotesApache-2.0
Gws Workflow Email To Taskgoogleworkspace/cli31k—~313Automated safety check: PassApache-2.0

Similar skills

  • Detecting Email Account Compromise

    mukul975/Anthropic-Cybersecurity-Skills

    Detect compromised O365 and Google Workspace email accounts by analyzing Unified Audit Logs and Azure AD sign-in logs for impossible travel, inbox rule creation/deletion (Set-InboxRule…

    34k GitHub stars~823 tokensUpdated 1 mo ago
    Backend & APIsAuto-check passed
  • Google Workspace

    yc-software/qm

    Read and act on the user's Gmail, Google Calendar, and Google Tasks through per-user OAuth.

    15k GitHub stars~1.8k tokensUpdated today
    Productivity & AutomationAuto-check passed
  • Gog

    trpc-group/trpc-agent-go

    Google Workspace CLI for Gmail, Calendar, Drive, Contacts, Sheets, and Docs.

    1.9k GitHub starsUsed in 15 repos~1.1k tokens
    Productivity & AutomationAuto-check passed
  • Google

    letta-ai/lettabot

    Google Workspace CLI (gog) for Gmail, Calendar, Drive, Contacts, Sheets, and Docs.

    327 GitHub stars~774 tokensUpdated 4 mo ago
    Productivity & AutomationAuto-check: notes
  • Gws Workflow Email To Task

    googleworkspace/cli

    Google Workflow: Convert a Gmail message into a Google Tasks entry.

    31k GitHub stars~313 tokensUpdated 4 days ago
    Productivity & AutomationAuto-check passed
  • Implementing Zero Trust For SaaS Applications

    mukul975/Anthropic-Cybersecurity-Skills

    Secures SaaS apps (Microsoft 365, Google Workspace, Salesforce, Slack) via CASB/SSPM deployment, conditional access policies, OAuth app governance, and session-level DLP controls enforcing identity…

    34k GitHub stars~2.9k tokensUpdated 1 mo ago
    Backend & APIsAuto-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

Questions about Uipath Activity Migrator

What does Uipath Activity Migrator do?

UiPath Activity Migrator — migrate Windows-Legacy RPA projects (targetFramework: Legacy, classic ui: activities) to the Windows framework and rewrite UiPath's own classic activities into their…. Uipath Activity Migrator is an agent skill from UiPath/skills.exe.

When should I use Uipath Activity Migrator?

Uipath Activity Migrator fits situations like: tasks that involve Workflow automation; tasks that involve Mobile testing and debugging; tasks that involve Cloud office suites.

How do I install Uipath Activity Migrator in Claude Code?

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

How do I install Uipath Activity Migrator in Codex?

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

Can I use Uipath Activity Migrator 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-activity-migrator -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-activity-migrator, .gemini/skills/uipath-activity-migrator, .github/skills/uipath-activity-migrator and .opencode/skills/uipath-activity-migrator in your project.

What does Uipath Activity Migrator need to run?

Going by SKILL.md and its folder, Uipath Activity Migrator needs JavaScript for the scripts in its folder and the command-line tools its instructions call (node and git). Our summary lists: Node.js.

Does Uipath Activity Migrator access the network?

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

Is Uipath Activity Migrator safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Uipath Activity Migrator use?

Uipath Activity Migrator 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 Activity Migrator use?

About 8.5k tokens (SKILL.md is roughly 34k 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 24k tokens, read only when the agent opens those files.

What are the alternatives to Uipath Activity Migrator?

Skills that share tags, products or a category with Uipath Activity Migrator: Detecting Email Account Compromise (mukul975/Anthropic-Cybersecurity-Skills, 34k stars), Google Workspace (yc-software/qm, 15k stars), Gog (trpc-group/trpc-agent-go, 1.9k stars) and Google (letta-ai/lettabot, 327 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Uipath Activity Migrator?

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.