Skip to content

docs(uipath-solution): document resource add and resource remove#1027

Merged
alexenica merged 6 commits into
mainfrom
feat/solution-resource-add-remove
May 28, 2026
Merged

docs(uipath-solution): document resource add and resource remove#1027
alexenica merged 6 commits into
mainfrom
feat/solution-resource-add-remove

Conversation

@alexenica

@alexenica alexenica commented May 26, 2026

Copy link
Copy Markdown
Contributor

Split: cross-skill command-list cross-references (agents / maestro-case / maestro-flow / platform) moved to #1055 so this PR stays scoped to uipath-solution and only needs merlot/orange/RaduAna review.

Summary

Two atomic resource-mutation verbs just landed in the CLI (UiPath/cli#2221):

  • `uip solution resource add --source local|cloud --kind --name ` — virtual stub or cloud import in one call, idempotent.
  • `uip solution resource remove ` — atomic delete.

This PR wires both into the Operate half of `uipath-solution` so the skill's docs match the new CLI surface.

What changed

  • `develop-solution.md` — Step 9 (add) + Step 10 (remove) with full contract: flag table, output shape, idempotency semantics, ambiguous-cloud-match candidate format, relationship to `refresh`. Renumbers upload → 11 / delete → 12. Updates flow diagram, `--solution-folder` note, cheat sheet.
  • `solution-overview.md` — command tree gets the two new verbs.
  • `scenarios.md` — triage rows pointing at the new commands for single-resource create / delete intents.
  • `scenarios/manual-edits.md` — opening reframed: create / delete are now CLI-covered; only field-level updates still require a manual edit or SW round-trip.
  • `scenarios/virtual-resource.md` — adds the no-bindings path (`resource add --source local`) alongside the binding-driven flow.
  • `SKILL.md` — command list in description + Develop reference row.

Test plan

  • Markdown links between renumbered steps and new anchors checked.
  • No test asserts the old step numbering; `resource_list_smoke.yaml` only exercises `resource list` and remains valid.
  • Reviewers: spot-check that an agent reading just Step 9 / Step 10 has enough to call `add` / `remove` correctly (required flags, idempotency, ambiguous match) without flipping back to `--help`.

🤖 Generated with Claude Code

@alexenica alexenica requested review from a team and RaduAna-Maria as code owners May 26, 2026 15:32
@github-actions

github-actions Bot commented May 26, 2026

Copy link
Copy Markdown
Contributor

Claude finished @alexenica's task in 2m 26s —— View job


PR Review: docs(uipath-solution): document resource add and resource remove

  • Read review criteria and project conventions
  • Read full diff and existing PR comments
  • Read each changed file in full context
  • Apply skill-specific and structural checks
  • Post review findings

Summary

Adds documentation for two new atomic CLI commands (uip solution resource add and uip solution resource remove) across 6 files in the uipath-solution skill. The bulk of the content lands in develop-solution.md as Step 9 and Step 10, with supporting cross-references in the scenarios index, virtual-resource scenario, manual-edits scenario, solution-overview command tree, and the SKILL.md description.

Change-by-Change Review

1. skills/uipath-solution/SKILL.md — description + reference table

Severity: OK

Description updated from resource refresh to resource refresh|add|remove — correctly extends the command list. Character count is 750, well under the 1024 cap. The Develop reference row updated to mention the new commands. Clean.

2. skills/uipath-solution/references/operate/develop-solution.md — Step 9 + Step 10 (bulk of the PR)

Severity: Low

Well-structured. Step 9 (add) covers both --source local and --source cloud modes with full flag table, output shape, idempotency semantics, ambiguous-cloud-match error format, and the comparison table with refresh. Step 10 (remove) documents the positional key argument, output, failure mode, and the critical binding-persistence caveat. Renumbering of upload → Step 11, delete → Step 12 is clean.

Specific observations:

  • Line 31: add / remove are described as "the atomic, idempotent siblings" in the flow diagram paragraph, but remove is not idempotent in the usual sense — calling it twice on the same key produces Failure + Resource not found in solution on the second call (line 323). add is genuinely idempotent (returns "Unchanged"). Calling both "idempotent" could mislead an agent into not checking the result of remove. Consider rewording to something like "add is idempotent; remove is atomic (fails cleanly if the key doesn't exist)."
    Fix this →

  • Line 383: The "Always verify state after every mutation" gotcha now mentions add, remove, and refresh. The verification script checks .uipx project entries and resources/solution_folder/{package,process}/ — but resource add/remove operate on resource files (e.g., resources/solution_folder/queue/, asset/), not project entries. The existing verification commands (grep ProjectRelativePath, ls package/ process/) wouldn't catch a resource-level mutation failure. This is pre-existing (the gotcha was about project mutations), but now that it name-drops add/remove, an agent following it literally would run irrelevant checks. Consider adding a resource-level sanity check like uip solution resource list --source local --output json or noting that the .uipx/resources agreement check applies to project mutations, while resource mutations should be verified with resource list.
    Fix this →

3. skills/uipath-solution/references/operate/solution-overview.md — command tree

Severity: OK

add and remove correctly added to the resource subtree with accurate one-line descriptions. get changed from └── to ├── to accommodate new siblings. Clean.

4. skills/uipath-solution/references/operate/scenarios.md — triage rows

Severity: OK

Three new triage rows for add-local, add-cloud, and remove-by-key. Links point to the correct anchors (#step-9-add-a-resource-atomically, #step-10-remove-a-resource). Inline CLI snippets give agents enough to act without clicking through. Well placed between the existing virtual-resource and manual-edits rows.

5. skills/uipath-solution/references/operate/scenarios/manual-edits.md — reframe opening

Severity: OK

Opening paragraph correctly reframed: create/delete are now CLI-covered; only field-level updates remain as manual-edit territory. The Step 9–10 link resolves to the correct anchor. Closing sentence reinforces the routing. Clean.

6. skills/uipath-solution/references/operate/scenarios/virtual-resource.md — no-bindings path

Severity: OK

New bullet block clearly presents the two paths (from a binding vs. atomic add). The develop-solution.md Step 9 link is correct. "Same end state on disk; same deploy behavior" is a valuable clarification for agents. Clean.

What's Missing

  • No new test task for resource add / resource remove. The existing tests/tasks/uipath-solution/operate/ directory covers resource list but not the new mutation commands. Given that this is a docs-only change documenting CLI commands that require a live Orchestrator tenant, this is understandable but worth flagging as a gap. Severity: Medium (per repo policy for new capabilities lacking test coverage).
  • No error-handling guidance in Step 10. Step 9 has an explicit "Ambiguous cloud match" subsection showing the agent what to do on failure. Step 10 mentions the Failure / Resource not found case but doesn't prescribe a recovery action (e.g., "verify the key with resource list --source local, then retry with the correct key"). Minor gap — an agent can figure it out, but the skill's pattern is to be explicit about error paths.

Area Ratings

Area Status Notes
Frontmatter OK Description under 1024 chars (750), name matches folder, new commands added to command list
E2E Tests Issue (Medium) No test task for resource add / resource remove — existing tasks still valid but don't cover new capabilities
Skill Body OK SKILL.md reference table updated correctly
References & Assets OK (Low nits) All links resolve, no orphaned files, no cross-skill references. Two low-severity accuracy nits in develop-solution.md
Repo Hygiene OK CODEOWNERS already covers /skills/uipath-solution/. No secrets, no cross-skill deps, changes scoped to one skill

Issues for Manual Review

  • CLI command accuracy: Verify that --source, --kind, --name, --type, --folder-path, --cloud-key flags on resource add and the positional <resource-key> on resource remove match the actual CLI surface from UiPath/cli#2221. Automated review cannot verify CLI flag correctness against the actual tool.
  • Output shape: The JSON response bodies (lines 248–263 for add, lines 310–320 for remove) and the ambiguous-match error (lines 271–276) should be spot-checked against actual CLI output.
  • Idempotency semantics for remove: Line 31 claims both add and remove are "idempotent" but Step 10 (line 323) says remove on a missing key returns Failure. Confirm whether the CLI team intends remove to be idempotent (return success on already-removed key) or fail-on-missing.

Conclusion

Clean, well-organized documentation PR. The new content follows the skill's existing patterns (flag tables, output shapes, comparison tables, cheat sheet entries, cross-references from scenario files). Two low-severity nits: (1) the "idempotent siblings" label may overstate remove's behavior, and (2) the verify-after-mutation gotcha could benefit from a resource-level check now that it name-drops add/remove. The missing test task is the only medium-severity gap, and it's consistent with the repo's current test coverage posture. Recommend approve with nits.

alexenica added a commit that referenced this pull request May 27, 2026
…fy steps

Address review on #1027:
- `remove` is not idempotent — it fails with `Resource not found in
  solution` on a missing key. Reword the "atomic, idempotent siblings"
  line so only `add` is called idempotent.
- The "verify state after every mutation" gotcha showed only
  project-level checks (.uipx vs package/process) though it now
  name-drops add/remove. Add a resource-level check
  (`resource list --source local`) for resource mutations.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
alexenica added a commit that referenced this pull request May 27, 2026
The verb-check CI gate fails the whole skill on this stale verb
(`uip auth login` doesn't exist; the CLI uses `uip login`). Pre-existing
in tenant-library-search-guide.md, surfaced now that #1027 touches the
skill.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
alexenica and others added 6 commits May 28, 2026 14:45
Two atomic resource mutation verbs just landed in the CLI
(UiPath/cli#2221) — `uip solution resource add` (local virtual or
cloud import) and `uip solution resource remove`. This wires them
into the Operate half of the skill:

- `develop-solution.md`: Step 9 (add) + Step 10 (remove) full
  contract — flag table, output shape, idempotency semantics,
  ambiguous-match candidate format, relationship to `refresh`.
  Renumbers upload → 11 / delete → 12. Updates the flow diagram,
  the "--solution-folder defaults to cwd" note, and the cheat sheet.
- `solution-overview.md`: command tree gets the two new verbs.
- `scenarios.md`: triage rows pointing at the new commands for
  single-resource create / delete intents.
- `scenarios/manual-edits.md`: opening paragraph reframed —
  create/delete are now CLI-covered, only field-level updates
  still require a manual edit or SW round-trip.
- `scenarios/virtual-resource.md`: notes the new no-bindings path
  to create a virtual stub via `resource add --source local`.
- `SKILL.md`: command list in description + Develop reference row.
11 review agents (2 opus + 2 sonnet + 1 haiku × 2 PRs, plus a sweep)
flagged 1 must-fix and several should-fix issues across the skills
repo. Addressing the actionable ones now.

CLI-aligned changes (vocabulary + output shape, follow PR #2221)
- `--source` value renamed `cloud` → `remote` everywhere, matching
  `resource list --source remote`. One vocab across commands.
- Output field `FolderPath` renamed to `Folder` (matches `list`).
- `Source` value in `add` output renamed `cloud` → `remote`.
- `--kind` canonicalization claim corrected: trim + lowerFirstChar
  (no ALLCAPS folding — folding mangled multi-word kinds).
- `add --source remote` ambiguous-match sample uses real two-space
  format and canonicalized `kind=queue`, not the column-aligned
  Pascal placeholder the prior draft fabricated.
- `--name` validation note: path-separators and `: * ? " < > |`
  rejected (CLI-level path-traversal guard).
- `--folder-path` with `--source local` is now hard-rejected, not
  warn+applied — call this out in the option table.
- `--login-validity` removed from `resource remove` (the command no
  longer hits cloud; it's offline-friendly).
- `resource remove` is now GUID-validated (mention it in the table).

Sibling skills updated for routing completeness (council sweep)
- `uipath-platform/references/uip-commands.md`: command-ownership
  index now lists `resource list|refresh|get|add|remove`. This is
  what other agents grep to route a command to the owning skill.
- `uipath-agents/references/lowcode/project-lifecycle.md`: command
  table gets `solution resource add` and `solution resource remove`
  rows so agent-skill workflows can reach them.
- `uipath-maestro-flow/references/shared/cli-commands.md`: new
  section `## uip solution resource add / remove` modeled after the
  existing `refresh` section.
- `uipath-maestro-case/references/case-commands.md`: command table
  gets a row covering both verbs.

Info-arch + readability tweaks
- `SKILL.md` `when_to_use` extended with explicit triggers for
  "add a queue/asset to my solution", "add a resource to a
  solution", "remove a resource from a solution", "import a cloud
  queue into my solution". Fixes the false-negative skill-load gap.
- "Virtual stub" is now defined inline at first use in Step 9
  (under `--source local`) rather than left as jargon.
- New forward-link from Step 7 (Refresh) into Step 9/10 so a reader
  starting on refresh discovers the atomic verbs.
- Cheat sheet rows regrouped so resource-level ops cluster together
  and project-level ops sit above them — preserves the original
  lifecycle grouping the council flagged was broken.
- Triage rows in `scenarios.md` re-clustered so the manual-edits
  rows stay adjacent (was split by the new add/remove rows).
- `scenarios/manual-edits.md` link split: was a single anchor for
  "Step 9–10", now two separate links to each anchor.
- `scenarios/virtual-resource.md` adds "offline-friendly" callout
  for the no-binding path.
- `develop-solution.md` "--solution-folder defaults" note now
  covers refresh too (it has the same .uipx assertion).

Out of scope on purpose
- Strict `--fail-if-exists` flag for `add` (excluded by request).
- `remove` Data missing `Source`: no reliable signal post-create
  to infer local vs remote provenance; skip.
- `solution-overview.md` lifecycle mermaid does not gain
  add/remove — that diagram shows the promotion lifecycle, not
  single-resource ops. The command tree underneath was updated.
- Step 8 (`get`) was not reordered — its read-then-mutate cluster
  position reads naturally enough.
…fy steps

Address review on #1027:
- `remove` is not idempotent — it fails with `Resource not found in
  solution` on a missing key. Reword the "atomic, idempotent siblings"
  line so only `add` is called idempotent.
- The "verify state after every mutation" gotcha showed only
  project-level checks (.uipx vs package/process) though it now
  name-drops add/remove. Add a resource-level check
  (`resource list --source local`) for resource mutations.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Move the agents / maestro-case / maestro-flow / platform command-list
cross-references for `solution resource add`/`remove` into a separate PR
(#1055) so this PR stays scoped to uipath-solution and only needs its
own CODEOWNERS (merlot/orange/RaduAna).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Completes the resource CRUD docs alongside add/remove (CLI PR
UiPath/cli#2221). `edit` patches an existing resource's spec via the
SDK's updateConfigurationAsync — the only command that mutates a
resource already in the solution (`refresh` is import-only and never
overwrites).

- develop-solution.md: new Step 11 (Edit a Resource) — `--patch`/`--set`
  contract, the SDK silent-skip behavior (unknown/reference/read-only
  props ignored, not an error), identity fields structurally
  unreachable, secret-upsert path, rename-with-duplicate-protection,
  top-level (not deep) merge, get↔edit shape symmetry. Renumber
  Upload→12, Delete→13. Flow diagram, Step-7 forward link, cheat
  sheet, and the `--solution-folder`/`.uipx`-manifest notes all gain
  edit.
- solution-overview.md: command tree gets `edit <resource-key>`.
- scenarios.md: triage rows route "change a field on an existing
  resource" to `resource edit`, plus "refresh didn't pick up my spec
  edit" (expected — refresh never overwrites) and "edit ignored a
  property" (SDK skips reference/read-only/unknown).
- manual-edits.md: reframed — CRUD is now complete; `edit` is the
  first-choice for spec changes (incl. rename). Manual JSON editing
  drops to a true last resort for the narrow set the SDK won't write.
- SKILL.md: description command list + Develop reference row + several
  `when_to_use` triggers (edit/update a resource, change a queue/asset
  field, set an asset value, patch a resource spec).
Mirror CLI PR UiPath/cli#2221 — `--set <prop>=<value>` was removed from
the `resource edit` command. The scalar shortcut JSON-parsed values,
which silently coerced numeric-looking strings to numbers and surprised
agents when the SDK schema required strings (hit live on Queue's
\`riskSlaInHours\` against Studio Web's required-field validator).

- develop-solution.md Step 11: examples now patch-only; option table
  drops the --set row and marks --patch as required; new short
  paragraph explains the design decision ("Why no --set k=v shortcut?").
- develop-solution.md cheat sheet: edit row trimmed to --patch.
- solution-overview.md command tree: edit entry no longer mentions
  --set.
@alexenica alexenica force-pushed the feat/solution-resource-add-remove branch from 8e2124c to b14d7d1 Compare May 28, 2026 11:48
alexenica added a commit that referenced this pull request May 28, 2026
Split out of #1027 so the uipath-solution doc PR needs only
its own CODEOWNERS (merlot/orange/RaduAna). These touch other teams'
skills purely to keep their command lists complete now that the CLI
ships `uip solution resource add` / `remove`:

- uipath-platform: add `add|remove` to the `uip solution` subcommand
  enumeration
- uipath-agents (lowcode project-lifecycle): two cheat-sheet rows
- uipath-maestro-case: one command-table row
- uipath-maestro-flow (shared cli-commands): dedicated section, parity
  with the existing per-command sections

Commands themselves are owned/documented by uipath-solution (#1027) and
UiPath/cli#2221.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@alexenica alexenica merged commit e4d7a15 into main May 28, 2026
12 checks passed
@alexenica alexenica deleted the feat/solution-resource-add-remove branch May 28, 2026 12:02
gabrielavaduva pushed a commit that referenced this pull request May 28, 2026
…lls (#1055)

* docs: cross-reference `solution resource add`/`remove` in sibling skills

Split out of #1027 so the uipath-solution doc PR needs only
its own CODEOWNERS (merlot/orange/RaduAna). These touch other teams'
skills purely to keep their command lists complete now that the CLI
ships `uip solution resource add` / `remove`:

- uipath-platform: add `add|remove` to the `uip solution` subcommand
  enumeration
- uipath-agents (lowcode project-lifecycle): two cheat-sheet rows
- uipath-maestro-case: one command-table row
- uipath-maestro-flow (shared cli-commands): dedicated section, parity
  with the existing per-command sections

Commands themselves are owned/documented by uipath-solution (#1027) and
UiPath/cli#2221.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs: cross-reference `solution resource edit` in sibling skills

Follows the add/remove cross-references in this PR — `resource edit`
(CLI PR UiPath/cli#2221) patches an existing resource's spec by key
and is the only command that mutates a resource already in the
solution (`refresh` never overwrites). Add it alongside add/remove
in each sibling skill's command reference, matching the existing
format:

- uipath-platform/references/uip-commands.md: ownership index
  resource verbs → `…|add|remove|edit`.
- uipath-agents/references/lowcode/project-lifecycle.md: new
  command-table row for `resource edit`.
- uipath-maestro-flow/references/shared/cli-commands.md: section
  retitled `add / remove / edit` with `--patch`/`--set` examples and
  the "refresh never overwrites" note.
- uipath-maestro-case/references/case-commands.md: command-table row
  extended to cover edit; link bumped to Step 9–11.

* fix: clear pre-existing stale-verb gate failures in touched skills

The verb-gate runs on the whole skill whenever any file in it changes,
so adding `resource edit` to platform/flow/case surfaced three latent
stale-verb references unrelated to this PR's content:

- uipath-platform/references/uip-commands.md: the line teaching that
  `uip orchestrator` does NOT exist (correct prefix is `or`) tripped
  the checker on its own example — add `<!-- uip-check-skip -->`.
- uipath-maestro-flow/references/shared/cli-conventions.md: the
  `< 0.3.4` fallback `FLOW_CMD="uip flow"` in the version-detection
  snippet — skip-marked like the sibling references on lines 27/39.
- uipath-maestro-case/references/troubleshooting-guide.md: genuine
  stale verb `uip orchestrator folder list` → `uip or folders list`.

Verified locally: `check-skill-verbs.py` reports 0 hard-stale findings
across the three skills.

* docs: drop --set from `solution resource edit` cross-references

Mirror CLI PR UiPath/cli#2221 — `--set <prop>=<value>` was removed
from the edit command (scalar JSON-coercion silently turned
numeric-looking strings into numbers, breaking Queue/Asset schemas
that require strings — hit live against Studio Web's required-field
validator on \`riskSlaInHours\`).

- uipath-agents/.../project-lifecycle.md: command-table row trims the
  "(or --set <prop>=<value>)" parenthetical.
- uipath-maestro-flow/.../cli-commands.md: --set example replaced
  with a multi-key --patch example + an explicit stdin example.
- uipath-maestro-case/.../case-commands.md: "patch spec via
  --patch/--set" → "patch spec via --patch '<json>'".

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants