name: uipath-solution
description: "Always invoke for .uipx files. UiPath Solution lifecycle via the uip solution CLI: init/pack/publish/deploy/activate/upload, project add|import|remove, resource refresh|add|remove|edit. Bundles multiple automation projects (RPA/Flow/Case/Agents/API Workflows) into one deployable .uipx. For PDD→SDD design (sdd.md/pdd.md) & multi-skill task derivation→uipath-planner. For non-solution Orchestrator/IS/resources/auth/traces→uipath-platform. For .xaml/.cs→uipath-rpa. For .flow→uipath-maestro-flow. For .bpmn→uipath-maestro-bpmn. For agent.json and .py agents→uipath-agents. For coded-app deploy→uipath-coded-apps."
when_to_use: "User mentions .uipx / 'uip solution' / 'pack the solution' / 'publish the solution' / 'deploy the solution' / 'activate' / multi-project / Solution scope / Solution Folder. Fires for 'create a new solution', 'add project/resource to solution', 'add a queue/asset/bucket/connection to the solution', 'import a cloud queue/asset', 'edit/remove a resource', 'change a queue/asset field', 'set an asset value in the solution'. Load BEFORE editing .uipx or running uip solution commands. For PDD→SDD design→uipath-planner; for an 'architect then deploy' two-phase request, run uipath-planner first, then return here to pack/deploy."
UiPath Solution — uip solution lifecycle
Create, pack, publish, deploy, and manage UiPath Solution packages (.uipx) via the uip solution CLI surface. A Solution bundles multiple automation projects (processes, libraries, tests, agent projects, API workflows) into a single deployable unit.
Use the CLI. Don't roll your own REST for solution ops. Hand-rolling HTTP calls misses the
X-UIPATH-OrganizationUnitIdfolder header, OData filter shape, pagination envelope,pipelinesInstalldeploy semantics, retry behavior, and theResult/Code/Dataoutput contract. The CLI is the source of truth.
When to Use This Skill
- User has a
.uipxsolution and wants to pack / publish / deploy / activate / upload - User wants to create a new solution (
uip solution init), add or remove projects, or refresh solution resources - User asks to set up a CI/CD pipeline that builds, publishes, and deploys a UiPath solution
- User mentions deploy configs, environment promotion, or activating a deployed solution
- A skill or main agent detected a
.uipxfile and redirected the user here
Skip this skill when:
- The task is PDD → SDD architecture/design (sdd.md / pdd.md) — load
uipath-planner. - The deployable is a single non-solution package (e.g., a one-off RPA library or coded app) — those use
uip rpa publish/uip codedapp publishand route throughuipath-platformor the relevant specialist. - The task is non-solution Orchestrator work (folders, jobs, assets, queues, IS connections) — load
uipath-platform.
CLI Surface Probe
Before the first uip solution … command in a session, probe the solution surface to detect pre- vs post-rename CLI:
uip solution init --help --output json
- Result
Success→ post-rename CLI (default). Use the commands and flags as documented in the references. unknown command/ non-zero exit → pre-rename CLI. Translate via the table below before each call. Re-probe on any laterunknown commanderror.command not found/uip: not found/'uip' is not recognized→ CLI not installed. Tell the user to runnpm install -g @uipath/cli, thenuip login, and abort the work until those succeed.
| Post-rename (default) | Pre-rename equivalent |
|---|---|
uip solution init <NAME> |
uip solution new <NAME> |
uip solution deploy run --parent-folder-path <PATH> |
uip solution deploy run --folder-path <PATH> |
uip solution deploy run --parent-folder-key <KEY> |
uip solution deploy run --folder-key <KEY> |
All other solution subcommands (pack, publish, deploy activate/status/uninstall, upload, resource …, project add/import) are unchanged on both surfaces.
Critical Rules
- Probe the CLI surface before the first
uip solutioncommand in a session. Runuip solution init --help --output json.Success= post-rename CLI (default);unknown command= pre-rename CLI — translate via the fallback table above. Re-probe on any laterunknown commanderror. - Always use
--output jsonforuip solutioncommands whose output you parse. JSON is compact and stable; the default for non-interactive runs. - Use the CLI, never roll your own REST for solution operations. Hand-rolled HTTP calls miss the
X-UIPATH-OrganizationUnitIdheader, OData filter shape, pagination envelope, andpipelinesInstalldeploy semantics. Only fall through to REST after confirming nouip solutioncommand covers the task. - Never hand-edit
resources/solution_folder/. It's auto-generated byuip solution project add/importand auto-cleaned byproject remove. Manual edits desync from.uipxand produce silent failure modes. See scenarios/manual-edits.md. .uipxandresources/solution_folder/must always agree on the project set. Diffing them is the fastest way to detect corrupted state. If they disagree, fix viauip solution project add/remove— never by editing either side directly.- Run
uip solution resources refreshbeforepackorupload. Bundled artefact files anduserProfile/<userId>/debug_overwrites.jsonmust reflect current cloud state. Skipping refresh ships stale bindings. - Coded apps are NOT registered in
.uipx.uip solution project adddoes not apply to coded-app directories; they deploy independently viauip codedapp publish / deploy. A coded app folder can sit alongside a solution but is not part of its manifest. - Verify the artifact after every CLI mutation. Read
project.json,.uipx, oruip solution deploy statusoutput — exit codes lie. Verification is additional; it does not replace requested read-only list commands. If the user asks to show or list registered projects, solution resources, packages, deployments, or statuses, run the matchinguip solution ... list/status --output jsoncommand and then inspect files only as a secondary sanity check. - For multi-environment promotion, the deploy config (
-c <CONFIG_KEY>) is the environment selector. Same.uipxdeploys to dev/staging/prod via different config keys, not different packages.
Workflow
The typical lifecycle for a UiPath Solution:
1. init / project add → Create solution, register projects (.uipx + resources/solution_folder/)
2. resource refresh → Sync bundled artefacts and debug overwrites with cloud state
3. pack → Produce deployable .zip package
4. login → uip login (if not already authenticated)
5. publish → Upload packed solution to UiPath
6. deploy run → Promote to Orchestrator (auto-activates by default)
7. (optional) activate → Use --skip-activate on deploy, then activate explicitly
Coded apps in the project list deploy in parallel, not through
uip solution. Coded-app projects (Coded Web Apps and Coded Action Apps) have noproject.uiproj/project.jsonand are NOT registered viauip solution project add. For each coded-app project in the unified list, runuip codedapp publish/uip codedapp deployindependently — the rest of the solution still goes through steps 1-7 above. Seeuipath-coded-appsfor the coded-app lifecycle.
Two distinct distribution paths from the same source:
pack→publish→deploy run— promotes a versioned package to Orchestrator.upload— pushes the solution to Studio Web for browser-based debugging only. Does not produce a published package and cannot be deployed viadeploy run.
Authentication is a prerequisite. Check uip login status --output json before any work; if not logged in, ask the user to run uip login (interactive browser flow). See uipath-platform for full auth options (interactive OAuth, client credentials, tenant switching).
This skill is the terminal step of an SDD-driven build: after uipath-planner produces the SDD and derives the task list, and implementation specialists build the projects, the .uipx is packed and shipped here.
Reference Navigation
| File | Purpose |
|---|---|
| Solution Overview | What a Solution is, .uipx manifest, file structure, lifecycle diagram, command tree |
| Develop a Solution | uip solution init / project add / import / remove / resource refresh / resource add / resource remove / resource edit; field-tested gotchas |
| Pack and Deploy | pack / publish / deploy run, deploy configs, CI/CD pipeline patterns |
| Activate and Manage | deploy activate / status / uninstall, environment management |
| Scenarios Index | Failure modes and edge cases — manual edits, shared resources, virtual resources, name collisions |
Anti-patterns
- Hand-rolling REST calls for
pack,publish,deploy run, oractivate. Theuip solutionCLI handles auth, folder headers, pipeline semantics, and pagination correctly. Reach for REST only after confirming no command covers the task. - Editing
resources/solution_folder/directly. It is auto-generated and auto-cleaned. Manual edits desync from.uipx. Useuip solution project add/removeinstead. - Skipping
uip solution resources refreshbeforepackorupload. Ships stale bindings and debug-overwrite state. - Adding a coded-app directory via
uip solution project add. Coded apps have noproject.uiproj/project.jsonand are not packed byuip solution pack. Deploy them independently viauip codedapp publish / deploy. - Creating a new
.uipxper environment instead of using deploy configs. One solution package promotes to dev/staging/prod via different-c <CONFIG_KEY>values. Different.uipxfiles per environment defeats version tracking. - Using
uip solution upload(Studio Web) as a deployment path. Upload is for browser-based debugging only — it does not produce a published package and cannot be promoted viadeploy run. Usepack→publish→deploy runfor real deploys.uploadalso lands the solution in Studio Web's Cloud workspace tab — not the Local tab; SW's Local tab is a separate registration not addressable byuip solution. - Trusting exit codes alone after a mutation. Always read the artefact (
project.json,.uipx, deploy status) — a non-zero exit may indicate partial state and a zero exit can mask warnings.