@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.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/CODEOWNERS +18 -11
- package/README.md +1 -0
- package/assets/skill-status.json +8 -0
- package/hooks/hooks.json +44 -8
- package/hooks/send-telemetry.ps1 +392 -0
- package/hooks/send-telemetry.sh +118 -86
- package/hooks/set-session-env.ps1 +72 -0
- package/hooks/set-session-env.sh +64 -0
- package/hooks/suggest-permissions.ps1 +45 -0
- package/hooks/suggest-permissions.sh +4 -0
- package/package.json +1 -1
- package/skills/uipath-admin/references/audit-commands.md +2 -2
- package/skills/uipath-admin/references/audit-workflow-guide.md +4 -4
- package/skills/uipath-agents/references/coded/capabilities/batch-transform/planning.md +1 -1
- package/skills/uipath-agents/references/coded/capabilities/deeprag/planning.md +1 -1
- package/skills/uipath-agents/references/coded/capabilities/guardrails/guardrails-recommend.md +5 -2
- package/skills/uipath-agents/references/coded/capabilities/guardrails/guardrails.md +8 -4
- package/skills/uipath-agents/references/coded/embedding-in-flows.md +1 -1
- package/skills/uipath-agents/references/coded/flow-integration.md +2 -2
- package/skills/uipath-agents/references/coded/lifecycle/build.md +0 -1
- package/skills/uipath-agents/references/coded/lifecycle/setup.md +0 -1
- package/skills/uipath-agents/references/coded/quickstart.md +1 -1
- package/skills/uipath-agents/references/lowcode/agent-definition.md +24 -5
- package/skills/uipath-agents/references/lowcode/capabilities/built-in-tools/batch-transform/planning.md +1 -1
- package/skills/uipath-agents/references/lowcode/capabilities/built-in-tools/deeprag/planning.md +1 -1
- package/skills/uipath-agents/references/lowcode/capabilities/context/attachments.md +1 -0
- package/skills/uipath-agents/references/lowcode/capabilities/guardrails/guardrails-recommend.md +1 -0
- package/skills/uipath-api-workflow/references/cli-reference.md +1 -1
- package/skills/uipath-api-workflow/references/connector-activity-discovery.md +1 -1
- package/skills/uipath-api-workflow/references/troubleshooting.md +1 -1
- package/skills/uipath-automation-discovery/SKILL.md +26 -1
- package/skills/uipath-automation-discovery/assets/templates/estimation-worksheet-template.md +80 -0
- package/skills/uipath-automation-discovery/references/estimation-guide.md +104 -0
- package/skills/uipath-connector-builder/SKILL.md +6 -4
- package/skills/uipath-connector-builder/references/auth.md +137 -13
- package/skills/uipath-connector-builder/references/configuration.md +29 -7
- package/skills/uipath-connector-builder/references/debugging.md +1 -1
- package/skills/uipath-connector-builder/references/standard-resources.md +162 -13
- package/skills/uipath-governance/references/cli-cheatsheet.md +3 -3
- package/skills/uipath-governance/references/diagnose/references/failure-modes.md +5 -5
- package/skills/uipath-insights/SKILL.md +277 -0
- package/skills/uipath-insights/references/investigation-playbook-guide.md +145 -0
- package/skills/uipath-insights/references/jobs-commands-guide.md +144 -0
- package/skills/uipath-ixp/SKILL.md +4 -1
- package/skills/uipath-ixp/references/cli-reference.md +18 -3
- package/skills/uipath-maestro-bpmn/references/cli-conventions.md +2 -0
- package/skills/uipath-maestro-bpmn/validator/README.md +12 -2
- package/skills/uipath-maestro-case/SKILL.md +27 -13
- package/skills/uipath-maestro-case/assets/templates/sdd-template-examples.md +37 -4
- package/skills/uipath-maestro-case/assets/templates/sdd-template.md +20 -9
- package/skills/uipath-maestro-case/assets/templates/sdd-viewer.html +8 -7
- package/skills/uipath-maestro-case/references/bindings-v2-sync.md +5 -1
- package/skills/uipath-maestro-case/references/brownfield.md +86 -0
- package/skills/uipath-maestro-case/references/case-commands.md +8 -0
- package/skills/uipath-maestro-case/references/case-editing-operations.md +230 -21
- package/skills/uipath-maestro-case/references/case-schema.md +29 -11
- package/skills/uipath-maestro-case/references/connector-integration.md +1 -1
- package/skills/uipath-maestro-case/references/connector-trigger-common.md +1 -1
- package/skills/uipath-maestro-case/references/entry-points-sync.md +204 -0
- package/skills/uipath-maestro-case/references/implementation.md +19 -9
- package/skills/uipath-maestro-case/references/phase-0-interview.md +10 -8
- package/skills/uipath-maestro-case/references/phased-execution.md +11 -4
- package/skills/uipath-maestro-case/references/placeholder-tasks.md +24 -2
- package/skills/uipath-maestro-case/references/planning.md +9 -3
- package/skills/uipath-maestro-case/references/plugins/case/planning.md +2 -0
- package/skills/uipath-maestro-case/references/plugins/sla/impl-json.md +1 -1
- package/skills/uipath-maestro-case/references/plugins/sla/planning.md +1 -1
- package/skills/uipath-maestro-case/references/plugins/stages/impl-json.md +11 -10
- package/skills/uipath-maestro-case/references/plugins/stages/planning.md +13 -14
- package/skills/uipath-maestro-case/references/plugins/tasks/agent/impl-json.md +3 -1
- package/skills/uipath-maestro-case/references/plugins/tasks/agent/planning.md +91 -2
- package/skills/uipath-maestro-case/references/plugins/tasks/api-workflow/impl-json.md +3 -1
- package/skills/uipath-maestro-case/references/plugins/tasks/api-workflow/planning.md +87 -2
- package/skills/uipath-maestro-case/references/plugins/tasks/connector-activity/planning.md +1 -1
- package/skills/uipath-maestro-case/references/plugins/triggers/event/impl-json.md +1 -1
- package/skills/uipath-maestro-case/references/plugins/triggers/manual/impl-json.md +3 -1
- package/skills/uipath-maestro-case/references/plugins/triggers/timer/impl-json.md +2 -1
- package/skills/uipath-maestro-case/references/plugins/variables/bindings/impl-json.md +2 -0
- package/skills/uipath-maestro-case/references/plugins/variables/global-vars/impl-json.md +20 -10
- package/skills/uipath-maestro-case/references/plugins/variables/global-vars/planning.md +9 -8
- package/skills/uipath-maestro-case/references/plugins/variables/io-binding/impl-json.md +1 -1
- package/skills/uipath-maestro-case/references/plugins/variables/io-binding/planning.md +1 -1
- package/skills/uipath-maestro-case/references/registry-discovery.md +87 -10
- package/skills/uipath-maestro-case/references/sdd-generation-rules.md +34 -26
- package/skills/uipath-maestro-flow/SKILL.md +4 -1
- package/skills/uipath-maestro-flow/references/author/CAPABILITY.md +1 -2
- package/skills/uipath-maestro-flow/references/author/references/editing-operations-json.md +3 -3
- package/skills/uipath-maestro-flow/references/author/references/greenfield.md +4 -2
- package/skills/uipath-maestro-flow/references/author/references/planning-arch.md +0 -1
- package/skills/uipath-maestro-flow/references/author/references/planning-impl.md +0 -1
- package/skills/uipath-maestro-flow/references/author/references/plugins/connector/impl.md +1 -0
- package/skills/uipath-maestro-flow/references/author/references/plugins/connector-trigger/impl.md +7 -7
- package/skills/uipath-maestro-flow/references/author/references/plugins/ixp/impl.md +14 -14
- package/skills/uipath-maestro-flow/references/author/references/plugins/script/impl.md +10 -6
- package/skills/uipath-maestro-flow/references/shared/cli-conventions.md +7 -0
- package/skills/uipath-maestro-flow/references/shared/file-format.md +1 -1
- package/skills/uipath-mcp-servers/references/is-activity-workflow.md +3 -3
- package/skills/uipath-planner/SKILL.md +1 -1
- package/skills/uipath-platform/SKILL.md +4 -14
- package/skills/uipath-platform/references/data-fabric/data-fabric.md +1 -1
- package/skills/uipath-platform/references/integration-service/agent-workflow.md +4 -4
- package/skills/uipath-platform/references/integration-service/reference-resolution.md +1 -1
- package/skills/uipath-platform/references/integration-service/resources.md +5 -5
- package/skills/uipath-platform/references/integration-service/triggers.md +10 -9
- package/skills/uipath-platform/references/orchestrator/setup-environment.md +2 -0
- package/skills/uipath-review/SKILL.md +8 -4
- package/skills/uipath-review/references/agents/agent-review-checklist.md +1 -22
- package/skills/uipath-review/references/agents/agents-coded-rules.md +24 -7
- package/skills/uipath-review/references/agents/agents-lowcode-rules.md +0 -1
- package/skills/uipath-review/references/agents/guardrails/coded-guardrails-review.md +231 -0
- package/skills/uipath-review/references/rule-catalog-workflow.md +4 -2
- package/skills/uipath-rpa/SKILL.md +2 -2
- package/skills/uipath-rpa/references/activity-docs/UiPath.DataService.Activities/guides/data-service-filter-builder-guide.md +1 -1
- package/skills/uipath-rpa/references/activity-docs/UiPath.Web.Activities/2.5/coded/coded-api.md +1 -1
- package/skills/uipath-rpa/references/activity-docs/UiPath.Web.Activities/2.5/coded/curl-import.md +3 -3
- package/skills/uipath-rpa/references/activity-docs/UiPath.Web.Activities/2.5/coded/http-request-upgrade.md +3 -3
- package/skills/uipath-rpa/references/activity-docs/UiPath.Web.Activities/2.5/coded/service-discovery.md +2 -2
- package/skills/uipath-rpa/references/coded/coding-guidelines.md +1 -1
- package/skills/uipath-rpa/references/ui-automation-guide.md +7 -7
- package/skills/uipath-rpa/references/uia-configure-target-workflows.md +5 -5
- package/skills/uipath-rpa/references/uia-elements-interaction-guide.md +19 -10
- package/skills/uipath-rpa/references/uia-prerequisites.md +7 -7
- package/skills/uipath-rpa/references/validation-guide.md +2 -2
- package/skills/uipath-rpa/references/xaml/common-pitfalls.md +4 -0
- package/skills/uipath-rpa/references/xaml/csharp-activity-binding-guide.md +3 -1
- package/skills/uipath-rpa/references/xaml/csharp-expression-pitfalls.md +9 -4
- package/skills/uipath-rpa/references/xaml/workflow-guide.md +2 -2
- package/skills/uipath-rpa/references/xaml/xaml-basics-and-rules.md +1 -1
- package/skills/uipath-solution/SKILL.md +4 -4
- package/skills/uipath-solution/references/activate-and-manage.md +6 -1
- package/skills/uipath-solution/references/develop-solution.md +24 -5
- package/skills/uipath-solution/references/pack-and-deploy.md +5 -2
- package/skills/uipath-solution/references/scenarios/manual-edits.md +2 -2
- package/skills/uipath-solution/references/solution-overview.md +2 -2
- package/skills/uipath-troubleshoot/SKILL.md +3 -3
- package/skills/uipath-troubleshoot/references/products/agents/playbooks/context-grounding-index-not-found.md +0 -2
- package/skills/uipath-troubleshoot/references/products/maestro/playbooks/personal-automation-quota.md +1 -1
- package/version-manifest.json +3 -3
- package/hooks/ensure-uip.sh +0 -220
- package/skills/uipath-maestro-flow/references/author/references/plugins/connector/data-fabric/impl.md +0 -683
- package/skills/uipath-maestro-flow/references/author/references/plugins/connector/data-fabric/planning.md +0 -45
|
@@ -37,7 +37,7 @@ installed/published SDK documentation does not currently support HITL guardrail
|
|
|
37
37
|
|
|
38
38
|
## Check Tenant Availability (mandatory for built-in AI validators)
|
|
39
39
|
|
|
40
|
-
For built-in AI validators (PII, harmful content, user prompt attacks, IP), confirm the validator is enabled on this tenant **before authoring** — run:
|
|
40
|
+
For built-in AI validators (PII, harmful content, user prompt attacks, IP, LLM as Judge), confirm the validator is enabled on this tenant **before authoring** — run:
|
|
41
41
|
|
|
42
42
|
```bash
|
|
43
43
|
uip agent guardrails list --output json
|
|
@@ -47,6 +47,8 @@ If the requested validator has `Status != "Available"` → tell the user and sto
|
|
|
47
47
|
|
|
48
48
|
**Skip this step only for deterministic guardrails** — they run locally with no backend dependency.
|
|
49
49
|
|
|
50
|
+
> **LLM as Judge also requires LLM Gateway.** If the target is `llm_as_judge`, confirm with the user that a model is configured in their LLM Gateway before proceeding. Ask the user which model ID to use for the `model` parameter — the available values depend on the LLM Gateway configuration in their tenant.
|
|
51
|
+
|
|
50
52
|
---
|
|
51
53
|
|
|
52
54
|
## Step 1 — Style Choice
|
|
@@ -337,7 +339,9 @@ On resume: **Approve** continues (with the reviewer's optional edit applied); **
|
|
|
337
339
|
|
|
338
340
|
---
|
|
339
341
|
|
|
340
|
-
## Verify Guardrails Are Actually Wired (mandatory after writing)
|
|
342
|
+
## Verify Guardrails Are Actually Wired (mandatory after writing for LangChain ML guardrails)
|
|
343
|
+
|
|
344
|
+
> **Skip this entire section for deterministic guardrails** (`UiPathDeterministicGuardrailMiddleware` / `CustomValidator`). They run inline with no adapter registration and no LLM wrapping. For deterministic guardrails, grep-verify the class name and rule keyword are present in the file — that is sufficient.
|
|
341
345
|
|
|
342
346
|
**Syntactically valid ≠ active.** Because importing from the wrong module bypasses the framework adapter and makes guardrails silently no-op (see [Imports Pattern](#imports-pattern)), `ast.parse` passing tells you nothing about whether a single guardrail will ever fire. After writing, prove the wiring at runtime.
|
|
343
347
|
|
|
@@ -379,7 +383,7 @@ For non-LangChain frameworks, there is no published adapter yet, so the decorato
|
|
|
379
383
|
6. **Respect scope and stage constraints from the docs** — each middleware class has specific allowed scopes and stages; never apply a guardrail at a scope or stage the docs say it doesn't support.
|
|
380
384
|
7. **Only add imports you use** — merge new names into any existing `from uipath_langchain.guardrails import (...)` block (LangChain) or `from uipath.platform.guardrails import (...)` block (every other framework).
|
|
381
385
|
8. **For LangChain / LangGraph agents, import guardrail symbols from `uipath_langchain.guardrails`, not `uipath.platform.guardrails`.** Both expose the same names, but only `uipath_langchain.guardrails` registers the LangChain adapter as an import side effect; without it the decorator/middleware never wraps the LLM/tool/agent and every guardrail silently no-ops with no error or log. For any other framework (LlamaIndex, OpenAI Agents, plain Python), import from `uipath.platform.guardrails` — no framework adapter is published yet. See [Imports Pattern](#imports-pattern).
|
|
382
|
-
9. **Verify wiring at runtime after writing (LangChain only)** — confirm the LangChain adapter is registered (`len(_adapters) >= 1`) and the decorated object is wrapped (`type(llm).__name__ == "_GuardedLLM"`, or `_GuardedTool` for tools). `ast.parse` is not enough; a silently-unwrapped guardrail passes syntax but never fires. For frameworks without an adapter, this wrap-check does not apply — invoke the validator directly to confirm it runs. See [Verify Guardrails Are Actually Wired](#verify-guardrails-are-actually-wired-mandatory-after-writing).
|
|
386
|
+
9. **Verify wiring at runtime after writing (LangChain only)** — confirm the LangChain adapter is registered (`len(_adapters) >= 1`) and the decorated object is wrapped (`type(llm).__name__ == "_GuardedLLM"`, or `_GuardedTool` for tools). `ast.parse` is not enough; a silently-unwrapped guardrail passes syntax but never fires. For frameworks without an adapter, this wrap-check does not apply — invoke the validator directly to confirm it runs. **For `UiPathDeterministicGuardrailMiddleware` / `CustomValidator`, skip both runtime checks — grep-verify the class name and rule keyword are present in the file instead.** See [Verify Guardrails Are Actually Wired](#verify-guardrails-are-actually-wired-mandatory-after-writing-for-langchain-ml-guardrails).
|
|
383
387
|
10. **Entity/threshold values must match the docs exactly** — use enum member names, not raw strings; use only allowed threshold values.
|
|
384
388
|
11. **Deterministic guardrails run locally** — no backend API call, no tenant availability check needed.
|
|
385
389
|
12. **Do not duplicate existing guardrails** — read the agent code first and skip if the same guardrail is already configured.
|
|
@@ -387,4 +391,4 @@ For non-LangChain frameworks, there is no published adapter yet, so the decorato
|
|
|
387
391
|
14. **`EscalateAction` must come from the fetched SDK docs** — if the docs do not expose the class or constructor parameters, stop and report that HITL guardrail escalation is not available in the current SDK docs/runtime. Never invent the class, import path, or arguments.
|
|
388
392
|
15. **`EscalateAction` requires a deployed Action App** referenced by `app_name` + `app_folder_path` and declared as an `app` resource in **`bindings.json`** — discover it with `uip solution resources list --kind App`, resolve duplicate names by folder, pass the literal name/folder in code (not env vars), and sync bindings with [../../lifecycle/bindings-reference.md](../../lifecycle/bindings-reference.md). Route the task with `TaskRecipient` when the user names a reviewer. See [Escalation action (HITL)](#escalation-action-human-in-the-loop).
|
|
389
393
|
16. **Verify the escalation app schema when tenant access is available** — the app must expose the guardrail review inputs/outputs/outcomes listed in the prerequisite section. If the schema cannot be verified in a local smoke task, say that runtime readiness is unverified.
|
|
390
|
-
17. **A HITL guardrail suspends, it doesn't block.** On violation `EscalateAction` suspends via `interrupt(CreateEscalation(...))`; it terminates **only on Reject** (Approve resumes). Verify by confirming the run suspends + a task is created — never expect a "block" for an escalation guardrail (Rule for the [verification step](#verify-guardrails-are-actually-wired-mandatory-after-writing)).
|
|
394
|
+
17. **A HITL guardrail suspends, it doesn't block.** On violation `EscalateAction` suspends via `interrupt(CreateEscalation(...))`; it terminates **only on Reject** (Approve resumes). Verify by confirming the run suspends + a task is created — never expect a "block" for an escalation guardrail (Rule for the [verification step](#verify-guardrails-are-actually-wired-mandatory-after-writing-for-langchain-ml-guardrails)).
|
|
@@ -92,7 +92,7 @@ uip maestro flow registry list --local --output json
|
|
|
92
92
|
uip maestro flow registry get "uipath.core.agent.<resourceKey>" --local --output json
|
|
93
93
|
```
|
|
94
94
|
|
|
95
|
-
The second command's `Data.Node` object is what the flow skill pastes into the flow's `definitions[]`. For the node instance shape and top-level `bindings[]` entries, see
|
|
95
|
+
The second command's `Data.Node` object is what the flow skill pastes into the flow's `definitions[]`. For the node instance shape and top-level `bindings[]` entries, see the uipath-maestro-flow skill agent-plugin reference (In-solution variant).
|
|
96
96
|
|
|
97
97
|
Without `--local`, `registry list`/`get` query the tenant registry (Orchestrator-published resources only) and will not surface the sibling project.
|
|
98
98
|
|
|
@@ -10,7 +10,7 @@ The coded agent lives as a sibling folder inside the same solution as the flow.
|
|
|
10
10
|
|
|
11
11
|
- **Agent-side scaffolding:** [embedding-in-flows.md](embedding-in-flows.md)
|
|
12
12
|
- **Wiring the agent's inputs:** [embedding-in-flows.md § Wiring the Agent's Inputs](embedding-in-flows.md#wiring-the-agents-inputs)
|
|
13
|
-
- **Flow node JSON shape + top-level `bindings[]` + `definitions[]` entry:**
|
|
13
|
+
- **Flow node JSON shape + top-level `bindings[]` + `definitions[]` entry:** uipath-maestro-flow skill, agent-plugin reference (In-solution variant)
|
|
14
14
|
|
|
15
15
|
The node-type's `{key}` is the local `resource.key` minted by `uip solution project add` (written to `resources/solution_folder/process/agent/<name>.json`) and surfaced by `uip maestro flow registry list --local`.
|
|
16
16
|
|
|
@@ -36,7 +36,7 @@ Fallback discovery paths if the deploy output is unavailable or unparseable, **t
|
|
|
36
36
|
|
|
37
37
|
If all paths return empty / 404, the deploy command's stdout JSON is authoritative — re-run the deploy and capture its output rather than chasing post-hoc discovery endpoints.
|
|
38
38
|
|
|
39
|
-
For the flow node JSON shape, see
|
|
39
|
+
For the flow node JSON shape, see the uipath-maestro-flow skill agent-plugin reference (Published variant). `model.section` is `"Published"`.
|
|
40
40
|
|
|
41
41
|
---
|
|
42
42
|
|
|
@@ -8,7 +8,6 @@ Read **only** the reference matching the selected framework. Do NOT load other f
|
|
|
8
8
|
|
|
9
9
|
| Framework | Reference |
|
|
10
10
|
|-----------|-----------|
|
|
11
|
-
| Coded Function | `../frameworks/coded-function-agents.md` + `../frameworks/agent-patterns.md` |
|
|
12
11
|
| LangGraph | `../frameworks/langgraph-integration.md` |
|
|
13
12
|
| LlamaIndex | `../frameworks/llamaindex-integration.md` |
|
|
14
13
|
| OpenAI Agents | `../frameworks/openai-agents-integration.md` |
|
|
@@ -14,7 +14,6 @@ Pick the framework before starting. The package installed in the Workflow determ
|
|
|
14
14
|
|
|
15
15
|
| Agent Type | `<FRAMEWORK_PACKAGE>` | Framework config | Guide |
|
|
16
16
|
|---|---|---|---|
|
|
17
|
-
| Coded Function | `uipath` | `uipath.json` | [coded-function-agents.md](../frameworks/coded-function-agents.md) |
|
|
18
17
|
| LangGraph | `"uipath-langchain"` | `langgraph.json` | [langgraph-integration.md](../frameworks/langgraph-integration.md) |
|
|
19
18
|
| LlamaIndex | `uipath-llamaindex` | `llama_index.json` | [llamaindex-integration.md](../frameworks/llamaindex-integration.md) |
|
|
20
19
|
| OpenAI Agents | `uipath-openai-agents` | `openai_agents.json` | [openai-agents-integration.md](../frameworks/openai-agents-integration.md) |
|
|
@@ -47,7 +47,7 @@ Use `uip codedagent <cmd>`, not `uv run uipath <cmd>`. The wrapper injects sessi
|
|
|
47
47
|
- **Auth MUST be an interactive question only when needed and values are missing.** If the session check fails and the user did not provide all of environment / organization / tenant, your ENTIRE response must be a single direct question. Do NOT wrap it in bullet points, "Next Steps" headers, or status summaries. Just ask and stop:
|
|
48
48
|
|
|
49
49
|
> What is your UiPath **environment** (cloud/staging/alpha), **organization name**, and **tenant name**?
|
|
50
|
-
- **In a flow, coded agents are referenced via the
|
|
50
|
+
- **In a flow, coded agents are referenced via the `agent` plugin (uipath-maestro-flow skill)** — node type `uipath.core.agent.{key}`, `Orchestrator.StartAgentJob`. See [flow-integration.md](flow-integration.md) for the three patterns: in-solution sibling folder, Orchestrator-published, tool resource.
|
|
51
51
|
|
|
52
52
|
## Lifecycle Stages
|
|
53
53
|
|
|
@@ -271,7 +271,7 @@ For conversational, typically general behavior and steps to respond to users. Sh
|
|
|
271
271
|
|
|
272
272
|
### User Message
|
|
273
273
|
|
|
274
|
-
For autonomous agents, templates input fields into the prompt using `{{input.fieldName}}
|
|
274
|
+
For autonomous agents, templates input fields into the prompt using `{{input.fieldName}}`, and agent resources/outputs using `@{ }` expressions (see § contentTokens Construction). For `job-attachment` fields the token renders metadata only (see § File Attachments).
|
|
275
275
|
|
|
276
276
|
```json
|
|
277
277
|
{
|
|
@@ -292,10 +292,15 @@ For conversational agents, the user-message should be ignored after initializati
|
|
|
292
292
|
|
|
293
293
|
Every message needs both `content` (string) and `contentTokens` (array). Keep them in sync.
|
|
294
294
|
|
|
295
|
+
Three token types: `simpleText`, `variable`, `expression`.
|
|
296
|
+
|
|
295
297
|
**Rules:**
|
|
296
|
-
1. Text outside `{{ }}` → `{ "type": "simpleText", "rawString": "<text>" }`
|
|
297
|
-
2. Text inside `{{ }}` → `{ "type": "variable", "rawString": "input.fieldName" }` (strip delimiters)
|
|
298
|
-
3.
|
|
298
|
+
1. Text outside `{{ }}` and `@{ }` → `{ "type": "simpleText", "rawString": "<text>" }`
|
|
299
|
+
2. Text inside `{{ }}` → `{ "type": "variable", "rawString": "input.fieldName" }` (strip delimiters; input-field reference)
|
|
300
|
+
3. Text inside `@{ }` → `{ "type": "expression", "rawString": "<expr>" }` (strip delimiters; Studio expression referencing an agent resource or output — see families below)
|
|
301
|
+
4. Every segment including whitespace gets its own entry
|
|
302
|
+
|
|
303
|
+
`@{ }` (`expression`) references an agent resource or output by family + name — `tools.<Name>`, `contexts.<Name>`, `escalations.<Name>`, or `output.<path>` — with the inner text verbatim as `rawString` (e.g. `@{contexts.Knowledge}` → `rawString: "contexts.Knowledge"`). `{{ }}` (`variable`) is for `inputSchema` fields only; `@{ }` targets are runtime-resolved and must never be declared under `inputSchema.properties`.
|
|
299
304
|
|
|
300
305
|
**Example — adjacent variables:**
|
|
301
306
|
|
|
@@ -309,9 +314,23 @@ Content: `"{{input.field1}} {{input.field2}}"`
|
|
|
309
314
|
]
|
|
310
315
|
```
|
|
311
316
|
|
|
317
|
+
**Example — resource reference (`@{ }` expression):**
|
|
318
|
+
|
|
319
|
+
Reference an agent resource by family + name, e.g. a context (`resources/<Name>/resource.json`) with `@{contexts.<Name>}`.
|
|
320
|
+
|
|
321
|
+
Content: `"Extract information from the @{contexts.Test} context"`
|
|
322
|
+
|
|
323
|
+
```json
|
|
324
|
+
"contentTokens": [
|
|
325
|
+
{ "type": "simpleText", "rawString": "Extract information from the " },
|
|
326
|
+
{ "type": "expression", "rawString": "contexts.Test" },
|
|
327
|
+
{ "type": "simpleText", "rawString": " context" }
|
|
328
|
+
]
|
|
329
|
+
```
|
|
330
|
+
|
|
312
331
|
**Common mistakes:**
|
|
313
332
|
- Forgetting to update contentTokens after editing content
|
|
314
|
-
- Including `{{` or
|
|
333
|
+
- Including `{{`/`}}` or `@{`/`}` in the rawString
|
|
315
334
|
- Missing whitespace tokens between adjacent variables
|
|
316
335
|
|
|
317
336
|
## entry-points.json
|
|
@@ -11,7 +11,7 @@ Pick this when:
|
|
|
11
11
|
|
|
12
12
|
Confirm BatchTransform is the right mode first — see [../../../../context-grounding-patterns.md](../../../../context-grounding-patterns.md).
|
|
13
13
|
|
|
14
|
-
For coded agents (Python, LangGraph) → [
|
|
14
|
+
For coded agents (Python, LangGraph) → [../../../../coded/capabilities/batch-transform/planning.md](../../../../coded/capabilities/batch-transform/planning.md).
|
|
15
15
|
|
|
16
16
|
## Inputs You Need Before Building
|
|
17
17
|
|
package/skills/uipath-agents/references/lowcode/capabilities/built-in-tools/deeprag/planning.md
CHANGED
|
@@ -11,7 +11,7 @@ Pick this when:
|
|
|
11
11
|
|
|
12
12
|
Confirm DeepRAG is the right mode first — see [../../../../context-grounding-patterns.md](../../../../context-grounding-patterns.md).
|
|
13
13
|
|
|
14
|
-
For coded agents (Python, LangGraph) → [
|
|
14
|
+
For coded agents (Python, LangGraph) → [../../../../coded/capabilities/deeprag/planning.md](../../../../coded/capabilities/deeprag/planning.md).
|
|
15
15
|
|
|
16
16
|
## Inputs You Need Before Building
|
|
17
17
|
|
|
@@ -25,6 +25,7 @@ For other context variants, see [context.md](context.md).
|
|
|
25
25
|
"description": "",
|
|
26
26
|
"contextType": "attachments",
|
|
27
27
|
"indexName": "<ContextName>", // same as name for attachments
|
|
28
|
+
"folderPath": "solution_folder",
|
|
28
29
|
"attachments": {
|
|
29
30
|
"description": "Array of files, documents, images to process."
|
|
30
31
|
},
|
package/skills/uipath-agents/references/lowcode/capabilities/guardrails/guardrails-recommend.md
CHANGED
|
@@ -227,3 +227,4 @@ If the user asks to fix identified issues: apply corrections to `agent.json`, ru
|
|
|
227
227
|
11. **Do not create separate guardrails per scope** — combine multiple scopes into a single guardrail's `scopes` array.
|
|
228
228
|
12. **All map-enum keys must exactly match the corresponding enum-list values** — no extra or missing keys. This is the most common correctness error.
|
|
229
229
|
13. **Read [guardrails.md](guardrails.md) before writing any JSON** — discriminator fields, PascalCase constraints, and parameter shapes are specified there and cannot be safely inferred.
|
|
230
|
+
14. **Do NOT use TaskCreate, TaskUpdate, or other task-tracking tools for guardrail edits.** Edit `agent.json` directly — task management tools add bookkeeping turns without benefit and push runs over their turn budget.
|
|
@@ -353,7 +353,7 @@ Requires `uip login`. The SDK resolves folder keys via Resource Catalog Service;
|
|
|
353
353
|
|
|
354
354
|
**Idempotency.** Import-only by design. First run for a binding triggers `addOrUpdateResourceToSolutionAsync` (status `Added`); subsequent runs skip the binding because its key is already in the solution. Re-running is safe and a no-op when nothing changed.
|
|
355
355
|
|
|
356
|
-
Lives in `solution-tool`, not `api-workflow-tool`. Full details in the
|
|
356
|
+
Lives in `solution-tool`, not `api-workflow-tool`. Full details in the uipath-solution skill.
|
|
357
357
|
|
|
358
358
|
## `uip is resources describe`
|
|
359
359
|
|
|
@@ -247,7 +247,7 @@ Sample for Outlook `getNewestEmail`:
|
|
|
247
247
|
|
|
248
248
|
**Heuristic:** when the stub returns empty `queryParameters`, `pathParameters`, or `bodyParameters` for a non-trivial vendor operation, it's almost certainly the bug — verified-real endpoints (CRUD operations on real objects) very rarely have zero required inputs.
|
|
249
249
|
|
|
250
|
-
Well-known folder-name shortcuts (e.g. MS Graph's `"inbox"`, `"sentitems"`, `"drafts"`) work for `parentFolderId`-style fields at runtime, but the StudioWeb FolderPicker only displays the friendly name if the value matches a real folder ID from the lookup cache. For exact UI fidelity, fetch the real ID once via `uip is resources
|
|
250
|
+
Well-known folder-name shortcuts (e.g. MS Graph's `"inbox"`, `"sentitems"`, `"drafts"`) work for `parentFolderId`-style fields at runtime, but the StudioWeb FolderPicker only displays the friendly name if the value matches a real folder ID from the lookup cache. For exact UI fidelity, fetch the real ID once via `uip is resources run list <connector-key> <object-name> --connection-id <uuid>` against the `lookup.path` (e.g. `/MailFolders`).
|
|
251
251
|
|
|
252
252
|
### Step 4 — Drop into the workflow, replace placeholders, validate
|
|
253
253
|
|
|
@@ -500,7 +500,7 @@ These are issues that surface only when a workflow is opened or run in **StudioW
|
|
|
500
500
|
}
|
|
501
501
|
}
|
|
502
502
|
```
|
|
503
|
-
- **Well-known shortcuts.** MS Graph accepts well-known folder names (`"inbox"`, `"sentitems"`, `"drafts"`) as `parentFolderId`. They run, but StudioWeb's FolderPicker only displays the friendly folder name when the value matches an ID from its lookup cache. For exact UI fidelity, fetch the real ID via `uip is resources
|
|
503
|
+
- **Well-known shortcuts.** MS Graph accepts well-known folder names (`"inbox"`, `"sentitems"`, `"drafts"`) as `parentFolderId`. They run, but StudioWeb's FolderPicker only displays the friendly folder name when the value matches an ID from its lookup cache. For exact UI fidelity, fetch the real ID via `uip is resources run list <connector-key> <object-name> --connection-id <uuid>` against the field's `lookup.path` (often `/MailFolders`, `/Folders`, etc.).
|
|
504
504
|
- **Heuristic:** when the stub returns empty `queryParameters` / `pathParameters` / `bodyParameters` for a non-trivial vendor operation, treat it as the bug. Real endpoints (CRUD on real objects, list-with-filters operations) almost never have zero required inputs.
|
|
505
505
|
- **Upstream:** the stub IS surfacing the metadata it has — `metadata.configuration` contains the full `inputFields` list — so this is a CLI-side fix where the stub should populate defaults/placeholders from `required: true` fields, not a missing-data issue. Until that ships, the cross-check is mandatory per skill rule 16 step 4.
|
|
506
506
|
- **See also:** [connector-activity-discovery.md — Required-field cross-check](connector-activity-discovery.md#required-field-cross-check--the-stub-drops-required-true-request-fields).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: uipath-automation-discovery
|
|
3
|
-
description: "UiPath automation discovery — mines Slack/email/wikis/CRM/HRIS/ERP for repetitive work, SPOFs, and replicable models; produces a 4-tier prioritized opportunity report with UiPath implementation paths. Use to discover automation opportunities, find what to automate, or run an internal automation audit across an organization. For building a specific automation→uipath-rpa, authoring a Flow→uipath-maestro-flow, working with agents→uipath-agents."
|
|
3
|
+
description: "UiPath automation discovery — mines Slack/email/wikis/CRM/HRIS/ERP for repetitive work, SPOFs, and replicable models; produces a 4-tier prioritized opportunity report with UiPath implementation paths, then sizes build effort (complexity band → pack-hours → contingency). Use to discover automation opportunities, find what to automate, estimate/size a delivery, or run an internal automation audit across an organization. For building a specific automation→uipath-rpa, authoring a Flow→uipath-maestro-flow, working with agents→uipath-agents."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Automation Discovery
|
|
@@ -15,6 +15,7 @@ UiPath-ready backlog with recommended implementation paths.
|
|
|
15
15
|
- User wants to **find manual work to automate** and build a UiPath implementation backlog
|
|
16
16
|
- User asks "what should we automate?" while working with UiPath tools
|
|
17
17
|
- User wants an **internal automation audit** to feed into UiPath Automation Hub or a UiPath pipeline
|
|
18
|
+
- User asks to **estimate / size / cost** discovered opportunities — pack-hours, delivery effort, complexity bands, contingency
|
|
18
19
|
- User explicitly invokes `/uipath-automation-discovery`
|
|
19
20
|
|
|
20
21
|
## Critical Rules
|
|
@@ -24,6 +25,7 @@ UiPath-ready backlog with recommended implementation paths.
|
|
|
24
25
|
3. **Verify access before mining.** Test each data source with a minimal read-only operation. If access fails, note it and move on — don't block discovery.
|
|
25
26
|
4. **Evidence over opinion.** Every opportunity (Tiers 1-3) must cite a specific source, quantitative metric, and affected role or team. No unsupported claims. If a source yields fewer than 5 signals, mark all findings from that source as low-confidence. Do not promote low-confidence findings above Tier 3, except per Rule 5.
|
|
26
27
|
5. **Replication is always Tier 1.** A proven model backed by a working automation that could replicate elsewhere is the highest-value finding — this overrides Rule 4's Tier 3 cap. If the replicable model's source has fewer than 5 signals, classify as Tier 1 with a low-confidence flag until corroborated by a second source. Always lead with replicable models. Never skip the replicable-model search (Phase 2C).
|
|
28
|
+
6. **Never invent pack-hours or complexity thresholds (Phase 4.5).** When estimating build effort, the band→hours numbers and matrix thresholds come from the user-supplied Core RPA / Agentic complexity matrices and Pack-Hours catalogue. Do NOT recall or fabricate them — if they are not supplied, STOP and ask. Adjustment-factor and contingency percentages are `[CALIBRATE]` defaults the user confirms against actuals. Fabricated numbers recreate the estimation error this phase exists to prevent.
|
|
27
29
|
|
|
28
30
|
## Workflow Overview
|
|
29
31
|
|
|
@@ -33,6 +35,7 @@ Phase 1: MINE → Gather raw data from all verified sources
|
|
|
33
35
|
Phase 2: ANALYZE → Extract patterns, SPOFs, replicable models, gaps
|
|
34
36
|
Phase 3: REFLECT → Layer on business strategy for strategic gaps
|
|
35
37
|
Phase 4: REPORT → Produce prioritized report with 4 tiers
|
|
38
|
+
Phase 4.5: ESTIMATE→ Size build effort (band → pack-hours → contingency) — on request
|
|
36
39
|
Phase 5: HANDOFF → Map opportunities to UiPath implementation skills
|
|
37
40
|
```
|
|
38
41
|
|
|
@@ -189,6 +192,25 @@ tier definitions, evidence standards, and platform-specific guidance.
|
|
|
189
192
|
- ROI benchmarks from existing projects included
|
|
190
193
|
- Strategic analysis ties to real financials
|
|
191
194
|
|
|
195
|
+
## Phase 4.5: ESTIMATE (optional — on request)
|
|
196
|
+
|
|
197
|
+
Run only when the user wants build-effort sizing (pack-hours, delivery
|
|
198
|
+
estimate, complexity bands, contingency). Sizes each prioritized opportunity:
|
|
199
|
+
opportunity → complexity band → pack-hours → adjustment factors → contingency →
|
|
200
|
+
total. This is delivery/pre-sales sizing — distinct from the ROI/hours-saved
|
|
201
|
+
impact already in the report.
|
|
202
|
+
|
|
203
|
+
The band→hours numbers and matrix thresholds are **authoritative references the
|
|
204
|
+
user supplies** (Core RPA + Agentic complexity matrices, Pack-Hours catalogue) —
|
|
205
|
+
never invented (Critical Rule 6). Ask for them if absent. The method adds the
|
|
206
|
+
pieces that were missing: an above-ceiling/decompose rule (>7 apps / >8
|
|
207
|
+
variations), a multi-entity redeploy factor, an existing-automation rebuild
|
|
208
|
+
discount, confidence-tiered contingency, and one unified band→hours mapping that
|
|
209
|
+
resolves the Tool vs Process-Automation grain.
|
|
210
|
+
|
|
211
|
+
See [references/estimation-guide.md](references/estimation-guide.md) and
|
|
212
|
+
[assets/templates/estimation-worksheet-template.md](assets/templates/estimation-worksheet-template.md).
|
|
213
|
+
|
|
192
214
|
## Phase 5: HANDOFF
|
|
193
215
|
|
|
194
216
|
Map each Tier 1-2 opportunity to a UiPath implementation path. Add a
|
|
@@ -223,6 +245,7 @@ each phase with a brief summary and ask if the user wants to adjust scope.
|
|
|
223
245
|
- [references/intake-guide.md](references/intake-guide.md) — Phase 0 detailed steps (company context, tool inventory, access verification, privacy)
|
|
224
246
|
- [references/mining-guide.md](references/mining-guide.md) — Per-source search guidance (load during Phase 1)
|
|
225
247
|
- [references/report-template.md](references/report-template.md) — Output structure, tier definitions, and evidence standards (load during Phase 4)
|
|
248
|
+
- [references/estimation-guide.md](references/estimation-guide.md) — Estimation accelerator: opportunity → band → pack-hours → contingency (load during Phase 4.5, on request)
|
|
226
249
|
|
|
227
250
|
## Anti-patterns
|
|
228
251
|
|
|
@@ -232,3 +255,5 @@ each phase with a brief summary and ask if the user wants to adjust scope.
|
|
|
232
255
|
- **Promising ROI without source citations.** Every ROI estimate must reference an existing project benchmark or explicit data point.
|
|
233
256
|
- **Skipping the replicable-model search.** The highest-value findings are always proven models that can replicate. Never skip Phase 2C.
|
|
234
257
|
- **Speculating from insufficient evidence.** Below signal threshold → mark low confidence. Insufficient evidence → don't promote to Tier 1-3.
|
|
258
|
+
- **Fabricating pack-hours or matrix thresholds (Phase 4.5).** The band→hours numbers are authoritative user-supplied references. Guessing them recreates the estimation error the accelerator exists to prevent — stop and ask for the catalogue and matrices.
|
|
259
|
+
- **Clamping oversized opportunities at "High".** A cluster over the matrix ceiling (>7 apps / >8 variations) must be decomposed and summed, not sized as a single "High" unit — this was the largest source of under-estimation.
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Estimation Worksheet — <ENGAGEMENT / CUSTOMER>
|
|
2
|
+
|
|
3
|
+
Generated by: uipath-automation-discovery
|
|
4
|
+
|
|
5
|
+
> **Numbers below marked `[FROM CATALOGUE]` come from the user-supplied
|
|
6
|
+
> Pack-Hours catalogue and complexity matrices — never invented.** Values marked
|
|
7
|
+
> `[CALIBRATE]` are default assumptions to confirm against actuals before the
|
|
8
|
+
> estimate is treated as final. See
|
|
9
|
+
> [references/estimation-guide.md](../../references/estimation-guide.md).
|
|
10
|
+
|
|
11
|
+
## 1. Sources
|
|
12
|
+
|
|
13
|
+
| Artifact | Provided? | Reference / path |
|
|
14
|
+
|---|---|---|
|
|
15
|
+
| Opportunity register | | <path or Phase 4 report> |
|
|
16
|
+
| Core RPA complexity matrix | | <path> |
|
|
17
|
+
| Agentic complexity matrix | | <path> |
|
|
18
|
+
| Pack-Hours catalogue | | <path> |
|
|
19
|
+
| Benchmark (Delivery Summary) | | <path, if any> |
|
|
20
|
+
|
|
21
|
+
## 2. Unified band→hours mapping
|
|
22
|
+
|
|
23
|
+
Filled from the Pack-Hours catalogue. One row per band × grain.
|
|
24
|
+
|
|
25
|
+
| Complexity band | Grain | Core RPA hours | Agentic add-on hours | Catalogue source |
|
|
26
|
+
|---|---|---|---|---|
|
|
27
|
+
| Simple | Process-Automation | `[FROM CATALOGUE]` | `[FROM CATALOGUE]` | <ref> |
|
|
28
|
+
| Simple | Tool | `[FROM CATALOGUE]` | — | <ref> |
|
|
29
|
+
| Medium | Process-Automation | `[FROM CATALOGUE]` | `[FROM CATALOGUE]` | <ref> |
|
|
30
|
+
| Medium | Tool | `[FROM CATALOGUE]` | — | <ref> |
|
|
31
|
+
| High | Process-Automation | `[FROM CATALOGUE]` | `[FROM CATALOGUE]` | <ref> |
|
|
32
|
+
| High | Tool | `[FROM CATALOGUE]` | — | <ref> |
|
|
33
|
+
|
|
34
|
+
## 3. Per-opportunity estimate
|
|
35
|
+
|
|
36
|
+
| # | Opportunity | Grain | Band | Base hours (source) | Redeploy factor | Rebuild discount | Confidence | Contingency % | Total hours |
|
|
37
|
+
|---|---|---|---|---|---|---|---|---|---|
|
|
38
|
+
| 1 | <name> | <Process / Tool> | <band> | <hrs> (`[FROM CATALOGUE]`) | <×N entities> | <−%> | <H/M/L> | `[CALIBRATE]` | <total> |
|
|
39
|
+
| 2 | | | | | | | | | |
|
|
40
|
+
|
|
41
|
+
Show the math per row: `total = (base ± factors) × (1 + contingency)`.
|
|
42
|
+
|
|
43
|
+
## 4. Above-ceiling decomposition log
|
|
44
|
+
|
|
45
|
+
For any opportunity > 7 apps or > 8 variations, decomposed and summed.
|
|
46
|
+
|
|
47
|
+
| Parent opportunity | Trigger (apps / variations) | Sub-unit | Grain | Band | Hours |
|
|
48
|
+
|---|---|---|---|---|---|
|
|
49
|
+
| <name> | <e.g. 11 apps> | <sub-automation> | <grain> | <band> | <hrs> |
|
|
50
|
+
| | | <sub-automation> | | | |
|
|
51
|
+
| | | **Parent subtotal** | | | <sum> |
|
|
52
|
+
|
|
53
|
+
## 5. Calibration register
|
|
54
|
+
|
|
55
|
+
Every assumption the user must confirm before the estimate is final.
|
|
56
|
+
|
|
57
|
+
| Assumption | Default used | Confirmed value | Basis |
|
|
58
|
+
|---|---|---|---|
|
|
59
|
+
| Multi-entity redeploy increment | `[CALIBRATE ~15-30%]` per extra entity | | |
|
|
60
|
+
| Existing-automation rebuild discount | `[CALIBRATE ~20-40%]` | | |
|
|
61
|
+
| Contingency — High confidence | `[CALIBRATE ~10-15%]` | | |
|
|
62
|
+
| Contingency — Medium confidence | `[CALIBRATE ~20-30%]` | | |
|
|
63
|
+
| Contingency — Low confidence | `[CALIBRATE ~40%+]` | | |
|
|
64
|
+
|
|
65
|
+
## 6. Scenario roll-up
|
|
66
|
+
|
|
67
|
+
| Scenario | Assumptions | Portfolio total (h) |
|
|
68
|
+
|---|---|---|
|
|
69
|
+
| Option 1 — conservative full-build | no decomposition reuse, high contingency | <sum> |
|
|
70
|
+
| Option 2 — decomposition + reuse + redeploy | rebuild discount + redeploy factor applied | <sum> |
|
|
71
|
+
|
|
72
|
+
## 7. Benchmark reconciliation (if a benchmark exists)
|
|
73
|
+
|
|
74
|
+
| Line | Hours |
|
|
75
|
+
|---|---|
|
|
76
|
+
| This worksheet (chosen scenario) | <sum> |
|
|
77
|
+
| Benchmark (Delivery Summary) | <hrs> |
|
|
78
|
+
| **Delta** | <diff> |
|
|
79
|
+
|
|
80
|
+
**Delta drivers:** <attribute each material gap to a band, factor, or decomposition decision>
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# Estimation Accelerator
|
|
2
|
+
|
|
3
|
+
Size the **build effort** of a prioritized opportunity register: opportunity →
|
|
4
|
+
complexity band → pack-hours → adjustment factors → contingency → total. Runs
|
|
5
|
+
after Phase 4 (the report already carries the register + per-opportunity
|
|
6
|
+
confidence). This is delivery/pre-sales sizing, not the ROI/hours-saved impact
|
|
7
|
+
in the report.
|
|
8
|
+
|
|
9
|
+
Load when the user asks to estimate, size, cost, or produce pack-hours /
|
|
10
|
+
effort / a delivery estimate for discovered opportunities.
|
|
11
|
+
|
|
12
|
+
## Hard rule — never invent pack-hours
|
|
13
|
+
|
|
14
|
+
The band→hours numbers and the complexity-matrix thresholds are **authoritative
|
|
15
|
+
UiPath references the user supplies** — the Core RPA complexity matrix, the
|
|
16
|
+
Agentic complexity matrix, and the Pack-Hours catalogue. Do NOT recall,
|
|
17
|
+
approximate, or fabricate them. Unverified numbers are the exact failure this
|
|
18
|
+
accelerator exists to prevent.
|
|
19
|
+
|
|
20
|
+
1. If the user has not supplied the Pack-Hours catalogue and the complexity
|
|
21
|
+
matrices, STOP and ask for them (file paths or pasted tables). Do not
|
|
22
|
+
proceed with guessed hours.
|
|
23
|
+
2. Every band→hours value written to the worksheet cites its catalogue source.
|
|
24
|
+
3. Adjustment-factor and contingency percentages below are **not** authoritative
|
|
25
|
+
— they are `[CALIBRATE]` defaults the user tunes against the org's actuals
|
|
26
|
+
before the estimate is final.
|
|
27
|
+
4. Show the math for every opportunity (base → factors → contingency → total)
|
|
28
|
+
so each number is auditable.
|
|
29
|
+
|
|
30
|
+
## Inputs
|
|
31
|
+
|
|
32
|
+
| Input | Source | Notes |
|
|
33
|
+
|---|---|---|
|
|
34
|
+
| Opportunity register | Phase 4 report, or user `.xlsx` | Per opportunity: apps touched, variations / decision points, data & exception complexity, agentic vs deterministic, rebuild-of-existing?, deploy entity count |
|
|
35
|
+
| Core RPA complexity matrix | **User-supplied** | Band thresholds (apps, variations, data, exceptions) |
|
|
36
|
+
| Agentic complexity matrix | **User-supplied** | Band thresholds for reasoning steps, tools, autonomy, HITL |
|
|
37
|
+
| Pack-Hours catalogue | **User-supplied** | Band × grain → hours |
|
|
38
|
+
| Benchmark (optional) | Delivery Summary / official estimate | For reconciliation |
|
|
39
|
+
|
|
40
|
+
## Procedure — per opportunity
|
|
41
|
+
|
|
42
|
+
1. **Determine grain.** Is the unit a **Process-Automation** (end-to-end
|
|
43
|
+
process) or a **Tool** (reusable component / pack invoked by processes)?
|
|
44
|
+
Price at the matching grain — a decomposed sub-unit is often Tool-grain.
|
|
45
|
+
Grain ambiguity was a root cause of the estimate divergence; resolve it
|
|
46
|
+
explicitly and record it.
|
|
47
|
+
2. **Classify complexity** on the matrix dimensions: deterministic RPA work →
|
|
48
|
+
Core RPA matrix; agentic/reasoning components → Agentic matrix. A hybrid
|
|
49
|
+
opportunity carries both a Core RPA band and an Agentic add-on.
|
|
50
|
+
3. **Assign band** (Simple / Medium / High) from the matrix — unless the
|
|
51
|
+
above-ceiling rule fires.
|
|
52
|
+
4. **Above-ceiling / decompose rule.** If an opportunity exceeds the matrix
|
|
53
|
+
ceiling — **> 7 applications OR > 8 variations / decision points** — do NOT
|
|
54
|
+
clamp it to "High". Decompose into sub-automations (by sub-process or
|
|
55
|
+
application cluster), classify and size each at its own grain, and sum.
|
|
56
|
+
Record the decomposition. Clamping oversized clusters at "High" is the
|
|
57
|
+
single largest source of under-estimation — this rule is the primary fix.
|
|
58
|
+
5. **Map band → base pack-hours** from the supplied catalogue at the resolved
|
|
59
|
+
grain. Cite the catalogue row.
|
|
60
|
+
6. **Apply adjustment factors** (`[CALIBRATE]` defaults — confirm against
|
|
61
|
+
actuals):
|
|
62
|
+
- **Multi-entity redeploy:** same automation deployed across N legal
|
|
63
|
+
entities / regions → do NOT count each as a full build. `base + (N-1) ×
|
|
64
|
+
[CALIBRATE ~15-30%] × base` per additional entity; raise it when per-entity
|
|
65
|
+
localization or regulatory variation is significant.
|
|
66
|
+
- **Existing-automation rebuild discount:** rebuilding / migrating an
|
|
67
|
+
automation that already exists (known logic, documented process) →
|
|
68
|
+
`[CALIBRATE ~20-40%]` reduction vs greenfield, scaled by reuse and
|
|
69
|
+
documentation quality.
|
|
70
|
+
7. **Add confidence-tiered contingency**, keyed to the opportunity's discovery
|
|
71
|
+
confidence: High `[CALIBRATE ~10-15%]`, Medium `[~20-30%]`, Low / ambiguous
|
|
72
|
+
scope / unknown systems `[~40%+]`.
|
|
73
|
+
8. **Total** = (base ± factors) × (1 + contingency). Write base, each factor,
|
|
74
|
+
contingency, and total to the worksheet.
|
|
75
|
+
|
|
76
|
+
## Unified band→hours mapping (ask #3)
|
|
77
|
+
|
|
78
|
+
Replace the disconnected matrix-image + catalogue pair with one table so band,
|
|
79
|
+
grain, and hours live together. Fill values from the user's catalogue:
|
|
80
|
+
|
|
81
|
+
| Complexity band | Grain | Core RPA hours | Agentic add-on hours | Catalogue source |
|
|
82
|
+
|---|---|---|---|---|
|
|
83
|
+
| Simple | Process-Automation | `[FROM CATALOGUE]` | `[FROM CATALOGUE]` | `<ref>` |
|
|
84
|
+
| Simple | Tool | `[FROM CATALOGUE]` | — | `<ref>` |
|
|
85
|
+
| Medium | … | … | … | … |
|
|
86
|
+
| High | … | … | … | … |
|
|
87
|
+
| Above-ceiling | (decompose) | sum of sub-units | sum of sub-units | — |
|
|
88
|
+
|
|
89
|
+
## Scenarios & reconciliation
|
|
90
|
+
|
|
91
|
+
- Produce ≥ 2 scenarios (e.g. **Option 1** conservative full-build; **Option 2**
|
|
92
|
+
with decomposition + rebuild discount + redeploy factor applied). The source
|
|
93
|
+
engagement delivered three (16.2k / 12.1k / 10.7k h) — the spread comes from
|
|
94
|
+
these factors, not from different base numbers.
|
|
95
|
+
- When a benchmark estimate exists, reconcile the portfolio total against it and
|
|
96
|
+
attribute each material delta to a band, factor, or decomposition decision.
|
|
97
|
+
|
|
98
|
+
## Output
|
|
99
|
+
|
|
100
|
+
Use [assets/templates/estimation-worksheet-template.md](../assets/templates/estimation-worksheet-template.md):
|
|
101
|
+
per-opportunity estimate table, the unified band→hours mapping, the
|
|
102
|
+
decomposition log, the calibration register (every `[CALIBRATE]` value awaiting
|
|
103
|
+
confirmation), and the scenario roll-up. Append an **Estimation** section to the
|
|
104
|
+
Phase 4 report, or emit a standalone worksheet.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: uipath-connector-builder
|
|
3
|
-
description: "UiPath Integration Service connector authoring (REST+JSON) on disk via `uip is connectors builder`. Triggers on `element.json`, `element-metadata.json`, `standard-resources/*.json`, a `periodic-uipath-*`/`periodic-design-*` connector repo, or any request to build/edit an IS connector: init the connector shell, configure auth (
|
|
3
|
+
description: "UiPath Integration Service connector authoring (REST+JSON) on disk via `uip is connectors builder`. Triggers on `element.json`, `element-metadata.json`, `standard-resources/*.json`, a `periodic-uipath-*`/`periodic-design-*` connector repo, or any request to build/edit an IS connector: init the connector shell, configure auth (19 types via `auth set`, incl. jwtOauth claims, FPS, none), add activities with fields/params/methods/hooks, wire polling/webhook triggers, add auth-system resources, inspect, validate, and surgically read/write files via state. Import + publish live on the parent `uip is connectors` (need `uip login`). NOT for operating a published connector — connections, ping, run an activity→uipath-platform; NOT for `.flow` connector nodes→uipath-maestro-flow."
|
|
4
4
|
allowed-tools: Bash, Read, Write, Edit, Glob, Grep, AskUserQuestion
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -25,7 +25,7 @@ Author UiPath Integration Service connectors on disk with `uip is connectors bui
|
|
|
25
25
|
3. **`auth set` owns all authentication.** It writes the config entries, `authentication.type` / `typeOauth` / `authenticationTypes`, and the token-refresh resource in one call. Define scopes here too (`--scope`, `--scope-options`, `--required-scopes`, `--preselected-scopes`) — there is no separate scope command. `init --auth oauth2|customApiKey` is inline sugar for the create-time common case; everything else goes through `auth set`. Never hand-roll auth via `state patch`.
|
|
26
26
|
4. **`activity create` writes both sides in one call** — the standard-resource file AND one `element.json` entry per method. Re-running on an existing activity appends/merges. Pass `--skip-sr` (or use `auth system create`) only for system resources that need no SR file. Model `GETBYID`/`PATCH`/`PUT`/`DELETE` only for TRUE by-id endpoints — never for search. The `/{primaryKey}` path param is added automatically: ALWAYS for `GETBYID`, and for `PATCH`/`PUT`/`DELETE` only when the activity is CRUD (it also has a `GET`/`GETBYID`); a write-only/action activity keeps its base path.
|
|
27
27
|
5. **`state patch` REPLACES the whole node at a pointer (no merge).** To change one field: `state query` the entry, edit it, then `state patch` the COMPLETE object back. `element-metadata.json` has no addressable sub-paths — round-trip the whole file. Activity paths in pointers are URL-encoded: `/contacts` → `%2Fcontacts`. Use the dedicated authoring verbs for creation, not `state patch`.
|
|
28
|
-
6. **Connector targeting.** Builder verbs walk up from the cwd, then scan immediate subdirectories —
|
|
28
|
+
6. **Connector targeting.** Builder verbs walk up from the cwd, then scan immediate subdirectories, then fall back to the `.uip-connector.json` marker `init` writes in the directory it ran from — so follow-up commands from that same directory hit the last-init connector automatically, even next to other connector dirs. Pass `--connector-dir <PATH>` to override or when working from elsewhere. `import` reads `--connector-dir` the same way (the connector root holding `app/element/element.json`); on `download` it instead names the OUTPUT directory to write the pulled connector into. **Exception — `init` does NOT scan subdirectories** (it would otherwise resolve a SIBLING connector and silently EDIT/rename it): to CREATE, run `init` from a fresh/empty directory (a dir that merely *contains* connector subdirs — e.g. `/tmp` — creates a new connector, it will not dive into a child to edit it); to EDIT, run from inside the connector or pass `--connector-dir`.
|
|
29
29
|
7. **Output is the `{Result, Code, Data}` envelope.** Add `--output json` to parse it. Failures exit non-zero. Never suppress stderr.
|
|
30
30
|
8. **`import` / `download` / `publish` — and `init` when CREATING — need `uip login`.** Authenticate before any tenant pull/push. A NEW connector's key `design-{org}-{slug}` takes its org from your logged-in session, so `init` create ERRORS when you're not logged in. Let it derive the org; do NOT pass a guessed `--organization` (a wrong org bakes into the key and only surfaces, mismatched, at import/publish) — `--organization <slug>` is only for offline/CI builds with a known org.
|
|
31
31
|
9. **Never echo, log, or hard-code a secret.** Secret config keys (client secret, API key, password, token) are written by `auth set` ENCRYPTED (`encrypt: true`) — most as `PASSWORD` fields, though some (OAuth tokens, a service-account JSON) are encrypted `TEXTFIELD`/`TEXTAREA`. End users supply real credentials at connection time; the connector holds only the auth TYPE + endpoint URLs + scopes. Use placeholders in every example command.
|
|
@@ -39,6 +39,7 @@ Decide how each per-connection value reaches the request BEFORE scaffolding —
|
|
|
39
39
|
- **One config drives the host — not three URLs.** When the base, token, and authorize hosts share a per-connection part (an instance name, region, datacenter, or workspace), surface ONE config and template it into every URL: `init --base-url 'https://{instance}.../api'` + `auth set --token-url 'https://{instance}.../token' --authorization-url 'https://{instance}.../authorize'`. The CLI auto-seeds a single fillable `{instance}` field that resolves all three ([references/configuration.md](references/configuration.md) §Templated hosts). Do NOT expose `base.url`/`oauth.token.url`/`oauth.authorization.url` as separate connection fields.
|
|
40
40
|
- **Open value → TEXTFIELD; fixed set → COMBO.** A free-form instance/workspace/account name is the auto-seeded templated TEXTFIELD — that is a legitimate, common shape, not a smell. Only a genuinely fixed datacenter/environment list becomes a COMBO (`state patch` the seeded entry to `type:COMBO` with `options`, whose `value` can be the host fragment itself).
|
|
41
41
|
- **Derive or discover before you ask.** If a per-connection value (the API host, an org/account id) is returned in the token response or is discoverable via an authenticated call, capture it instead of adding a manual field — but ONLY when it is genuinely needed AND obtainable; a single templated config is the simpler default, so don't over-engineer discovery where a plain field suffices. Token-response host → a `postRequest` hook that validates (https + allowlisted host, never log the token) and persists via `done({configuration})` — recipe: [references/hooks.md](references/hooks.md) §"Pattern: base URL …". Discoverable id → an `onProvision` system resource that calls the lookup at connection time ([references/system-resources.md](references/system-resources.md)).
|
|
42
|
+
- **User-facing configs need guidance.** Every `configScreenType:"pre"` or `"pre-optional"` field should have `hintText` with an example or where to find the value. give every visible connection-form field a hint (`validate` does not currently check this) for instance/workspace IDs, tenant hosts, and token-type-specific credentials.
|
|
42
43
|
- **Multi-datacenter OAuth:** the accounts/token host itself varies by region — template the region config into `--token-url`/`--authorization-url` too, not just the base URL.
|
|
43
44
|
|
|
44
45
|
## Workflows
|
|
@@ -117,6 +118,7 @@ uip is connectors builder validate
|
|
|
117
118
|
|
|
118
119
|
### Customize a curated activity
|
|
119
120
|
`activity create` auto-curates every method into a standalone Studio activity by default (opt out with `--no-curate`). Use `method curate` only to override the generated name/displayName, or to curate a `--no-curate` method.
|
|
121
|
+
Generic CRUD activities are always present separately from curated activities: List/Get/Create/Update/Delete Records let the user choose any object that supports that method. Do not remove them or report them as pollution when you add a curated/list-capable object; author the curated service action alongside the generic object picker.
|
|
120
122
|
```bash
|
|
121
123
|
uip is connectors builder activity method curate --resource cases --method GET \
|
|
122
124
|
--display-name 'Get Support Request'
|
|
@@ -134,7 +136,7 @@ uip is connectors builder state patch element.json/configuration/oauth.token.url
|
|
|
134
136
|
--value '<full entry from the query above, with defaultValue corrected>'
|
|
135
137
|
uip is connectors builder validate
|
|
136
138
|
```
|
|
137
|
-
For a
|
|
139
|
+
For a base URL or id derived at connection time: use a token-response `postRequest` hook when the value is returned by the token call, or an `onProvision` system resource when it must be discovered after auth. Validate the value, then persist it with `done({configuration})` — NOT `state patch`, which baking-time-edits one connection's value into every connection. Full recipe: [references/hooks.md](references/hooks.md) §"Pattern: base URL …"; investigation checklists: [references/debugging.md](references/debugging.md).
|
|
138
140
|
|
|
139
141
|
## Command Map
|
|
140
142
|
|
|
@@ -171,7 +173,7 @@ Depth lives in `references/` — each self-contained. SKILL.md owns the workflow
|
|
|
171
173
|
| element.json internals: top-level fields, resources[], parameters[], value interpolation, hook order | [references/element-json.md](references/element-json.md) |
|
|
172
174
|
| Standard-resource files: linking, metadata.method, curated, fields (visibility/design/searchable) | [references/standard-resources.md](references/standard-resources.md) |
|
|
173
175
|
| configuration[] entries: widget types, screen types, per-auth key sets, pagination + event keys | [references/configuration.md](references/configuration.md) |
|
|
174
|
-
| Authentication setup: all
|
|
176
|
+
| Authentication setup: all 19 auth types (incl. JWT Bearer claims, FPS, none) and the OAuth/JWT scope surface | [references/auth.md](references/auth.md) |
|
|
175
177
|
| Auth-system resources: auth-validation, onProvision/onDelete, OAuth token overrides | [references/system-resources.md](references/system-resources.md) |
|
|
176
178
|
| When to write a hook vs use a built-in (decision table + good/avoidable patterns), execution order, context vars, done(), naming | [references/hooks.md](references/hooks.md) |
|
|
177
179
|
| Polling and webhook triggers: config keys, event.poller.configuration schema | [references/events.md](references/events.md) |
|