@uipath/skills 1.197.2 → 1.198.0-preview.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/CODEOWNERS +18 -11
  4. package/README.md +1 -0
  5. package/assets/skill-status.json +8 -0
  6. package/hooks/hooks.json +44 -8
  7. package/hooks/send-telemetry.ps1 +392 -0
  8. package/hooks/send-telemetry.sh +118 -86
  9. package/hooks/set-session-env.ps1 +72 -0
  10. package/hooks/set-session-env.sh +64 -0
  11. package/hooks/suggest-permissions.ps1 +45 -0
  12. package/hooks/suggest-permissions.sh +4 -0
  13. package/package.json +1 -1
  14. package/skills/uipath-admin/references/audit-commands.md +2 -2
  15. package/skills/uipath-admin/references/audit-workflow-guide.md +4 -4
  16. package/skills/uipath-agents/references/coded/capabilities/batch-transform/planning.md +1 -1
  17. package/skills/uipath-agents/references/coded/capabilities/deeprag/planning.md +1 -1
  18. package/skills/uipath-agents/references/coded/capabilities/guardrails/guardrails-recommend.md +5 -2
  19. package/skills/uipath-agents/references/coded/capabilities/guardrails/guardrails.md +8 -4
  20. package/skills/uipath-agents/references/coded/embedding-in-flows.md +1 -1
  21. package/skills/uipath-agents/references/coded/flow-integration.md +2 -2
  22. package/skills/uipath-agents/references/coded/lifecycle/build.md +0 -1
  23. package/skills/uipath-agents/references/coded/lifecycle/setup.md +0 -1
  24. package/skills/uipath-agents/references/coded/quickstart.md +1 -1
  25. package/skills/uipath-agents/references/lowcode/agent-definition.md +24 -5
  26. package/skills/uipath-agents/references/lowcode/capabilities/built-in-tools/batch-transform/planning.md +1 -1
  27. package/skills/uipath-agents/references/lowcode/capabilities/built-in-tools/deeprag/planning.md +1 -1
  28. package/skills/uipath-agents/references/lowcode/capabilities/context/attachments.md +1 -0
  29. package/skills/uipath-agents/references/lowcode/capabilities/guardrails/guardrails-recommend.md +1 -0
  30. package/skills/uipath-api-workflow/references/cli-reference.md +1 -1
  31. package/skills/uipath-api-workflow/references/connector-activity-discovery.md +1 -1
  32. package/skills/uipath-api-workflow/references/troubleshooting.md +1 -1
  33. package/skills/uipath-automation-discovery/SKILL.md +26 -1
  34. package/skills/uipath-automation-discovery/assets/templates/estimation-worksheet-template.md +80 -0
  35. package/skills/uipath-automation-discovery/references/estimation-guide.md +104 -0
  36. package/skills/uipath-connector-builder/SKILL.md +6 -4
  37. package/skills/uipath-connector-builder/references/auth.md +137 -13
  38. package/skills/uipath-connector-builder/references/configuration.md +29 -7
  39. package/skills/uipath-connector-builder/references/debugging.md +1 -1
  40. package/skills/uipath-connector-builder/references/standard-resources.md +162 -13
  41. package/skills/uipath-governance/references/cli-cheatsheet.md +3 -3
  42. package/skills/uipath-governance/references/diagnose/references/failure-modes.md +5 -5
  43. package/skills/uipath-insights/SKILL.md +277 -0
  44. package/skills/uipath-insights/references/investigation-playbook-guide.md +145 -0
  45. package/skills/uipath-insights/references/jobs-commands-guide.md +144 -0
  46. package/skills/uipath-ixp/SKILL.md +4 -1
  47. package/skills/uipath-ixp/references/cli-reference.md +18 -3
  48. package/skills/uipath-maestro-bpmn/references/cli-conventions.md +2 -0
  49. package/skills/uipath-maestro-bpmn/validator/README.md +12 -2
  50. package/skills/uipath-maestro-case/SKILL.md +27 -13
  51. package/skills/uipath-maestro-case/assets/templates/sdd-template-examples.md +37 -4
  52. package/skills/uipath-maestro-case/assets/templates/sdd-template.md +20 -9
  53. package/skills/uipath-maestro-case/assets/templates/sdd-viewer.html +8 -7
  54. package/skills/uipath-maestro-case/references/bindings-v2-sync.md +5 -1
  55. package/skills/uipath-maestro-case/references/brownfield.md +86 -0
  56. package/skills/uipath-maestro-case/references/case-commands.md +8 -0
  57. package/skills/uipath-maestro-case/references/case-editing-operations.md +230 -21
  58. package/skills/uipath-maestro-case/references/case-schema.md +29 -11
  59. package/skills/uipath-maestro-case/references/connector-integration.md +1 -1
  60. package/skills/uipath-maestro-case/references/connector-trigger-common.md +1 -1
  61. package/skills/uipath-maestro-case/references/entry-points-sync.md +204 -0
  62. package/skills/uipath-maestro-case/references/implementation.md +19 -9
  63. package/skills/uipath-maestro-case/references/phase-0-interview.md +10 -8
  64. package/skills/uipath-maestro-case/references/phased-execution.md +11 -4
  65. package/skills/uipath-maestro-case/references/placeholder-tasks.md +24 -2
  66. package/skills/uipath-maestro-case/references/planning.md +9 -3
  67. package/skills/uipath-maestro-case/references/plugins/case/planning.md +2 -0
  68. package/skills/uipath-maestro-case/references/plugins/sla/impl-json.md +1 -1
  69. package/skills/uipath-maestro-case/references/plugins/sla/planning.md +1 -1
  70. package/skills/uipath-maestro-case/references/plugins/stages/impl-json.md +11 -10
  71. package/skills/uipath-maestro-case/references/plugins/stages/planning.md +13 -14
  72. package/skills/uipath-maestro-case/references/plugins/tasks/agent/impl-json.md +3 -1
  73. package/skills/uipath-maestro-case/references/plugins/tasks/agent/planning.md +91 -2
  74. package/skills/uipath-maestro-case/references/plugins/tasks/api-workflow/impl-json.md +3 -1
  75. package/skills/uipath-maestro-case/references/plugins/tasks/api-workflow/planning.md +87 -2
  76. package/skills/uipath-maestro-case/references/plugins/tasks/connector-activity/planning.md +1 -1
  77. package/skills/uipath-maestro-case/references/plugins/triggers/event/impl-json.md +1 -1
  78. package/skills/uipath-maestro-case/references/plugins/triggers/manual/impl-json.md +3 -1
  79. package/skills/uipath-maestro-case/references/plugins/triggers/timer/impl-json.md +2 -1
  80. package/skills/uipath-maestro-case/references/plugins/variables/bindings/impl-json.md +2 -0
  81. package/skills/uipath-maestro-case/references/plugins/variables/global-vars/impl-json.md +20 -10
  82. package/skills/uipath-maestro-case/references/plugins/variables/global-vars/planning.md +9 -8
  83. package/skills/uipath-maestro-case/references/plugins/variables/io-binding/impl-json.md +1 -1
  84. package/skills/uipath-maestro-case/references/plugins/variables/io-binding/planning.md +1 -1
  85. package/skills/uipath-maestro-case/references/registry-discovery.md +87 -10
  86. package/skills/uipath-maestro-case/references/sdd-generation-rules.md +34 -26
  87. package/skills/uipath-maestro-flow/SKILL.md +4 -1
  88. package/skills/uipath-maestro-flow/references/author/CAPABILITY.md +1 -2
  89. package/skills/uipath-maestro-flow/references/author/references/editing-operations-json.md +3 -3
  90. package/skills/uipath-maestro-flow/references/author/references/greenfield.md +4 -2
  91. package/skills/uipath-maestro-flow/references/author/references/planning-arch.md +0 -1
  92. package/skills/uipath-maestro-flow/references/author/references/planning-impl.md +0 -1
  93. package/skills/uipath-maestro-flow/references/author/references/plugins/connector/impl.md +1 -0
  94. package/skills/uipath-maestro-flow/references/author/references/plugins/connector-trigger/impl.md +7 -7
  95. package/skills/uipath-maestro-flow/references/author/references/plugins/ixp/impl.md +14 -14
  96. package/skills/uipath-maestro-flow/references/author/references/plugins/script/impl.md +10 -6
  97. package/skills/uipath-maestro-flow/references/shared/cli-conventions.md +7 -0
  98. package/skills/uipath-maestro-flow/references/shared/file-format.md +1 -1
  99. package/skills/uipath-mcp-servers/references/is-activity-workflow.md +3 -3
  100. package/skills/uipath-planner/SKILL.md +1 -1
  101. package/skills/uipath-platform/SKILL.md +4 -14
  102. package/skills/uipath-platform/references/data-fabric/data-fabric.md +1 -1
  103. package/skills/uipath-platform/references/integration-service/agent-workflow.md +4 -4
  104. package/skills/uipath-platform/references/integration-service/reference-resolution.md +1 -1
  105. package/skills/uipath-platform/references/integration-service/resources.md +5 -5
  106. package/skills/uipath-platform/references/integration-service/triggers.md +10 -9
  107. package/skills/uipath-platform/references/orchestrator/setup-environment.md +2 -0
  108. package/skills/uipath-review/SKILL.md +8 -4
  109. package/skills/uipath-review/references/agents/agent-review-checklist.md +1 -22
  110. package/skills/uipath-review/references/agents/agents-coded-rules.md +24 -7
  111. package/skills/uipath-review/references/agents/agents-lowcode-rules.md +0 -1
  112. package/skills/uipath-review/references/agents/guardrails/coded-guardrails-review.md +231 -0
  113. package/skills/uipath-review/references/rule-catalog-workflow.md +4 -2
  114. package/skills/uipath-rpa/SKILL.md +2 -2
  115. package/skills/uipath-rpa/references/activity-docs/UiPath.DataService.Activities/guides/data-service-filter-builder-guide.md +1 -1
  116. package/skills/uipath-rpa/references/activity-docs/UiPath.Web.Activities/2.5/coded/coded-api.md +1 -1
  117. package/skills/uipath-rpa/references/activity-docs/UiPath.Web.Activities/2.5/coded/curl-import.md +3 -3
  118. package/skills/uipath-rpa/references/activity-docs/UiPath.Web.Activities/2.5/coded/http-request-upgrade.md +3 -3
  119. package/skills/uipath-rpa/references/activity-docs/UiPath.Web.Activities/2.5/coded/service-discovery.md +2 -2
  120. package/skills/uipath-rpa/references/coded/coding-guidelines.md +1 -1
  121. package/skills/uipath-rpa/references/ui-automation-guide.md +7 -7
  122. package/skills/uipath-rpa/references/uia-configure-target-workflows.md +5 -5
  123. package/skills/uipath-rpa/references/uia-elements-interaction-guide.md +19 -10
  124. package/skills/uipath-rpa/references/uia-prerequisites.md +7 -7
  125. package/skills/uipath-rpa/references/validation-guide.md +2 -2
  126. package/skills/uipath-rpa/references/xaml/common-pitfalls.md +4 -0
  127. package/skills/uipath-rpa/references/xaml/csharp-activity-binding-guide.md +3 -1
  128. package/skills/uipath-rpa/references/xaml/csharp-expression-pitfalls.md +9 -4
  129. package/skills/uipath-rpa/references/xaml/workflow-guide.md +2 -2
  130. package/skills/uipath-rpa/references/xaml/xaml-basics-and-rules.md +1 -1
  131. package/skills/uipath-solution/SKILL.md +4 -4
  132. package/skills/uipath-solution/references/activate-and-manage.md +6 -1
  133. package/skills/uipath-solution/references/develop-solution.md +24 -5
  134. package/skills/uipath-solution/references/pack-and-deploy.md +5 -2
  135. package/skills/uipath-solution/references/scenarios/manual-edits.md +2 -2
  136. package/skills/uipath-solution/references/solution-overview.md +2 -2
  137. package/skills/uipath-troubleshoot/SKILL.md +3 -3
  138. package/skills/uipath-troubleshoot/references/products/agents/playbooks/context-grounding-index-not-found.md +0 -2
  139. package/skills/uipath-troubleshoot/references/products/maestro/playbooks/personal-automation-quota.md +1 -1
  140. package/version-manifest.json +3 -3
  141. package/hooks/ensure-uip.sh +0 -220
  142. package/skills/uipath-maestro-flow/references/author/references/plugins/connector/data-fabric/impl.md +0 -683
  143. package/skills/uipath-maestro-flow/references/author/references/plugins/connector/data-fabric/planning.md +0 -45
@@ -235,6 +235,6 @@ C) <user-driven approach>
235
235
  | **Service property not available** | Missing package dependency | Install the required package via `uip rpa packages install --project-dir "<PROJECT_DIR>" --packages id=<PACKAGE_ID> --output json` (no `add-dependency` command exists; do not hand-edit `project.json`) |
236
236
  | **Timeout** | Studio took too long to start. First headless call on a cold NuGet cache can take 30–90 s. | Increase timeout: `--timeout 600` |
237
237
  | **"Target name 'X' is not part of the current screen"** | Element descriptor used on wrong screen handle | Use the `UiTargetApp` handle from `Open`/`Attach` for the screen that owns the element |
238
- | **"Cannot select item. It was not found among existing items"** | `SelectItem` fails on web dropdowns | Use `TypeInto` instead of `SelectItem` for web `<select>` elements |
238
+ | **"Cannot select item. It was not found among existing items"** | The `Item` value doesn't match any option (wrong text/casing) — not a control-type limitation | Read the control's `items` attribute (via the interact CLI, see the UIA cli-reference) and pass one of those values verbatim. `SelectItem` drives any control whose `items` lists options (any UI stack); use `TypeInto` only for type-ahead combos or controls with no `items`. |
239
239
  | **`packages inspect` cannot find UILibrary package** | Package is on a private/local NuGet feed | Use `--nupkg-path` to inspect the local `.nupkg` directly, or read `.metadata` files manually from `~/.nuget/packages/<name>/<version>/contentFiles/any/any/.objects/` |
240
240
  | **Studio rejects manually created project** | Missing metadata dirs, wrong schema/version | Always use `uip rpa init` instead of writing `project.json` manually |
@@ -76,7 +76,7 @@ A `Log("LoginWorkflow: type username")` stub:
76
76
 
77
77
  A real `<uix:NTypeInto>` activity with placeholder selector + `TODO Indicate` marker:
78
78
 
79
- - Build/validate may surface "selector incomplete" warnings — useful, since they tell the developer what is left to do.
79
+ - Build/validate surface the unconfigured targets ("Target or Input UI Element must be set" hard errors in current packages) — useful, since they tell the developer what is left to do. A stub-mode deliverable therefore does NOT reach a clean `build`; its acceptance bar is that the ONLY remaining validate/build errors are the expected unconfigured-target ones.
80
80
  - The activity is wired into the workflow's control flow, package dependencies, scope, and Object Repository registration plumbing. The developer's only remaining work is **Indicate**.
81
81
  - The TODO marker is visible in Studio's designer pane and grep-able in the file.
82
82
  - The cost of "what does this stub actually need from the developer?" drops from "read this carefully and infer" to "click Indicate on the marked activities."
@@ -199,13 +199,13 @@ When a procedure exists specifically to check something against ground truth, do
199
199
 
200
200
  ## Common UIA Pitfalls
201
201
 
202
- - **SelectItem on web dropdowns** — use `SelectItem` for native HTML `<select>` elements (deterministic). It fails on custom dropdown widgets (div/`<ul>`/ARIA hierarchies that only *look* like a `<select>`) there, click to open and click the option, or use `TypeInto`. Detail: [uia-elements-interaction-guide.md § Web Controls](uia-elements-interaction-guide.md).
202
+ - **Choosing SelectItem vs click-to-open for dropdowns/lists** — whether `SelectItem` drives a control is independent of its UI stack, tag, or role (native `<select>`, WinForms/WPF combo, Java/SAP list, ARIA combobox — all candidates). Don't guess from the selector query the control's `items` attribute via the interact CLI: if it lists options → `SelectItem` drives it (pass one of them), no option-element capture needed; if empty/absent → fall back to click-to-open + click-option (or `TypeInto`). Procedure and syntax: [uia-elements-interaction-guide.md § Dropdowns, lists, and comboboxes](uia-elements-interaction-guide.md).
203
203
  - **ScreenPlay overuse** — UITask/ScreenPlay is non-deterministic and slow. Always try proper selectors first.
204
204
  - **Wrong Object Repository references** — never copy references from examples or other projects. Always use `uia-configure-target` to generate them for the current application state.
205
205
  - **Using `InjectJsScript` instead of standard activities** — do NOT use `InjectJsScript` when standard UI activities (GetText, Click, TypeInto, ExtractTableData, etc.) with configured targets would work. `InjectJsScript` is a last resort — it's hard to debug, fragile to page changes, and bypasses the Object Repository.
206
206
  - **Hallucinated keyboard shortcuts instead of UIA targets** — do NOT send keyboard shortcuts (`Ctrl+S`, `Alt+F4`, `Tab` navigation, menu mnemonics, etc.) as a substitute for clicking or typing into a real UI element. `Click` and `TypeInto` against configured targets are deterministic, survive layout changes, and are observable in logs; guessed shortcuts depend on focus, locale, and version. Reserve keyboard shortcuts for genuinely hotkey-only operations (commands with no clickable surface) and confirm the shortcut exists in the live app — never infer from OS convention or muscle memory.
207
207
  - **Chaining keystrokes in one `NKeyboardShortcuts` after one navigates away faults on a stale node.** The activity resolves its `Target` **once**; if the first shortcut destroys/replaces that element (a navigation key that changes the view), a second shortcut chained in the same activity (multi-shortcut `Shortcuts` string or `DelayBetweenShortcuts`) hits the stale node and throws `InvalidNodeException: "The UI element is invalid..."`. Example: Explorer `Alt+Up` (go to parent, auto-selecting the current folder) + `Alt+Enter` (open Properties) in one activity targeting "Items View" — `Alt+Up` navigates, then `Alt+Enter` faults on the destroyed node. **Fix:** use **separate** `NKeyboardShortcuts` activities so the follow-up **re-resolves** its target against the new screen, plus a small `DelayBefore` to let it settle.
208
- - **Unnecessary `Delay` activities before UIA actions** — UIA activities (`NClick`, `NTypeInto`, `NSelectItem`, `NGoToUrl`, etc.) have embedded target-finding resilience: they retry the selector lookup for a configurable timeout before failing. A `Delay` placed in front of a UIA activity to "let the UI settle" is almost always redundant and inflates workflow runtime without changing correctness. Include `Delay` only when ALL of: the wait is NOT for a UI element that a following UIA activity will target; a concrete non-retry reason exists (post-action animation with no UIA anchor, fixed-duration business pause, background job the UI doesn't reflect); and the caller can state in one sentence why the next UIA activity's built-in retry is insufficient. A button that is present but **disabled** during async validation/load/refresh is a separate case retry does not cover — use the activity's `DelayBefore`/`DelayAfter` *properties* (not a `Delay` activity): [uia-elements-interaction-guide.md § Web Controls](uia-elements-interaction-guide.md).
208
+ - **Unnecessary `Delay` activities before UIA actions** — UIA activities (`NClick`, `NTypeInto`, `NSelectItem`, `NGoToUrl`, etc.) have embedded target-finding resilience: they retry the selector lookup for a configurable timeout before failing. A `Delay` placed in front of a UIA activity to "let the UI settle" is almost always redundant and inflates workflow runtime without changing correctness. Include `Delay` only when ALL of: the wait is NOT for a UI element that a following UIA activity will target; a concrete non-retry reason exists (post-action animation with no UIA anchor, fixed-duration business pause, background job the UI doesn't reflect); and the caller can state in one sentence why the next UIA activity's built-in retry is insufficient. A button that is present but **disabled** during async validation/load/refresh is a separate case retry does not cover — use the activity's `DelayBefore`/`DelayAfter` *properties* (not a `Delay` activity): [uia-elements-interaction-guide.md § Buttons disabled during async operations](uia-elements-interaction-guide.md).
209
209
  - **`Cannot send input ... outside of screen bounds` on hover-revealed elements** — pop-up menu items, autocomplete entries, and dropdown rows that only appear after a hover/click frequently fail under the default input method. Switch the affected activity (or its UIA interact CLI counterpart) to a simulated input method. Available input-method values: `{PROJECT_DIR}/.local/docs/packages/UiPath.UIAutomation.Activities/references/cli-reference.md`.
210
210
  - **`HealingAgentBehavior` enum split between card and child activities.** `NApplicationCard` (Use Application/Browser) accepts `NHealingAgentBehavior` — values `Job`, `Disabled`, `RecommendationOnly`. Child activities (`NClick`, `NTypeInto`, `NCheckState`, etc.) accept `NChildHealingAgentBehavior`, which adds `SameAsCard`. Putting `SameAsCard` on the card itself fails with `Failed to create a 'HealingAgentBehavior' from the text 'SameAsCard'`. When introducing a new card (e.g., a nested card for a sign-in subprocess), set its `HealingAgentBehavior` to `Job`/`Disabled`/`RecommendationOnly` — never copy the value from a child activity. Confirm via `{PROJECT_DIR}/.local/docs/packages/UiPath.UIAutomation.Activities/activities/common/NHealingAgentBehavior.md` and `NChildHealingAgentBehavior.md`.
211
211
 
@@ -213,15 +213,15 @@ When a procedure exists specifically to check something against ground truth, do
213
213
 
214
214
  ## Control-Specific Interaction Patterns
215
215
 
216
- > **MANDATORY — read and apply before authoring.** Before writing any `TypeInto`, `SelectItem`, or `Click` (XAML `NTypeInto` / `NSelectItem` / `NClick`, or coded `uiAutomation.*`) against a captured target, classify the control. If **any** target is a date / time input, a dropdown, or a button that can be disabled during async work, you MUST read [uia-elements-interaction-guide.md](uia-elements-interaction-guide.md) IN FULL and apply it **before** authoring that activity — the same bar as target capture ([§ Configuring Targets](#configuring-targets-object-repository)). The correct technique is type-specific and documented there: a date field must be typed in its **displayed** format (not ISO) via a key-event method, dropdowns split into native (`SelectItem`) vs. custom (click-to-open), and async-disabled buttons need `DelayBefore`. Apply the documented method up front — do not guess a value (e.g. ISO into a date field) and iterate against the running app.
216
+ > **MANDATORY — read and apply before authoring.** Before writing any `TypeInto`, `SelectItem`, or `Click` (XAML `NTypeInto` / `NSelectItem` / `NClick`, or coded `uiAutomation.*`) against a captured target, classify the control. If **any** target is a date / time input, a dropdown, or a button that can be disabled during async work, you MUST read [uia-elements-interaction-guide.md](uia-elements-interaction-guide.md) IN FULL and apply it **before** authoring that activity — the same bar as target capture ([§ Configuring Targets](#configuring-targets-object-repository)). The correct technique is type-specific and documented there: a date field must be typed in its **displayed** format (not ISO) via a key-event method, for dropdowns/lists you decide by querying the control's `items` attribute (via the interact CLI) rather than by tag/role — items listed → `SelectItem`, none → click-to-open, and async-disabled buttons need `DelayBefore`. Apply the documented method up front — do not guess a value (e.g. ISO into a date field) and iterate against the running app.
217
217
 
218
218
  After a target is captured, these control types need type-specific handling to drive correctly:
219
219
 
220
220
  - **Date / formatted date-time inputs** — type the field's **displayed** format (e.g. en-US `MM/DD/YYYY`), not the ISO `value`.
221
- - **Dropdowns** — native HTML `<select>` → `SelectItem`; custom widgets → click-to-open + click option / `TypeInto`.
221
+ - **Dropdowns / lists / comboboxes** — query the control's `items` attribute (via the interact CLI); items listed → `SelectItem`, none → click-to-open + click option (or `TypeInto`). Independent of tag / role / UI technology.
222
222
  - **Buttons disabled during async ops** — present but `disabled` during validation/load/refresh; use the activity's `DelayBefore`/`DelayAfter` properties (not a `Delay` activity).
223
223
 
224
- Patterns are organized by UI technology (currently web controls, `webctrl`): [uia-elements-interaction-guide.md](uia-elements-interaction-guide.md).
224
+ Patterns there cover web-specific controls (date inputs) plus cross-technology ones (dropdowns/lists, async-disabled buttons): [uia-elements-interaction-guide.md](uia-elements-interaction-guide.md).
225
225
 
226
226
  ---
227
227
 
@@ -507,7 +507,7 @@ Example — copy a value from App A and paste it into App B. Outer card → App
507
507
  <uix:NApplicationCard.Body>
508
508
  <Sequence sap2010:WorkflowViewState.IdRef="Sequence_2">
509
509
  <!-- ScopeIdentifier = App A card's ScopeGuid → reads from App A (outer) -->
510
- <uix:NGetText DisplayName="Get value from App A" Text="[out_Value]"
510
+ <uix:NGetText DisplayName="Get value from App A" TextString="[out_Value]"
511
511
  ScopeIdentifier="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
512
512
  sap2010:WorkflowViewState.IdRef="NGetText_1" Version="V5" />
513
513
  <!-- ScopeIdentifier = App B card's ScopeGuid → pastes into App B (inner) -->
@@ -166,12 +166,12 @@ Workflow steps, response shape, downstream OR regeneration for coded vs XAML, an
166
166
 
167
167
  Once targets are registered in the OR (via `uia-configure-target` or indication fallback), attach them to XAML activities per `{PROJECT_DIR}/.local/docs/packages/UiPath.UIAutomation.Activities/references/uia-target-attachment-guide.md`. That doc owns the concrete subcommands, flags, and response shapes for both attachment paths.
168
168
 
169
- **Path-choice policy (this skill's scope — which path to take, not how to invoke it).** The attachment guide describes two paths; they are not interchangeable for agent-authored XAML:
169
+ **Path-choice policy (this skill's scope — which path to take, not how to invoke it).** The attachment guide describes two paths:
170
170
 
171
- - **Embed path — DEFAULT for agent-authored XAML.** Inline the OR-resolved target XAML as a child of the consuming activity element directly in the file you just wrote. Works on cold files — the project does not need to be loaded in Studio's in-memory designer. This is the only path that reliably works for XAML the agent has just generated or just edited from disk.
172
- - **Link path — only for files already loaded in Studio Desktop's designer.** Resolves an OR entry against an activity reference inside Studio's loaded workflow model. Requires the workflow to be open and parsed by Studio Desktop (not Studio Helm / headless). Use this only when the user has the file open in the designer or an existing Studio session already loaded the project.
171
+ - **Link path — DEFAULT.** Attach OR entries to activities by their `sap2010:WorkflowViewState.IdRef` screen first, then all element targets in one batched call. The file does not need to be open in Studio.
172
+ - **Embed fallbackper-reference, only on a link failure.** If a link call fails for a specific reference, inline that reference's OR-resolved target XAML as a child of the consuming activity element scoped to only the failed reference, not the whole screen.
173
173
 
174
- When generating a new XAML file or editing one that has not been opened in Studio Desktop in this session, take the embed path. Do not attempt the link path on cold XAML it produces resolution failures that look like activity-id / display-name mismatches but are actually "the file isn't in Studio's model yet" (see § CLI Pitfalls).
174
+ Take the link path first. On a link failure for a reference, drop straight to the embed fallback for that one referencedo not iterate through activity-id / display-name variations (see § CLI Pitfalls). The package attachment guide is source-of-truth when it diverges from this skill (per SKILL.md).
175
175
 
176
176
  ### Multi-Screen Workflows
177
177
 
@@ -185,4 +185,4 @@ Runtime symptoms that have wasted entire capture sessions. Canonical flag list,
185
185
  - **Selector resolution rejects bare element refs (`Invalid --refs entry`).** Each ref must be paired with the definition file that owns it.
186
186
  - **OR element-creation rejects inline JSON.** The OR CLI consumes pre-written per-element definition files only. Generate the definition files first, then invoke create-elements with their paths.
187
187
  - **UIA interact actions reject discovery and global flags (`unknown option`).** Interact subcommands accept only interaction-shape flags. Folder, ref, and project-dir style flags belong to other UIA subcommand families.
188
- - **Link path against a cold XAML file fails with `Could not retrieve the activity from the workflow`.** This means the target file is not loaded in Studio Desktop's in-memory designer model — not that the activity-id, display name, or reference ID are wrong. Stop after the **first** failure; do not iterate through activity-id / display-name / property-name variations. Switch to the embed path (see § Attaching Targets to Workflow Activities). The link path is reserved for files that an active Studio Desktop session has already opened and parsed; XAML the agent has just written from disk does not qualify.
188
+ - **A link call fails with `Could not retrieve the activity from the workflow`.** Not an activity-id / display-name / reference-ID problemdo not iterate on those. Stop after the **first** failure for that reference and use the embed fallback (see § Attaching Targets to Workflow Activities).
@@ -50,22 +50,31 @@ Why try without emptying first: native date inputs and framework date-time picke
50
50
  formScreen.TypeInto(Descriptors.MyApp.Form.InvoiceDate, formattedDate);
51
51
  ```
52
52
 
53
- ### Dropdowns — native `<select>` vs custom widgets
53
+ ---
54
54
 
55
- Branch on what the control actually is:
55
+ ## All UI Technologies
56
56
 
57
- | Control | How to drive |
58
- |---------|--------------|
59
- | **Native `<select>`** (real HTML `<select>` / `<option>`) | `SelectItem`, passing the option text. Deterministic. |
60
- | **Custom dropdown** (div/`<ul>`/`<li>`/ARIA hierarchy that only *looks* like a dropdown — no `<select>` tag) | `SelectItem` fails. Click to open, then `Click` the option element (capture both as OR targets). Use `TypeInto` for type-ahead / filter combos. |
57
+ Patterns that apply to any captured control regardless of UI stack (web, desktop, Java, etc.).
61
58
 
62
- Tell them apart from the captured selector: a native control's element carries `tag='SELECT'`; a custom widget resolves to `DIV`/`UL`/`LI`/`SPAN`, typically with `role='combobox'` / `'listbox'` / `'option'`.
59
+ ### Dropdowns, lists, and comboboxes
63
60
 
64
- ---
61
+ Whether `SelectItem` (`NSelectItem`) can drive a control does **not** depend on its UI technology,
62
+ tag, or role — a native HTML `<select>`, a WinForms/WPF combo box, a Java list, a SAP dropdown, and
63
+ a div/ARIA combobox are all candidates. **Don't classify it from the captured selector — query the
64
+ control's `items` attribute for its selectable options** (the read verb is in
65
+ `{PROJECT_DIR}/.local/docs/packages/UiPath.UIAutomation.Activities/references/cli-reference.md`):
65
66
 
66
- ## All UI Technologies
67
+ - **`items` lists options** → the control is selectable; `SelectItem` will drive it — pass one of the
68
+ listed values. No need to capture the individual option elements or open the list first.
69
+ - **`items` empty/absent** → not a real option-list control. Fall back to click-to-open + click the
70
+ option (capture both as OR targets), or `TypeInto` for type-ahead / filter combos.
67
71
 
68
- Patterns that apply to any captured control regardless of UI stack (web, desktop, Java, etc.).
72
+ Read the `items` attribute to learn the valid values, and the `selecteditem` / `selecteditems`
73
+ attribute to confirm the result after selecting (the cli-reference above shows how to read them).
74
+
75
+ The rule is general: verified against a control with no native `<select>` (a Lightning picklist
76
+ rendered as a `role="combobox"` button) and applies identically to desktop, Java, and SAP option
77
+ lists — so an option-list control needs **no option-element capture at all**.
69
78
 
70
79
  ### Buttons disabled during async operations
71
80
 
@@ -1,10 +1,10 @@
1
1
  # UiAutomation Prerequisites
2
2
 
3
3
  **Required package:** `UiPath.UIAutomation.Activities`
4
- **Minimum version (`<MIN_VERSION>`):** `26.10.0`
5
- **Source feed:** the official UiPath NuGet feed — the same feed Studio resolves by default.
4
+ **Minimum version (`<MIN_VERSION>`):** `26.4.1-preview`
5
+ **Source feed:** the official UiPath NuGet feed — the same feed Studio resolves by default. Prerelease / preview builds of `UiPath.UIAutomation.Activities` are published there alongside stable releases. Installing them is a normal supported path, not a third-party workaround.
6
6
 
7
- > **Stable release.** `<MIN_VERSION>` is a stable GA build it ships the `uia-configure-target` skill content and resolves from the official feed without any prerelease flag. Querying with `--include-prerelease` is still fine (it surfaces newer preview builds), but it is not needed to reach `<MIN_VERSION>`.
7
+ > **Prerelease required.** `<MIN_VERSION>` is a preview — stable releases of `UiPath.UIAutomation.Activities` do NOT yet ship the `uia-configure-target` skill content. Install the prerelease build explicitly. `uip rpa packages versions` MUST be invoked with `--include-prerelease` (the flag defaults to `false`), otherwise the required preview is filtered out of the listing and the agent will report "no upgrade available" against a feed that actually has it.
8
8
 
9
9
  The `uip rpa uia` CLI used by `uia-configure-target` requires `UiPath.UIAutomation.Activities` at `<MIN_VERSION>` or newer. Before configuring any target, check the installed version in `project.json` under `dependencies`.
10
10
 
@@ -17,10 +17,10 @@ Never upgrade UIA silently. Every upgrade requires explicit user consent before
17
17
 
18
18
  | Scenario | Behavior |
19
19
  |---|---|
20
- | No UIA installed, request needs UIA | Ask before installing `<MIN_VERSION>` from the official UiPath feed. |
20
+ | No UIA installed, request needs UIA | Ask before installing `<MIN_VERSION>`. Disclose that it is a prerelease build from the official UiPath feed. |
21
21
  | Major-version upgrade (e.g. `25.x` → `26.x`) | Ask. Note that breaking changes are possible across major versions. |
22
- | Minor-version upgrade (e.g. `26.4.x` → `26.10.x`) | Ask before installing the newer build. |
23
- | Patch / build upgrade within the `26.10.x` band | Ask before installing the newer build. |
22
+ | Minor-version upgrade (e.g. `26.3.x` → `26.4.x`) | Ask. Note that the minimum required for `uia-configure-target` is a preview. |
23
+ | Patch / build upgrade within the preview band | Ask before installing the newer preview build. |
24
24
  | Already at or above `<MIN_VERSION>` | Proceed without prompting. |
25
25
 
26
26
  If the user declines, do NOT install. Warn that `uip rpa uia` commands will fail without UIA at `<MIN_VERSION>` and fall back to indication authoring — [uia-configure-target-workflows.md](uia-configure-target-workflows.md) MUST be read IN FULL first (see § Indication Fallback). Record `UI capture: indication-only` in the plan header so downstream tasks do not route to `uia-configure-target`.
@@ -39,4 +39,4 @@ Install / upgrade (mutating — only after consent per the table above; substitu
39
39
  uip rpa packages install --packages 'id=UiPath.UIAutomation.Activities,version=<MIN_VERSION>' --project-dir "$PROJECT_DIR" --output json
40
40
  ```
41
41
 
42
- `packages install` resolves `<MIN_VERSION>` directly via the `version` field — no prerelease flag is needed, since it is a stable release. Omit `,version=<MIN_VERSION>` to resolve the latest compatible build (which will be at or above `<MIN_VERSION>`).
42
+ `packages install` accepts the beta version directly via the `version` field — no separate prerelease flag is needed once the version string is specified explicitly.
@@ -48,7 +48,7 @@ PHASE 2 — build-clean (per-project, once per edit session):
48
48
  3. EXIT to Smoke Test
49
49
  ```
50
50
 
51
- **Why both phases.** `validate` is static analysis: catches structural XAML, missing references, analyzer rules, schema violations. `build` is the compiler: catches **unknown member names** (e.g. `NGetText.Value` when the property is `Text`), **invalid enum values** (e.g. `Operator="StartsWith"` when the enum has no such member), **member resolution / CacheMetadata failures**, and attribute-form C# expression JIT failures. `validate` returns "no diagnostics found" for these; `build` flags them at compile time. Per-file `validate` plus one end-of-session `build` covers both error classes — trusting only `validate` ships broken workflows.
51
+ **Why both phases.** `validate` is static analysis: catches structural XAML, missing references, analyzer rules, schema violations. `build` is the compiler: catches **unknown member names** (e.g. `NGetText.Value` when the output member is `TextString` (or legacy `Text`)), **invalid enum values** (e.g. `Operator="StartsWith"` when the enum has no such member), **member resolution / CacheMetadata failures**, and attribute-form C# expression JIT failures. `validate` returns "no diagnostics found" for these; `build` flags them at compile time. Per-file `validate` plus one end-of-session `build` covers both error classes — trusting only `validate` ships broken workflows.
52
52
 
53
53
  **Target the specific file:** `validate --file-path` validates only the file you changed (faster than whole-project). `build` is project-scoped (no `--file-path`); when it errors, the output names the offending file — re-run `validate --file-path` on it as part of Phase 2's fix loop.
54
54
 
@@ -78,7 +78,7 @@ uip rpa build "<PROJECT_DIR>" --log-level Warn --output json
78
78
 
79
79
  | Error class | Example | Why `validate` misses it |
80
80
  |-------------|---------|----------------------------|
81
- | Unknown member name | `<uix:NGetText Value="[x]" />` (correct: `Text`) | `validate` does not resolve property names against activity assemblies |
81
+ | Unknown member name | `<uix:NGetText Value="[x]" />` (correct: `TextString`) | `validate` does not resolve property names against activity assemblies |
82
82
  | Invalid enum value | `Operator="StartsWith"` on `VerifyExpressionWithOperator` (enum has no such member) | Enum membership is checked at CacheMetadata / compile time, not static parse |
83
83
  | CacheMetadata / member resolution | Required-extension misses, type-mismatch on `InArgument<T>` | Surfaces only when the runtime instantiates the activity |
84
84
  | Attribute-form C# expressions | `Value="x + y"` in `expressionLanguage: CSharp` projects | JIT compiler needs the expression in element form — see [xaml/csharp-expression-pitfalls.md](xaml/csharp-expression-pitfalls.md) |
@@ -610,6 +610,10 @@ Activity properties typed as enums (e.g. `Operator`, `ClickType`, `KeyModifiers`
610
610
 
611
611
  **Prevention:** When using `uip rpa activities get-default-xaml`, the output matches the currently installed package version. Never copy XAML snippets from projects using different package versions.
612
612
 
613
+ ## UIA `N*` Activities Carry a `Version` — Never Strip It
614
+
615
+ Every UIA `N*` activity carries a `Version` attribute in its `uip rpa activities get-default-xaml` starter (e.g. `NGetText Version="V5"`, `NApplicationCard Version="V2"`). Dropping it survives BOTH `validate` and `build` and fails only at runtime with `System.InvalidOperationException ... ThrowIfNotInTree` on the activity's argument bindings. Carry over **every** attribute the starter emits. See [csharp-expression-pitfalls.md § `ThrowIfNotInTree` at runtime](csharp-expression-pitfalls.md).
616
+
613
617
  ## Expression Language Mismatch
614
618
 
615
619
  Every XAML file must use the same expression language as the project (`expressionLanguage` in `project.json`).
@@ -69,7 +69,9 @@ Which properties exist on a given activity, the `<Activity>.md` lookup order, an
69
69
  </uix:NGetText>
70
70
  ```
71
71
 
72
- **Scoping requirement:** when `NGetText` sits inside `<uix:NApplicationCard.Body><ActivityAction><Sequence>`, the `statusText` variable must be declared on that inner `Sequence.Variables`, not on an outer one crossing the `ActivityAction` boundary otherwise runtime throws `ThrowIfNotInTree`. See [csharp-expression-pitfalls.md](csharp-expression-pitfalls.md#throwifnotintree--variable-declared-outside-the-activityaction-scope).
72
+ **Author new Get Text activities with `TextString`** (the typed, current-designer property shown above). **When editing an existing workflow,** note that older ones may bind the output to the legacy non-generic `Text` `OutArgument` (`<uix:NGetText.Text>`) instead both `Text` and `TextString` are real, functional members (the activity writes the scraped text to both at runtime), so a working `Text` binding is valid and should be left as-is, not rewritten to `TextString`. Only `Value` is a genuine unknown member.
73
+
74
+ **Scoping requirement:** when `NGetText` sits inside `<uix:NApplicationCard.Body><ActivityAction><Sequence>`, the `statusText` variable must be declared on that inner `Sequence.Variables`, not on an outer one crossing the `ActivityAction` boundary — otherwise runtime throws `ThrowIfNotInTree`. See [csharp-expression-pitfalls.md](csharp-expression-pitfalls.md#throwifnotintree-at-runtime--two-causes).
73
75
 
74
76
  ### Assign with a C# expression
75
77
 
@@ -23,9 +23,9 @@ ExpressionToCompile { Code = "logMessage" ... } should have been compiled by the
23
23
 
24
24
  `<uix:NGetText TextString="statusText"/>` raises `Failed to create a 'TextString' from the text 'statusText'` — `TextString` is `OutArgument<String>`, not a plain property, so the XAML parser has no converter for it. Always use the `<OutArgument>` + `<CSharpReference>` child form for output bindings.
25
25
 
26
- ## `ThrowIfNotInTree` variable declared outside the `ActivityAction` scope
26
+ ## `ThrowIfNotInTree` at runtime two causes
27
27
 
28
- `OutArgument<T>` + `<CSharpReference>` bound to a variable declared on a `Sequence` **outside** the `ActivityAction` body passes validation but throws at runtime:
28
+ Same runtime stack, two distinct root causes:
29
29
 
30
30
  ```
31
31
  System.InvalidOperationException: The argument of type 'System.String' cannot be used.
@@ -33,6 +33,11 @@ Make sure that it is declared on an activity.
33
33
  at System.Activities.Argument.ThrowIfNotInTree()
34
34
  ```
35
35
 
36
- **Typical case:** a UI activity inside `<uix:NApplicationCard.Body><ActivityAction><Sequence>` writes an output to a variable declared on the *outer* `Sequence` rather than the inner one.
36
+ **Cause 1 variable declared outside the `ActivityAction` scope.** `OutArgument<T>` + `<CSharpReference>` bound to a variable declared on a `Sequence` **outside** the `ActivityAction` body passes validation but throws at runtime.
37
37
 
38
- **Fix:** declare the variable on the `Sequence.Variables` immediately inside the `ActivityAction`, not on a parent `Sequence` outside it.
38
+ - **Typical case:** a UI activity inside `<uix:NApplicationCard.Body><ActivityAction><Sequence>` writes an output to a variable declared on the *outer* `Sequence` rather than the inner one.
39
+ - **Fix:** declare the variable on the `Sequence.Variables` immediately inside the `ActivityAction`, not on a parent `Sequence` outside it.
40
+
41
+ **Cause 2 — UIA activity authored without its `Version` attribute.** A UIA activity missing the `Version` its `activities get-default-xaml` starter emits (e.g. `NGetText` without `Version="V5"`) throws `ThrowIfNotInTree` at runtime on its argument bindings even when variable scoping is correct. This passes BOTH `validate` AND `build` clean — it surfaces only at run.
42
+
43
+ - **Diagnosis rule:** when scoping is verified correct, diff the authored activity against its `uip rpa activities get-default-xaml` starter and restore any missing attributes — the starter's `Version` in particular. Never strip an attribute the starter emits.
@@ -47,7 +47,7 @@ Analyze:
47
47
 
48
48
  ### Step 1.2: Discover Activity Documentation (Primary Source)
49
49
 
50
- **This is the most important discovery step. Read `<Activity>.md` BEFORE `activities get-default-xaml`, every time, even for activities that look simple.** Installed activity packages ship structured markdown at `{projectRoot}/.local/docs/packages/{PackageId}/activities/<Activity>.md`. The doc is the property surface; the CLI starter is not. `activities get-default-xaml` strips every property at its type default — for `NGetText` that means **all** output properties are absent from the starter, and authoring from the starter produces `NGetText.Value="..."` instead of `NGetText.Text="..."`. `validate` does not catch the wrong member name; only `build` does, after a wasted round-trip.
50
+ **This is the most important discovery step. Read `<Activity>.md` BEFORE `activities get-default-xaml`, every time, even for activities that look simple.** Installed activity packages ship structured markdown at `{projectRoot}/.local/docs/packages/{PackageId}/activities/<Activity>.md`. The doc is the property surface; the CLI starter is not. `activities get-default-xaml` strips every property at its type default — for `NGetText` that means **all** output properties are absent from the starter, and authoring from the starter produces `NGetText.Value="..."` instead of the real output member `NGetText.TextString`. `validate` does not catch the wrong member name; only `build` does, after a wasted round-trip.
51
51
 
52
52
  **Availability:** Docs exist only for **installed packages** and typically only for **newer package versions**. When the package is not installed, install it first. When docs are missing, update to the latest version, or fall back to `skills/uipath-rpa/references/activity-docs/<PackageId>/<closest-version>/`.
53
53
 
@@ -203,7 +203,7 @@ Edit: file_path=... old_string=<exact text> new_string=<modified text>
203
203
 
204
204
  ### Step 3.1: Check for Errors
205
205
 
206
- Run both validators per iteration. `validate` catches structural / reference / analyzer issues; `build` catches member-name and enum-value mistakes that `validate` misses (e.g. `NGetText.Value` when the property is `Text`, `Operator="StartsWith"` when the enum has no such member). See [../validation-guide.md § Validation Iteration Loop](../validation-guide.md#validation-iteration-loop) for the canonical loop.
206
+ Run both validators per iteration. `validate` catches structural / reference / analyzer issues; `build` catches member-name and enum-value mistakes that `validate` misses (e.g. `NGetText.Value` when the property is `TextString`, `Operator="StartsWith"` when the enum has no such member). See [../validation-guide.md § Validation Iteration Loop](../validation-guide.md#validation-iteration-loop) for the canonical loop.
207
207
 
208
208
  ```bash
209
209
  uip rpa validate --file-path "Workflows/MyWorkflow.xaml" --output json
@@ -236,7 +236,7 @@ Never construct activity XAML from memory. Two sources, in this order:
236
236
  2. **Fallback:** `skills/uipath-rpa/references/activity-docs/<PackageId>/<closest-version>/<Activity>.md` — bundled reference set covering the major UiPath packages. Use this when `.local/docs` is empty for that package (older versions don't ship per-activity docs) or when no project directory is in scope yet. Pick the version folder closest to the installed version.
237
237
  3. **Neither exists:** the package is third-party or unusual. Document this in your output, fall back to `activities find` + `activities get-default-xaml` alone, and warn the user that the property surface may be incomplete.
238
238
 
239
- > **Skip-tax.** `activities get-default-xaml` omits any property whose value equals the type default (`null`, `0`, `false`, unset). For `NTypeInto`: 2 of 20 properties. For `NClick`: ~3 of ~15. For `NGetText`: every output property — the starter is literally `<uix:NGetText HealingAgentBehavior="SameAsCard" />`, with no `Text` property visible. Authoring from this starter alone is how `NGetText.Value="..."` gets written — `Value` does not exist on that activity (the output is `Text`), `validate` accepts it as static-clean, and `build` finally rejects it as an unknown member. The starter looks complete; it isn't. The MD read is the only way you learn which properties actually exist (`Text`, `ClickType`, `KeyModifiers`, `WaitForReady`, `EmptyFieldMode`, etc.).
239
+ > **Skip-tax.** `activities get-default-xaml` omits any property whose value equals the type default (`null`, `0`, `false`, unset). For `NTypeInto`: 2 of 20 properties. For `NClick`: ~3 of ~15. For `NGetText`: every output property — the starter is literally `<uix:NGetText HealingAgentBehavior="SameAsCard" />`, with no output member visible. Authoring from this starter alone is how `NGetText.Value="..."` gets written — `Value` does not exist on that activity, so `validate` accepts it as static-clean and `build` finally rejects it as an unknown member. The starter looks complete; it isn't. The MD read is the only way you learn which properties actually exist (`TextString`, `ClickType`, `KeyModifiers`, `WaitForReady`, `EmptyFieldMode`, etc.). **When authoring a new Get Text, bind the output to `TextString`** (`OutArgument<string>`) — the typed member the current designer surfaces. But `NGetText` declares **two** real output members: `TextString` and a legacy non-generic `Text` `OutArgument` (backwards-compat — the activity writes the scraped text to both at runtime, and the designer hides whichever the installed version does not use). So a `Text="..."` binding in an existing or older workflow is valid and must not be flagged or "corrected" — only `Value` is a genuine unknown member.
240
240
 
241
241
  **Workflow — each step depends on the previous step's output:**
242
242
 
@@ -53,7 +53,7 @@ All other `solution` subcommands (`pack`, `publish`, `deploy activate/status/uni
53
53
  6. **Run `uip solution resources refresh` before `pack` or `upload`.** Bundled artefact files and `userProfile/<userId>/debug_overwrites.json` must reflect current cloud state. Skipping refresh ships stale bindings.
54
54
  7. **Coded apps are NOT registered in `.uipx`.** `uip solution project add` does not apply to coded-app directories; they deploy independently via `uip codedapp publish / deploy`. A coded app folder can sit alongside a solution but is not part of its manifest.
55
55
  8. **Verify the artifact after every CLI mutation.** Read `project.json`, `.uipx`, or `uip solution deploy status` output — 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 matching `uip solution ... list/status --output json` command and then inspect files only as a secondary sanity check.
56
- 9. **For multi-environment promotion, the deploy config (`-c <CONFIG_KEY>`) is the environment selector.** Same `.uipx` deploys to dev/staging/prod via different config keys, not different packages.
56
+ 9. **For multi-environment promotion, switch tenants with `uip login tenant set <tenant>` and pass a per-environment deploy config via `--config-file <path>`.** The same packed `.uipx` deploys to dev/staging/prod the environment differs by the target tenant and the config file (generated with `deploy config get`, edited with `config set` / `config link`), not by a different package. There is no `-c <CONFIG_KEY>` flag.
57
57
 
58
58
  ## Workflow
59
59
 
@@ -61,7 +61,7 @@ The typical lifecycle for a UiPath Solution:
61
61
 
62
62
  ```
63
63
  1. init / project add → Create solution, register projects (.uipx + resources/solution_folder/)
64
- 2. resource refresh → Sync bundled artefacts and debug overwrites with cloud state
64
+ 2. resources refresh → Sync bundled artefacts and debug overwrites with cloud state
65
65
  3. (optional) restore → Resolve NuGet deps in place (incl. authenticated Orchestrator feeds); login first
66
66
  4. pack → Produce deployable .zip package
67
67
  5. login → uip login (if not already authenticated)
@@ -87,7 +87,7 @@ This skill is the terminal step of an SDD-driven build: after `uipath-planner` p
87
87
  | File | Purpose |
88
88
  |------|---------|
89
89
  | [Solution Overview](references/solution-overview.md) | What a Solution is, `.uipx` manifest, file structure, lifecycle diagram, command tree |
90
- | [Develop a Solution](references/develop-solution.md) | `uip solution init / project add / import / remove / resource refresh / resource add / resource remove / resource edit`; field-tested gotchas |
90
+ | [Develop a Solution](references/develop-solution.md) | `uip solution init / project add / import / remove / resources refresh / resources add / resources remove / resources edit`; field-tested gotchas |
91
91
  | [Pack and Deploy](references/pack-and-deploy.md) | `restore / pack / publish / deploy run`, deploy configs, CI/CD pipeline patterns |
92
92
  | [Activate and Manage](references/activate-and-manage.md) | `deploy activate / status / uninstall`, environment management |
93
93
  | [Scenarios Index](references/scenarios.md) | Failure modes and edge cases — manual edits, shared resources, virtual resources, name collisions |
@@ -98,6 +98,6 @@ This skill is the terminal step of an SDD-driven build: after `uipath-planner` p
98
98
  2. **Editing `resources/solution_folder/` directly.** It is auto-generated and auto-cleaned. Manual edits desync from `.uipx`. Use `uip solution project add/remove` instead.
99
99
  3. **Skipping `uip solution resources refresh` before `pack` or `upload`.** Ships stale bindings and debug-overwrite state.
100
100
  4. **Adding a coded-app directory via `uip solution project add`.** Coded apps have no `project.uiproj` / `project.json` and are not packed by `uip solution pack`. Deploy them independently via `uip codedapp publish / deploy`.
101
- 5. **Creating a new `.uipx` per environment instead of using deploy configs.** One solution package promotes to dev/staging/prod via different `-c <CONFIG_KEY>` values. Different `.uipx` files per environment defeats version tracking.
101
+ 5. **Creating a new `.uipx` per environment instead of using deploy configs.** One packed solution promotes to dev/staging/prod via a per-environment `--config-file` (and `uip login tenant set` to target the tenant). Different `.uipx` files per environment defeats version tracking.
102
102
  6. **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 via `deploy run`. Use `pack` → `publish` → `deploy run` for real deploys. `upload` also lands the solution in Studio Web's **Cloud workspace** tab — not the Local tab; SW's Local tab is a separate registration not addressable by `uip solution`.
103
103
  7. **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.
@@ -90,17 +90,22 @@ uip solution packages list --output json
90
90
 
91
91
  # Paginate and sort
92
92
  uip solution packages list --limit 20 --sort-by "Name" --sort-order "Ascending" --output json
93
+ uip solution packages list --limit 50 --offset 50 --output json # page 2
93
94
 
94
- # Filter by name (server-side substring match on the package name)
95
+ # Filter by name (server-side substring match on the package name, case-insensitive)
95
96
  uip solution packages list --name "Invoice" --output json
96
97
  ```
97
98
 
98
99
  | Option | Description | Default |
99
100
  |--------|-------------|---------|
100
101
  | `--limit <n>` | Number of results to return | 50 |
102
+ | `--offset <n>` | Number of results to skip (page start) | 0 |
103
+ | `--name <pattern>` | Server-side substring match on the package name | -- |
101
104
  | `--sort-by <field>` | Sort field | -- |
102
105
  | `--sort-order <dir>` | `Ascending` or `Descending` | -- |
103
106
 
107
+ The response's `Pagination` block reports `Total` (all matches on the server) and `HasMore`. If `HasMore` is `true`, re-run with `--offset <previous offset + Returned>` to fetch the next page — a package missing from the first page is not necessarily absent. The list is tenant-scoped: packages published on another tenant of the same organization do not appear; check the active tenant with `uip login status`.
108
+
104
109
  ## Step 5: Download a Package Version
105
110
 
106
111
  Download a published solution package .zip from the solution feed:
@@ -243,7 +243,7 @@ uip solution resources add --source remote --kind Queue --name InvoiceQueue \
243
243
  | `--source <source>` | `local`, `remote` | **required** |
244
244
  | `--kind <kind>` | Any kind RCS indexes (e.g. Queue, Asset, Bucket, Process, Connection, App, Index, Trigger). Case-insensitive lookup; trimmed and lowerFirstChar-applied before persistence | **required** |
245
245
  | `--name <name>` | Resource name (max 256 chars; path separators, control chars, and `: * ? " < > |` are rejected). Per-kind Orchestrator limits are stricter — queues cap at 50 | **required** |
246
- | `--type <type>` | Resource subtype (e.g. `Text`/`Bool`/`Integer` for Asset, connector type for Connection) | None |
246
+ | `--type <type>` | Resource subtype (e.g. `Text`/`Bool`/`Integer` for Asset, connector type for Connection). On `--source remote` it is inferred from the matched resource when omitted; pass it only to override | None |
247
247
  | `--folder-path <path>` | Orchestrator folder for remote lookup. **Not valid with `--source local`** — virtual stubs live under the solution folder | None |
248
248
  | `--cloud-key <guid>` | Skip RCS search, import this exact resource key. Only valid with `--source remote`; must be a GUID | None |
249
249
  | `--solution-folder <path>` | Path to solution root (must directly contain a `.uipx`) | Current working directory |
@@ -272,17 +272,36 @@ uip solution resources add --source remote --kind Queue --name InvoiceQueue \
272
272
 
273
273
  ### Ambiguous remote match
274
274
 
275
- When `--source remote` is given without `--cloud-key` and the RCS search returns multiple resources with the same `(kind, name)` across different folders, `add` does **not** guess — it emits a structured error with every candidate inline so an agent can re-call without a separate `resource list`:
275
+ When `--source remote` is given without `--cloud-key` and the RCS search returns multiple resources with the same `(kind, name)`, `add` does **not** guess — it emits a structured error listing every candidate (with its folder, subtype, and key) inline so an agent can re-call without a separate `resources list`:
276
276
 
277
277
  ```json
278
278
  {
279
279
  "Result": "Failure",
280
- "Message": "Ambiguous match: 3 remote resources matching kind=queue name=InvoiceQueue",
281
- "Instructions": "Candidates (use one folder via --folder-path, or pass --cloud-key directly):\n - Folder=Sales/CRM Key=8f3a1b2c-...\n - Folder=Operations/Reporting Key=21a07d4e-...\n - Folder=Shared Key=c0e9f7a3-..."
280
+ "Message": "Ambiguous match: 2 remote resources matching kind=connection name=orders@example.com",
281
+ "Instructions": "Candidates (disambiguate with --cloud-key <key>; --folder-path only helps when they are in different folders):\n - Folder=Shared Type=uipath-google-gmail Key=8f3a1b2c-...\n - Folder=Shared Type=uipath-google-drive Key=21a07d4e-..."
282
282
  }
283
283
  ```
284
284
 
285
- Resolve by re-running with `--folder-path <one-of-the-candidates>` or `--cloud-key <one-of-the-keys>`.
285
+ Two cases produce this:
286
+
287
+ - **Same name across different folders** — resolve with `--folder-path <one-of-the-candidates>` *or* `--cloud-key <one-of-the-keys>`.
288
+ - **Same name *and* folder, different subtype** (e.g. a `uipath-google-gmail` and a `uipath-google-drive` connection both named `orders@example.com` in the same folder). `--folder-path` can't separate these — only `--cloud-key` will. The `Type` column in each candidate tells them apart.
289
+
290
+ ### `--cloud-key` that can't be resolved
291
+
292
+ `--cloud-key` skips the name search and looks the resource up by key to recover its source folder (the folder context is required — without it the deploy-time FPS export of connection/app resources fails). If the key resolves to nothing — wrong key, a resource not visible to your user, or (when `--folder-path` is also given) a resource that isn't in that folder — `add` fails clearly instead of importing a folderless resource:
293
+
294
+ ```json
295
+ {
296
+ "Result": "Failure",
297
+ "Message": "No remote resource found with key 8f3a1b2c-... in folder \"Sales/CRM\"",
298
+ "Instructions": "Verify the key via 'uip solution resources list --source remote' (and that --folder-path, if given, matches the resource's folder)."
299
+ }
300
+ ```
301
+
302
+ Distinguish this from a **transient lookup failure**: if the Orchestrator search itself errors (RCS/API outage), `add` reports a separate `"Failed to look up the resource in Orchestrator by key"` instead of the not-found message above. Treat that one as retry-able; treat `"No remote resource found with key …"` as a key/folder to fix.
303
+
304
+ An *already-imported* key is not an error — the idempotency check runs first, so re-adding it returns `Status: "Unchanged"`. On a successful by-key import the resource's subtype is taken from the match automatically (same as the name-search path), so `--type` is only needed to override it.
286
305
 
287
306
  ### How it relates to `refresh`
288
307
 
@@ -91,7 +91,7 @@ uip solution upload ./MySolution --output json
91
91
 
92
92
  This uploads to Studio Web for collaborative editing. It does **not** place the package on the solution feed and cannot be used with `deploy run`. If the `SolutionId` in `.uipx` already exists in Studio Web, `upload` refuses unless `--force` is passed (forcing replaces the cloud project in place and wipes its Studio Web version history).
93
93
 
94
- `upload` always lands the solution in Studio Web's **Cloud workspace** tab, not the Local tab. SW's Local tab is a separate registration for solutions whose source of truth is a tracked local folder — populated by SW-initiated flows (creating a solution from the SW UI, or downloading a cloud solution to local) or by Studio Desktop signing into the same tenant. `uip solution upload` does not address the Local tab. Authoring with `uip solution new` then `upload` produces a Cloud-tab solution; the local folder on disk has no live link to either tab afterward — edits in one place do not propagate to the other without a re-upload (Cloud) or a download (Local).
94
+ `upload` always lands the solution in Studio Web's **Cloud workspace** tab, not the Local tab. SW's Local tab is a separate registration for solutions whose source of truth is a tracked local folder — populated by SW-initiated flows (creating a solution from the SW UI, or downloading a cloud solution to local) or by Studio Desktop signing into the same tenant. `uip solution upload` does not address the Local tab. Authoring with `uip solution init` then `upload` produces a Cloud-tab solution; the local folder on disk has no live link to either tab afterward — edits in one place do not propagate to the other without a re-upload (Cloud) or a download (Local).
95
95
 
96
96
  ## Step 4: Deploy to Orchestrator
97
97
 
@@ -143,9 +143,12 @@ The CLI also falls back to the persistent `searchSearchDeployments22` record if
143
143
  ```bash
144
144
  uip solution deploy list --output json
145
145
  uip solution deploy list --folder-path "Shared" --limit 20 --sort-by "Name" --sort-order "Ascending" --output json
146
+ uip solution deploy list --limit 50 --offset 50 --output json # page 2
146
147
  ```
147
148
 
148
- Options: `--folder-path`, `--limit` (default 50), `--sort-by`, `--sort-order` (`Ascending`/`Descending`).
149
+ Options: `--folder-path`, `--limit` (default 50), `--offset` (default 0), `--sort-by`, `--sort-order` (`Ascending`/`Descending`).
150
+
151
+ The response's `Pagination` block reports `Total` and `HasMore`; when `HasMore` is `true`, fetch the next page with `--offset`. Note that `--folder-path` filters client-side after the fetch, so with that flag `Returned` counts the filtered rows while `Offset`/`Total` stay server-side — page with `--offset` first, then filter.
149
152
 
150
153
  ---
151
154
 
@@ -64,7 +64,7 @@ Open the file. The shape is roughly:
64
64
  | `resource.runtimeDependencies` | Recomputed at every pack — manual edits lost on next pack |
65
65
  | `resource.files`, `resource.locks` | Managed; never appear in user-edit scenarios |
66
66
  | `resource.folders` | Moves the resource. For a *cloud-imported* resource the folder is `solution_folder` (placeholder) — editing it doesn't change cloud location, only confuses sync. For a *virtual* resource that you authored at a non-`solution_folder` folder, edit at the binding (`bindings_v2.json`) and let refresh re-create — don't edit the resource file directly |
67
- | `resource.spec.<reference-fields>` | E.g. `storageBucketReference`, `retentionBucketRef`. The SDK rewrites these when the target's link state changes; hand-edits get clobbered. (Known bug: the rewrite isn't always applied automatically - that's not a license to hand-edit dependents arbitrarily) |
67
+ | `resource.spec.<reference-fields>` | E.g. `storageBucketReference`, `retentionBucketRef`. The SDK rewrites these when the target's link state changes; hand-edits get clobbered. (Also see [SOL-7051](https://uipath.atlassian.net/browse/SOL-7051) — the rewrite isn't always applied automatically; that's a known bug, not a license to hand-edit dependents arbitrarily) |
68
68
 
69
69
  ### Examples — safe edits
70
70
 
@@ -123,7 +123,7 @@ Same principle, looser rules. The deploy config is **per-deployment**, not per-s
123
123
 
124
124
  **Manual editing of the deploy config is not ideal** — there's no schema validation in the CLI, and a bad edit fails server-side at `deploy run` (often with a generic `ValidationFailed`). But it's the pragmatic escape hatch when:
125
125
 
126
- - You need to set a nested property `config set` doesn't expose (e.g. `configuration.storageBucketReference.key` to work around the reference-field rewrite bug noted above).
126
+ - You need to set a nested property `config set` doesn't expose (e.g. `configuration.storageBucketReference.key` to work around [SOL-7051](https://uipath.atlassian.net/browse/SOL-7051)).
127
127
  - You're scripting a config transform (CI step injecting per-environment secrets, etc.) and want a single JSON-patch step instead of N CLI calls.
128
128
  - The CLI surface is missing a flag for the field you need.
129
129
 
@@ -51,7 +51,7 @@ MySolution/
51
51
  ```mermaid
52
52
  graph LR
53
53
  A[init] --> B[project add]
54
- B --> C[resource refresh]
54
+ B --> C[resources refresh]
55
55
  C --> D[pack]
56
56
  D --> E[publish]
57
57
  E --> F["deploy run<br/>(auto-activate by default)"]
@@ -63,7 +63,7 @@ Two distinct distribution paths from the same solution source:
63
63
  - **`pack` → `publish` → `deploy run`** — promotes a versioned package to Orchestrator.
64
64
  - **`upload`** — pushes the solution to Studio Web for browser-based debugging only. Does not produce a published package and cannot be deployed via `deploy run`.
65
65
 
66
- Always run `resource refresh` before either path so the bundled artefact files and `userProfile/<userId>/debug_overwrites.json` reflect the current cloud state.
66
+ Always run `resources refresh` before either path so the bundled artefact files and `userProfile/<userId>/debug_overwrites.json` reflect the current cloud state.
67
67
 
68
68
  ---
69
69
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: uipath-troubleshoot
3
- description: "UiPath causal investigation across every product, runtime, and activity package. Use when the primary outcome is an explanation, diagnosis, or root cause for undesirable existing behavior: faults, hangs, regressions, slowdowns, access loss, unexpected state changes, wrong or empty results, silent no-ops, or raw errors. Diagnostic intent outranks surface ownership; invoke even when the prompt names only a job, folder, queue item, connector, connection, activity, trace, flow, agent, or other resource and another UiPath skill supplies inspection commands. Correlates runtime, configuration, history, and source evidence to find the originating fault and fix. For operating resources without causal investigation→uipath-platform; for applying a known source fix→the artifact owner."
4
- when_to_use: "Trigger when the requested outcome is to explain or investigate undesirable existing UiPath behavior. Infer this from the goal; no exact phrase, product name, exception, or identifier is required. A pasted raw error message, exception stack, or error code with no other request implies this outcome. Do not trigger for pure CRUD/list/start/stop/status, aggregate monitoring, or a direct edit to a known local artifact when no causal investigation is requested."
3
+ description: "UiPath troubleshooting, diagnostics, and root-cause investigations across any UiPath product, feature, runtime, or artifact. Investigates errors, failures, faults, exceptions, regressions, performance problems, unexpected behavior, and silent malfunctions answers why something failed, broke, stopped, hung, slowed down, returned wrong results, lost access, or stopped working after a change. Also diagnoses failures and faults in Integration Service connectors/connections, Office 365 / Outlook, Google Workspace (GSuite), Excel / Word / PDF activities, Computer Vision, databases / SQL, and HTTP / web activities route here (not uipath-platform) when the intent is why it failed rather than operating the surface. Walks the available evidence (logs, traces, incidents, status fields, configuration, history) to identify the originating fault and explain what changed. For operating or CRUD on these surfaces→uipath-platform."
4
+ when_to_use: "User asks why something failed, broke, stopped, hung, was stuck, returns wrong results, or behaves unexpectedly in any UiPath system. Triggers: 'why did X fail', 'find the cause', 'find why', 'what changed', 'investigate', 'diagnose', 'debug this', 'triage', 'help me figure out', 'what's wrong', 'root cause', 'fix this error', 'inspect this trace / incident / log / job / instance', 'X worked yesterday but now …'. Also fires on raw error messages, exception stacks, error codes, job / queue IDs, or 'stuck / orphan / zombie' state descriptions."
5
5
  ---
6
6
 
7
7
  # UiPath Troubleshooting Agent
@@ -21,7 +21,7 @@ ALL phases. Never override.
21
21
  7. **Live ≠ historical.** Current snapshots (machine status, licenses, connections) cannot prove what happened during incidents older than 24h — context only.
22
22
  8. **Symptom ≠ cause.** A matching error string confirms the playbook *match*, not the *cause*. The §6 checklist gates every conclusion.
23
23
  9. **No inference from undocumented fields.** Behavior not in a playbook or docsai result → flag as unverified, don't guess.
24
- 10. **Approval gate.** Diagnosis is autonomous; applying a fix is not. **Modifying user source files, or executing a remediation command that changes tenant/platform state (a `## Resolution` step that creates, deletes, or reconfigures a resource), requires explicit approval via `AskUserQuestion`.** Diagnostic commands stay autonomous: reads, and playbook-prescribed idempotent re-validations whose purpose is evidence (e.g. a same-values `update` re-probe). A request for steps or a script is a deliverable, not execution approval — author it, do not run it. On decline or non-answer: do not edit or execute. If AskUserQuestion is unavailable, present the proposed fix as text and stop.
24
+ 10. **Approval gate.** Diagnosis is autonomous; **modifying user source files requires explicit approval via `AskUserQuestion`**. On decline or non-answer: do not edit. If AskUserQuestion is unavailable, present the proposed edit as text and stop.
25
25
  11. **No ad-hoc code execution.** Playbook-provided diagnostic snippets are recommendations for the user unless the playbook says to run them. Shell for file I/O and uip is fine.
26
26
 
27
27
  **Tools:** uip CLI (json by default in non-interactive mode). Documentation search: `uip docsai ask "<question>" --source docs` (product docs) or `--source technical_solution_articles` (support KB — known bugs, workarounds).
@@ -67,8 +67,6 @@ What to look for:
67
67
  uip context-grounding ingest --index-name "<index-name>" --folder-path "<folder-path>" --output json
68
68
  ```
69
69
 
70
- Ingestion is async: after `ingest`, poll `uip context-grounding retrieve --index-name "<index-name>" --folder-path "<folder-path>" --output json` until `last_ingestion_status` is `Successful` before searching — the index is not queryable earlier.
71
-
72
70
  No agent republish needed — the runtime resolves by name.
73
71
 
74
72
  **If the index exists but is in a different folder — re-link the agent:**
@@ -32,7 +32,7 @@ What to look for:
32
32
 
33
33
  ## Resolution
34
34
 
35
- - **If Personal Automation quota exhausted:** request a license upgrade via the organization admin or UiPath account manager, or wait for the monthly quota reset
35
+ - **If Personal Automation quota exhausted:** request a license upgrade via [self-service license increase](https://uipath.atlassian.net/wiki/spaces/LIC/pages/2834596253), or wait for the monthly quota reset
36
36
  - **If Agentic Units expired:** allocate AU from **Admin > Organization > Subscriptions** or contact the UiPath account manager
37
37
  - **If recurring:** redesign the workflow to use a tenant-level Unattended robot instead of Personal Automation so quotas come from the shared pool
38
38
 
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaVersion": 1,
3
- "skillsVersion": "1.197.2",
4
- "targetCli": "^1.197.0"
2
+ "schemaVersion": 2,
3
+ "skillsVersion": "1.198.0-preview.21",
4
+ "targetCli": "^1.198.0"
5
5
  }