From uipath
Use when diagnosing UiPath platform & process issues - failed jobs, faulted queue items, publish errors, selector failures, healing agent issues, permission problems, or any automation error.
npx claudepluginhub uipath/skills --plugin uipathThis skill uses the workspace's default tool permissions.
You orchestrate a hypothesis-driven diagnostic investigation. You manage the loop, delegate to sub-agents, and present findings to the user.
agents/depth-verifier.mdagents/hypothesis-generator.mdagents/hypothesis-tester.mdagents/presenter.mdagents/scope-checker.mdagents/shared.mdagents/triage.mdreferences/GUIDE.mdreferences/activity-packages/system-activities/investigation_guide.mdreferences/activity-packages/system-activities/overview.mdreferences/activity-packages/system-activities/playbooks/get-asset-activity-bug-silent-failure.mdreferences/activity-packages/system-activities/playbooks/get-asset-external-vault-failure.mdreferences/activity-packages/system-activities/playbooks/get-asset-folder-scope-mismatch.mdreferences/activity-packages/system-activities/playbooks/get-asset-network-connectivity.mdreferences/activity-packages/system-activities/playbooks/get-asset-not-found.mdreferences/activity-packages/system-activities/playbooks/get-asset-per-robot-no-value.mdreferences/activity-packages/system-activities/playbooks/get-asset-permission-denied.mdreferences/activity-packages/system-activities/playbooks/get-asset-robot-not-authenticated.mdreferences/activity-packages/system-activities/playbooks/get-asset-wrong-activity-type.mdreferences/activity-packages/system-activities/presentation.mdMandates invoking relevant skills via tools before any response in coding sessions. Covers access, priorities, and adaptations for Claude Code, Copilot CLI, Gemini CLI.
Share bugs, ideas, or general feedback.
You orchestrate a hypothesis-driven diagnostic investigation. You manage the loop, delegate to sub-agents, and present findings to the user.
All agents (including you) follow the invariants and confidence-level behavior defined in agents/shared.md.
AskUserQuestion. Do not proceed until the user responds.All state lives in .investigation/ (relative to working directory). Schemas in schemas/.
| File | Purpose | Writers |
|---|---|---|
state.json | Scope, phase, matched playbooks | triage, orchestrator |
hypotheses.json | All hypotheses + status | generator, tester, orchestrator |
evidence/*.json | Interpreted summaries | triage, tester |
raw/*.json | Full raw CLI/API responses | triage, tester |
scope-check.json | Domain expansion verdict | scope-checker |
depth-check.json | Depth-gate verdict on confirmed root causes | depth-verifier |
Sub-agents write raw responses to raw/ immediately and don't keep them in context. You read evidence summaries, not raw files.
Update state.json.phase at each transition:
| Phase | Entry condition | Next |
|---|---|---|
triage | User describes problem (or new data arrives) | hypotheses |
hypotheses | Triage complete, playbooks matched | test |
test | Hypotheses ready, testing next in confidence order | evaluate |
evaluate | Tester returns verdict | deepen, test, or depth_check |
deepen | Confirmed symptom needs sub-hypotheses | hypotheses (re-invoke generator) |
depth_check | Hypothesis confirmed as root cause | resolution (verified), test (one re-round), or needs_input |
resolution | Depth check verified, or all hypotheses exhausted | complete |
complete | Findings presented to user | — |
Spawn triage sub-agent (agents/triage.md). Pass the user's problem description as-is — do NOT pre-classify or constrain scope.
Triage sanity gate: Read triage evidence and verify it relates to the user's reported problem. If it's about a different process/queue/entity: discard, inform the user, re-spawn or ask for clarification.
Scope check: Spawn scope-checker (agents/scope-checker.md). If missing domains found, use AskUserQuestion to ask the user whether to expand. If approved, re-spawn triage with the missing domains. If unnecessary domains found, remove them from state.json.scope.domain.
User input: If triage returned needs_user_input: true, present the question via AskUserQuestion. When the user responds, continue the existing triage agent via SendMessage (the agent result includes the agent ID) — do NOT spawn a fresh triage agent. A fresh spawn re-reads all instructions and re-discovers everything from scratch. Only re-spawn triage if the user's answer fundamentally changes scope (different product, different entity type).
Never skip the hypothesis loop. Even if the triage evidence looks conclusive, always proceed through GENERATE → TEST → EVALUATE. Triage classifies and gathers data — it does not determine root causes. A "clear" error message may have a non-obvious underlying cause that only the hypothesis-test cycle would surface.
Spawn hypothesis generator (agents/hypothesis-generator.md). Behavior varies by confidence level per the table in shared.md.
Test every hypothesis sequentially (highest confidence first). For each, spawn hypothesis tester (agents/hypothesis-tester.md).
Validate: Reject and re-spawn if elimination_checks are missing/incomplete. For medium/low, also reject if execution_path_traced has unverified downstream entities.
Reactive scope check: If evidence references entities/errors from an out-of-scope domain, spawn scope-checker. Otherwise skip.
Classify and act:
trigger: "deepening" and parent_hypothesis.trigger: "scope_adjustment" and eliminated IDs to produce from medium/low + docsai.Spawn the depth-verifier sub-agent (agents/depth-verifier.md). Pass it the
confirmed hypothesis ID(s), state.json path, and the matched playbook path.
The verifier reads hypotheses.json, the playbook's ## Causes and
## Resolution sections, and the evidence files, then writes
.investigation/depth-check.json with one of:
verdict: "verified" — the confirmed hypothesis names a specific cause
from the playbook, has cause-specific evidence (not just symptom-level),
and recommends the matching resolution branch. Proceed to Resolution.verdict: "shallow" — one or more depth dimensions are missing.
Inspect gaps. Each gap is classified kind: "factual" or
kind: "textual" by the depth-verifier. Routing rule:
kind: "factual" — spawn ONE additional
hypothesis-tester round on the same hypothesis to gather the
missing evidence, then re-spawn the depth-verifier. Stop after one
re-round. After that, either declare medium-confidence and proceed
to Resolution with the gaps surfaced to the user, or — if the gap
is a genuine data limitation — write needs_input.json and stop.kind: "textual" — do NOT spawn the tester.
Re-running the tester cannot fix narrative-level issues (paraphrase
looseness, wrong resolution branch picked) since those are the
generator's output, not the tester's. Accept the confirmed
hypothesis at confidence: medium and proceed to Resolution.
Surface the textual gaps in the presenter's output so the user
sees them.Symptom ≠ cause (shared.md invariant #9). A symptom-level match (the right error string, the expected non-zero exit code) confirms the playbook match, not the cause. The depth-verifier enforces this gate — do not skip it.
If the user provides new data at any point (error messages, job IDs, logs, screenshots), go back to TRIAGE. Re-spawn triage with the new data. Do NOT patch new data into an in-progress investigation.
Root cause vs. symptom: A finding that explains WHY the failure occurs is a root cause. A finding that describes WHAT happened (but not why) is a symptom — deepen it.
When to stop testing:
Spawn the presenter agent (agents/presenter.md) with the confirmed hypothesis IDs and all domains from state.json.scope.domain. Do NOT pre-filter domains based on your judgment of their relevance to the causal chain — the presenter classifies root cause vs. propagation domains and searches docsai for each. Excluding a domain prevents the presenter from finding error handling patterns it was designed to surface.
The presenter:
## Resolution sections across all domains in the causal chainPresent the presenter's output verbatim to the user. After presenting:
If root cause found — offer to help implement the fix or clean up .investigation/.
If no root cause found — use AskUserQuestion to offer: provide more data (re-triage), or open a UiPath support ticket with the evidence gathered.
Spawning: Read agent files just-in-time — only agents/shared.md + the specific agent file when you're about to spawn. Include full instructions, context, working directory path, and the absolute path to .investigation/ in the prompt.
Progress: Use TaskCreate/TaskUpdate for each phase. Tailor subjects to the user's problem.
Cleanup: After investigation completes, offer to delete or preserve .investigation/.