agentsclimarketplace

Uips localcli

Skill cprima-agents/cpm-agent-skills/skills/uips-localcli

Install
npx -y skills add cprima-agents/cpm-agent-skills --skill uips-localcli

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Locate, install, and invoke uipcli.exe and UiRobot.exe for UiPath package operations. Use when running package pack, package analyze (Workflow Analyzer), or local process execution against a UiPath project. Triggers on: uipcli, package analyze, workflow analyzer, pack nupkg, uipath cli, run process, execute nupkg, UiRobot.

The file declares its own license as Apache-2.0. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

10.5 KB, ~2.9k tokens by cl100k_base, as published. Nobody here has run it

UiPath Local CLI — uipcli and UiRobot

Two executables cover local UiPath operations:

ToolPurpose
uipcli.exePackage pack and Workflow Analyzer (package analyze)
UiRobot.exeLocal process execution (no Orchestrator required)

Two builds of uipcli exist — net6 (23.x) and net8 (25.x) — with meaningfully different package analyze syntax. Always confirm the .NET target with the user before proceeding.


WSL note (applies to Phase 1 and Phase 2)

When running from within WSL:

CommandWhat it isUse for
pwshLinux PowerShell — no Windows modules, $env:LOCALAPPDATA is nullNever for CpmfUipsCLI work
pwsh.exeWindows PowerShell 7 hostAll PS commands targeting Windows tools
  • Always use pwsh.exe, never pwsh, when invoking Invoke-CpmfUipsCLI or locating uipcli.
  • Do not use bash redirection syntax (2>/dev/null) inside pwsh.exe -Command "..." — use -ErrorAction SilentlyContinue instead.
  • Windows paths returned by pwsh.exe (C:\Users\...) must be translated to WSL paths (/mnt/c/Users/...) before use in bash commands.

Phase 1 — Locate uipcli

The two builds are installed to different sub-paths:

BuildPath pattern
net6 (23.x)~/.cpmf/tools/uipcli-23.*/extracted/tools/uipcli.exe
net8 (25.x)~/.cpmf/tools/uipcli-25.*/uipcli.exe

Native Windows / Git Bash:

ls ~/.cpmf/tools/uipcli-23.*/extracted/tools/uipcli.exe 2>/dev/null | sort -V | tail -1
ls ~/.cpmf/tools/uipcli-25.*/uipcli.exe 2>/dev/null | sort -V | tail -1

From WSL — use pwsh.exe with Windows env vars, then translate the result:

pwsh.exe -Command "Get-ChildItem (Join-Path \$env:LOCALAPPDATA 'cpmf/tools') -Recurse -Filter 'uipcli.exe' -ErrorAction SilentlyContinue | Select-Object -ExpandProperty FullName"

Translate each result for use in bash: C:\Users\cpm\.../mnt/c/Users/cpm/...

If nothing is returned → proceed to Phase 2. If found → skip to Phase 3.


Phase 2 — Install via CpmfUipsCLI dispatcher (only if absent)

CpmfUipsCLI is the stable entry point. It pulls in CpmfUipsPack as a dependency. PowerShell 7+ required. Install is idempotent.

Native Windows / Git Bash (pwsh.exe or PowerShell session):

Install-PSResource -Name CpmfUipsCLI -TrustRepository
Invoke-CpmfUipsCLI install-tool -CliVersionNet6 '23.10.2.6'
Invoke-CpmfUipsCLI install-tool -CliVersionNet8 '25.10.11'

From WSL — prefix every PS command with pwsh.exe -Command:

pwsh.exe -Command "Install-PSResource -Name CpmfUipsCLI -TrustRepository"
pwsh.exe -Command "Invoke-CpmfUipsCLI install-tool -CliVersionNet6 '23.10.2.6'"
pwsh.exe -Command "Invoke-CpmfUipsCLI install-tool -CliVersionNet8 '25.10.11'"

Never install uipcli directly as a Windows dotnet tool (e.g. dotnet tool install UiPath.CLI.Windows --global or dotnet tool install UiPath.CLI.Windows --tool-path ... called manually). The dispatcher manages its own isolated tool directories under %LOCALAPPDATA%\cpmf\tools\ with pinned versions and a bundled .NET runtime. Installing outside this path breaks version isolation and the runtime bootstrap that CpmfUipsCLI relies on.

Fallback — corporate / restricted environment

If Install-PSResource fails (network blocked, PowerShell Gallery unreachable, corporate proxy), do not retry automatically. Instead, ask the user:

The automatic install via PowerShell Gallery failed. Please provide one of:

  1. The path to an already-extracted uipcli.exe on this machine, or
  2. A .nupkg or .zip file containing uipcli that you have downloaded manually (e.g. from https://www.powershellgallery.com/packages/CpmfUipsCLI or a corporate artifact repository).

If the user provides a .nupkg or .zip, extract it and locate uipcli.exe inside (look under tools/ or lib/net*/). Set $UIPCLI to that path and skip Phase 3's glob discovery.


Phase 2b — Discover local NuGet feed

Run this before building a NuGet.config for package analyze:

dotnet nuget list source

Filter the output for local (filesystem) sources — lines whose value is a drive-letter path or UNC path, not http. Example match: C:\Users\Public\Documents\myNugetPackages.

dotnet nuget list source | grep -E '^\s+[A-Za-z]:\\|^\s+\\\\' 
  • One local source found → propose it to the user; confirm before using.
  • Multiple local sources → list them and ask the user to pick.
  • None found → ask the user to provide the folder path.

Once the local feed folder is confirmed, generate a minimal NuGet.config (e.g. in a temp directory) to pass to --nugetConfigFilePath:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="local-feed" value="<confirmed-local-folder>" />
    <add key="UiPath-Official" value="https://uipath.pkgs.visualstudio.com/Public.Feeds/_packaging/UiPath-Official/nuget/v3/index.json" />
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
  </packageSources>
</configuration>

Store the path to this file as $NUGET_CONFIG for use in Phase 4.


Phase 3 — Select binary (.NET version required from user)

Ask the user explicitly — do not infer silently:

Which .NET target does this UiPath project use — net6 or net8? Check project.json"targetFramework" field. Studio 23.x and earlier → net6; Studio 24.x and later → net8.

Once confirmed:

# net8
UIPCLI=$(ls ~/.cpmf/tools/uipcli-25.*/uipcli.exe 2>/dev/null | sort -V | tail -1)

# net6
UIPCLI=$(ls ~/.cpmf/tools/uipcli-23.*/extracted/tools/uipcli.exe 2>/dev/null | sort -V | tail -1)

echo "Using: $UIPCLI"

Phase 4 — Usage patterns

Getting help from uipcli: uipcli does not support a --help flag at the top level. To see available commands and subcommand syntax, run it with no arguments:

"$UIPCLI"
"$UIPCLI" package
"$UIPCLI" package analyze

Each level prints its own usage without requiring --help.

package pack (net6 and net8 — syntax identical)

"$UIPCLI" package pack "<project.json or project-folder>" \
  --output "<output-folder>" \
  --disableTelemetry

Produces a .nupkg in <output-folder>.


package analyze — net6 (uipcli 23.x)

"$UIPCLI" package analyze "<path/to/project.json>" \
  --analyzerTraceLevel Warning \
  --resultPath "<output.json>" \
  --traceLevel Off \
  --disableTelemetry
FlagNotes
Positional argPath to project.json file (or folder containing one)
--analyzerTraceLevelOff|Error|Warning|Info|Verbose
--traceLevelOff|Error|Warning|Info|Verbose
--disableTelemetryAlways include — suppresses UiPath telemetry calls
--nugetConfigFilePathNot available in net6
--governanceFilePathNot available in net6

package analyze — net8 (uipcli 25.x)

"$UIPCLI" package analyze "<workspace-folder>" \
  --analyzerTraceLevel Warning \
  --resultPath "<output.json>" \
  --traceLevel None \
  --nugetConfigFilePath "<NuGet.config>" \
  --disableTelemetry

Add --governanceFilePath when using a governance policy from Automation Ops:

"$UIPCLI" package analyze "<workspace-folder>" \
  --analyzerTraceLevel Warning \
  --resultPath "<output.json>" \
  --traceLevel None \
  --nugetConfigFilePath "<NuGet.config>" \
  --governanceFilePath "<governance.json>" \
  --disableTelemetry
FlagNotes
Positional argWorkspace folder path (not project.json)
--analyzerTraceLevelDefault is Error; use Warning for non-default rules
--traceLevelNone|Critical|Error|Warning|Information|Verbose
--nugetConfigFilePathRequired for custom/local rule pack feeds
--governanceFilePathOptional; governance policy file
--disableTelemetryAlways include — suppresses UiPath telemetry calls

Result JSON format (array of violation objects):

[
  {
    "ErrorCode": "CPMF-FC002",
    "FilePath": "C:\\workspace\\project",
    "ErrorSeverity": "Warning",
    "Description": "..."
  }
]

Project-level violations have FilePath set to the workspace directory (no .xaml extension), not a specific workflow file.


execute (local, no Orchestrator) — UiRobot.exe

Locate the newest installed version:

UIROBOT=$(ls "C:/Program Files/UiPathPlatform/Studio/"*/UiRobot.exe 2>/dev/null | sort -V | tail -1)
echo "Using: $UIROBOT"

Run a packed .nupkg:

"$UIROBOT" execute --file "<path-to.nupkg>"

Run with input arguments (JSON):

"$UIROBOT" execute --file "<path-to.nupkg>" \
  --input '{"argName": "value"}'

Run a specific entry point:

"$UIROBOT" execute --file "<path-to.nupkg>" --entry "OtherEntryPoint.xaml"

Gotchas

IssueDetail
Wrong path depthnet6 binary is under extracted/tools/; net8 is directly in the version folder — glob patterns differ
No --nugetConfigFilePath on net6Custom rule packs (e.g. CPMF) cannot be loaded via NuGet config in net6 analyze — Phase 2b and $NUGET_CONFIG only apply to net8
--traceLevel values differnet6: Off · net8: None — using the wrong value may produce an error
--analyzerTraceLevel Warning requiredRules with IsEnabledByDefault = false are silently skipped without this flag
Project-level violationsFilePath is the workspace directory, not a .xaml file — do not expect a filename
UiRobot ≠ uipcliuipcli has no local execute command; use UiRobot.exe execute for running processes locally
Never install uipcli directlyDo not call dotnet tool install UiPath.CLI.Windows manually — always go through Invoke-CpmfUipsCLI install-tool
Always pass --disableTelemetryInclude on every uipcli invocation (pack, analyze, and any other subcommand) — omitting it causes uipcli to phone home

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.