From uipath
Builds UiPath Case Management definitions from sdd.md or generates sdd.md via an interactive interview. Writes caseplan.json with per-plugin JSON recipes. Generates tasks.md implementation plan. Discovers case resources from local registry cache.
How this skill is triggered — by the user, by Claude, or both
Slash command
/uipath:uipath-maestro-caseThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Builds UiPath Case Management definitions from `sdd.md`. Generates `tasks.md` plan, then writes `caseplan.json` directly via per-plugin JSON recipes. CLI is reserved for read-only metadata fetches (registry, validate, debug, tasks describe, case spec) and solution boundary operations (`uip solution init` / `project add` / `upload`).
assets/templates/sdd-template-examples.mdassets/templates/sdd-template.mdassets/templates/sdd-viewer.htmlreferences/bindings-and-expressions.mdreferences/bindings-v2-sync.mdreferences/case-commands.mdreferences/case-editing-operations.mdreferences/case-schema.mdreferences/case-spec-input-details.mdreferences/connector-integration.mdreferences/connector-trigger-common.mdreferences/evals/evals.jsonreferences/implementation.mdreferences/phase-0-interview.mdreferences/phased-execution.mdreferences/placeholder-tasks.mdreferences/planning.mdreferences/plugins/case/impl-json.mdreferences/plugins/case/planning.mdreferences/plugins/conditions/case-exit-conditions/impl-json.mdBuilds UiPath Case Management definitions from sdd.md. Generates tasks.md plan, then writes caseplan.json directly via per-plugin JSON recipes. CLI is reserved for read-only metadata fetches (registry, validate, debug, tasks describe, case spec) and solution boundary operations (uip solution init / project add / upload).
When sdd.md is absent, Phase 0 interview generates one interactively (listen → sketch → progressive ask-walk → resolve → approve, with optional HTML preview before handing off). Complex / multi-product cases redirect to uipath-planner — see references/phase-0-interview.md § Thresholds for caps.
Scope: new case from sdd.md (user-provided or Phase 0-generated). Modifying existing case not supported (no remote fetch tooling).
sdd.md and wants Case Management project builtsdd.md (Phase 0 interview generates one)sdd.md or convert spec to planDo not use for: .xaml → uipath-rpa. .flow → uipath-maestro-flow. Standalone agents/APIs/processes outside case context → corresponding UiPath skill.
sdd.md absent. Generate sdd.md via a guided interview (listen → sketch → progressive ask-walk → resolve → approve); output requires explicit user approval (Approve hard-stop) before treating as Rule 2 input. Apply complexity thresholds — soft-redirect to uipath-planner on breach. Never overwrite an existing sdd.md. See references/phase-0-interview.md § Thresholds.uip maestro case registry pull before planning. Discovery reads cache files at ~/.uip/case-resources/<type>-index.json directly. registry search has known gaps (esp. action-apps). See references/registry-discovery.md.--output json on every parsed read.planning.md during planning + impl-json.md during execution. Never guess JSON shapes from memory.tasks.md declarative only. No shell commands inside. Field names use plain identifiers (e.g., type:, displayName:, lane:), not CLI flag syntax. One T-entry per sdd.md declaration — every stage, task, trigger, condition, SLA rule, variable, and argument gets own T-number, even when value looks like default (current-stage-entered, case-entered, exit-only, is-interrupting: false, runOnlyOnce: true, marks-stage-complete: true). Never group, never silently omit. When an sdd.md row's format is unrecognized, ambiguous, or cannot be categorized — invoke AskUserQuestion before skipping. Silent omission is forbidden. Always regenerate from scratch. See references/planning.md §4.0.tasks.md. AskUserQuestion: Approve and proceed / Request changes. Re-read tasks.md before executing.<UNRESOLVED: ...> markers in tasks.md. Placeholder task: node with type + displayName + structural fields, data: {}; conditions still reference the TaskId. Placeholder event trigger: node with render fields + data.uipath: { serviceType: "Intsvc.EventTrigger" } only (no other data.uipath keys); entry-points.json entry appended. No trigger-edge is created (edges retired) — the first stage's case-entered entry condition starts the case. See references/placeholder-tasks.md and references/plugins/triggers/event/impl-json.md § Placeholder fallback.registry-resolved.json — search query, all matches, selected result, rationale."Stage Name"."Task Name".output_name. Resolve to =vars.<outputId> at execution by reading the source's id field (the resolver match key — var mirrors id on self-declaring task outputs, but .id is symmetric with the runtime resolver per the io-binding validator). Discover output names via uip maestro case spec (connector tasks) or uip maestro case tasks describe (non-connector tasks) — never fabricate. Inside a larger =js: expression (composite payload, condition, SLA), use the in-expression marker vars.$xref('Stage','Task','output') instead — resolved at Step 11.5. See references/bindings-and-expressions.md and plugins/variables/io-binding/impl-json.md.validate --skeleton (structural checks only — skips tasks/SLAs/escalations/entry-exit rules), surface counts, present AskUserQuestion: Publish for review / Skip publish and continue / Abort. Do NOT halt on Phase 2 validate errors — advisory only; user inspects via Abort. Never skip prompt for auto mode, non-interactive mode, prior approval. If harness forbids prompts, halt with error. On Publish for review: print DesignerUrl as plain-text output BEFORE invoking the second AskUserQuestion — never embed URL only inside question body. Additional hard stops gate Phase 4 retry exhaustion (Retry with fix / Pause for manual edit / Abort), Phase 5 entry (Run debug session / Skip to Publish), and Phase 6 entry (Publish to Studio Web / Done). Full contract in references/phased-execution.md.uip maestro case debug automatically. Executes case for real — emails, messages, API calls. Explicit user consent only.caseplan.json, sdd.md, sdd.draft.md, tasks.md, tasks/registry-resolved.json, tasks/trigger-spec-cache.json, tasks/spec-cache.<elementId>.json, bindings_v2.json, id-map.json, entry-points.json, build-issues.md. No python, node, jq, sed, awk, or scripts that open/parse/modify/save these files. Specifically forbidden (common slip): node -e "...fs.writeFileSync...", node -e "...fs.readFileSync...", node -e "..." > <artifact>, jq '...' <artifact> > <artifact>, python -c "...open(...,'w')...", sed -i, awk -i inplace, or any shell redirection (>, >>, | tee) onto a skill artifact regardless of interpreter. Writing a helper script under /tmp or anywhere else to assemble a skill artifact is also forbidden — the build-assembler pattern (/tmp/build-caseplan.js, /tmp/gen-tasks.py, etc.) is the same Rule 13 violation as inline node -e, regardless of "mechanical copy" or "avoid Read+Write churn" framing. If caseplan.json exceeds ~30KB and a single Write feels too large, split into the Phase-2-skeleton-then-Phase-3-fill cadence (per case-editing-operations.md § Per-section batch write contract) — never via helper script. Bash subprocesses OK ONLY for UUID v4 generation (node -e "console.log(crypto.randomUUID())" for operate.json.projectId and entry-points.json uniqueId — subprocess MUST NOT require('fs') or use redirection), CLI metadata fetches, validate, debug, and solution scaffold/upload. Prefixed IDs (Stage_, t, Rule_, etc.) are picked inline by the agent — no subprocess. See references/case-editing-operations.md § Tool usage.uip solution resources refresh before uip solution upload or uip maestro case debug — syncs resources from bindings_v2.json so Studio Web can resolve connector dependencies.uipath-planner. On Phase 0 threshold breach or stuck-round detection, print plain-text suggestion of the skill name. User re-invokes manually. No tool-call cross-skill handoff.type enum is closed — 9 values, schema-kebab. Any task node written into caseplan.json MUST have type exactly one of: process | agent | rpa | action | api-workflow | case-management | execute-connector-activity | wait-for-connector | wait-for-timer. Never write the plugin folder name (connector-activity, connector-trigger) or the CLI --type flag value into the JSON node — those name the planning artifacts, not the schema. Never write external-agent, external-workflow, document-extraction, flow-process, wait-for-event, or any hallucinated value — there is no plugin to back them. external-agent, external-workflow, document-extraction, and flow-process are not supported yet. See references/case-schema.md § Task type and the Plugin Index naming-asymmetry table below.Force pull and re-resolve / Skip and use placeholders BEFORE writing any placeholder T-entries or invoking per-plugin Unresolved Fallback paths. Apply per lookup-batch (one prompt covers all empties in the batch — do not prompt per-task). Do NOT pre-judge based on resource-name heuristics ("looks vendor-specific, won't match anyway") — that is the user's call. Placeholder fallback is only valid AFTER the user explicitly picks Skip. See references/registry-discovery.md § MUST: Confirm Before Placeholder Fallback.layout, not on the node/edge. Do NOT emit node-level position, style, measured, width, height, zIndex. Do NOT compute stage position.x = 100 + count * 500. Do NOT emit edge data.waypoints. Emit top-level layout: {} (empty object) — FE auto-layouts on canvas load. The frontend's transformCaseInMemoryJsonToDiskJson strips these fields anyway when round-tripping through canvas; emitting them is harmless on read but wastes tokens. See references/case-editing-operations.md.Up to seven hard stops (Phase 0 + Phase 2 second prompt + Phase 4 conditional): Phase 0 (interview → sdd.md, only when sdd.md absent) → approve → Phase 1 Planning (sdd.md → tasks.md) → approve → Phase 2 Prototyping (placeholder) → publish-for-review stop → continue-after-publish stop (publish branch only) → Phase 3 Implementation (detail) → Phase 4 Validate (retry-cap stop on 3rd failure) → Phase 5 Debug (Run vs Skip-to-Publish stop) → Phase 6 Publish (Publish vs Done stop).
Triggered when sdd.md absent at resolved path. Read references/phase-0-interview.md for the interview modes (listen → sketch → progressive ask-walk → resolve → approve), thresholds, soft-redirect contract, resumption, and HTML preview offer. Produces:
Read budget for Phase 0. Read
phase-0-interview.md,references/sdd-generation-rules.md(the mental model + task-type reasoning the progressive walk relies on), andassets/templates/sdd-template.mdto begin the interview. Do NOT preload pluginimpl-json.mdfiles — those are needed only in Phase 2/3 and pulled in just-in-time per T-entry.
sdd.md — generated against assets/templates/sdd-template.mdtasks/registry-resolved.json — per-task registry resolutionssdd.draft.md — intermediate, deleted at approvalsdd-viewer.html — optional, rendered from assets/templates/sdd-viewer.html when user accepts the preview offer; Phase 1 ignores itIf sdd.md already exists: skip Phase 0, hand to Phase 1 unchanged.
Read references/planning.md. Produces:
tasks/tasks.md — T-numbered entries (stages → tasks → conditions → SLA)tasks/registry-resolved.json — audit trailHARD STOP: AskUserQuestion approval. Loop on Request changes.
Read references/implementation.md + references/phased-execution.md. Builds structural shape only:
elementId references a TriggerId captured in Step 6.1data.inputs[] schema + empty values; connector with typeId + connectionId only (no case spec); unresolved as placeholders per Rule 8Publish for review / Skip publish and continue / Abort. On Publish: uip solution resources refresh --solution-folder <SolutionDir> --output json then uip solution upload, print DesignerUrl, AskUserQuestion: Continue to phase 3 / Abort. On Abort: dump build-issues.md, exit (no cleanup).Re-read tasks.md AND caseplan.json (Step 9.6). Then:
is resources/triggers describeplugins/variables/io-binding/impl-json.mdvars.$xref marker resolution (Step 11.5) — per plugins/variables/io-binding/impl-json.mdNo hard stop on Phase 3 exit — proceed directly to Phase 4.
Retry with fix / Pause for manual edit / Abortbuild-issues.md (Step 12.1)Completion report + HARD STOP AskUserQuestion (Step 13): Run debug session / Skip to Publish. On Run: uip solution resources refresh then uip maestro case debug (never auto-run — Rule 12). Loop on completion until Skip to Publish.
HARD STOP AskUserQuestion (Step 14): Publish to Studio Web / Done. On Publish: uip solution resources refresh then uip solution upload, print DesignerUrl (Step 15). Exit on either choice.
| I need to... | Read |
|---|---|
| Generate sdd.md interactively when none provided | references/phase-0-interview.md |
| Plan tasks from sdd.md | references/planning.md |
| Execute tasks.md into a case | references/implementation.md |
| Phase 2 → 3 → 4 → 5 → 6 split + hard stop contracts | references/phased-execution.md |
| Edit caseplan.json directly | references/case-editing-operations.md |
| Case JSON schema | references/case-schema.md |
| Surviving CLI commands (registry, validate, debug, runtime) | references/case-commands.md |
| Troubleshoot a failed case | references/troubleshooting-guide.md |
| Resolve task types from registry | references/registry-discovery.md |
| Wire inputs/outputs + cross-task refs + expression prefixes | references/bindings-and-expressions.md |
| Configure connector activity / trigger / event | references/connector-integration.md |
Construct case spec --input-details JSON | references/case-spec-input-details.md |
| Placeholder tasks for unresolved resources | references/placeholder-tasks.md |
| Sync bindings_v2.json + connection resources | references/bindings-v2-sync.md |
Structural:
| Plugin | Scope |
|---|---|
| case | Root case (T01) |
| stages | Regular and exception stages |
| sla | Default SLA, conditional rules, escalation |
| global-vars | Case variables and arguments |
| io-binding | Task I/O wiring, cross-task refs |
| logging | Shared issue log |
Tasks (references/plugins/tasks/):
Naming asymmetry — read carefully. Three names exist for connector + timer tasks. Pick the right one by column. Schema-kebab is the only value that goes into
caseplan.jsontype(Rule 16).
sdd.md Type: value / caseplan.json type (schema-kebab) | Plugin folder | CLI --type flag (tasks describe) |
|---|---|---|
process | process | process |
agent | agent | agent |
rpa | rpa | rpa |
action | action | action |
api-workflow | api-workflow | api-workflow |
case-management | case-management | case-management |
execute-connector-activity | connector-activity | connector-activity |
wait-for-connector | connector-trigger | connector-trigger |
wait-for-timer | wait-for-timer | wait-for-timer (no CLI describe needed) |
Triggers (references/plugins/triggers/):
| Plugin | When |
|---|---|
| manual | User-initiated start |
| timer | Scheduled start |
| event | External connector event |
Conditions (references/plugins/conditions/):
| Plugin | Scope |
|---|---|
| stage-entry-conditions | Stage entered |
| stage-exit-conditions | Stage exits |
| task-entry-conditions | Task starts |
| case-exit-conditions | Case completes/exits |
Connector-bound rules: a
wait-for-connectorrule in any condition scope must carry the connector configuration underrule.uipath(built fromcase spec --type trigger, like the connector-trigger task) — bare connector rules are invalid in Studio Web and are NOT caught by CLIvalidate. See connector-trigger-common.md § Target: connector-bound condition rule.
stage-entry-conditions rule naming a reachable predecessor; the first stage carries case-entered. A stage with no entry condition is orphaned and unreachable.validate once at end of Phase 2 (informational) and once in Phase 4 (authoritative).tasks.md (Phase 1) uses per-section batched Edit-append — NOT per-T-entry, NOT one mega-Write. One Read + N Edit-appends per section (§4.2.1 vars, §4.3 triggers, §4.4 stages, §4.6 tasks, §4.7 conditions, §4.8 SLA). No re-Read between sibling Edits. HARD CAP: after §4.0a Step 1 Seed Write (<1KB header), single Write of whole tasks.md is FORBIDDEN regardless of size. Single Edit-append payload >30KB also FORBIDDEN — split per section even if cumulative payload exceeds 30KB. A 96KB tasks.md Write costs ~360s in one turn (20% of session); section-batched Edit-appends spread across ~7 turns of ~50s. TaskUpdate per T-entry preserves audit trail. Recovery on interruption: re-Read tasks.md, resume from next un-applied T-entry. See planning.md § 4.0a.caseplan.json (Phase 2 + 3) uses per-section batched writes — NOT per-T-entry. One Read at section entry + one validate at section end. Tool primitive scales with section size: <10 T-entries → N Edits (one per T-entry, no re-Read between siblings); ≥10 T-entries → may use single whole-section Write covering the section's nodes array at once, AFTER composing complete section state in reasoning. Untouched siblings (other sections, root fields) MUST be preserved verbatim from the Read — drop nothing. TaskUpdate per T-entry preserves audit trail regardless of write granularity. CLI-gated sections (Phase 2 §4.6 non-connector tasks describe, Phase 3 §9.7 connector case spec) use gather-then-write. Recovery on interruption: re-Read both files, resume from next un-applied T-entry. Full contract in case-editing-operations.md § Per-section batch write contract and implementation.md § Per-plugin execution.tool_use (text block + tool_use block in the same assistant content array). Standalone narration turns each pay full inference latency + prompt cache replay (~5s + ~250K cache-read tokens per turn) for no incremental progress. Cap inline status to ≤1 sentence / ~20 tokens. Per-T-entry audit lives in TaskUpdate, NOT in narration.
Publish for review DesignerUrl print, post-validate result summaries) get a higher ceiling of 500 tokens — never higher. A text block >200 tokens outside the allow-list, or >500 tokens inside it, is a planning monologue, regardless of content or framing.Building, Composing, Writing, Drafting, Generating, Now I'll, Next:, Next step:, Approach:, Strategy:, Plan:, Caveman push:, Big single Write:, Let me, or any other narration of the imminent tool call are FORBIDDEN regardless of length. The tool_use input shows what is being built — restating it in prose is pure cost. If the agent feels the urge to write Composing Phase 2 caseplan.json — trigger + 64 variables + 10 stages, it must instead invoke the Write directly with that content as the file body.Publish for review DesignerUrl print (Rule 11), and post-validate result summaries (N errors, M warnings — fixing X is fine; Composing fix for ... is not). Everything else bundles or omits.runs-sequentially group. Default: each task own lane index in stageNode.data.tasks[laneIndex][], lane is FE layout only. Exception: tasks sharing a runs-sequentially task-entry condition that are meant to run in parallel share the same lane (shared lane = parallel siblings inside the sequential group, carries execution semantics). Solo runs-sequentially tasks still get their own lane.content/*.bpmn. Auto-generated, will be overwritten. Edit content/*.json only.Trouble? Use
/uipath-feedbackto send report.
npx claudepluginhub uipath/skills --plugin uipathDesigns UiPath automation solutions from PDDs into SDDs, then derives task plans across RPA, Flow, BPMN, and Agent projects, spawning per-specialist tasks.
Interactively designs plain-text workflows with stages, entities, and a first-officer agent, then generates markdown files and launches a pilot run.
Audits Corezoid BPM processes for structural issues, hardcoded values, and optimization opportunities. Use when analyzing or reviewing `.conv.json` process definitions.