feat(uipath-insights): teach filter discovery and add filters smoke eval - #2552
feat(uipath-insights): teach filter discovery and add filters smoke eval#2552celestinryf wants to merge 1 commit into
Conversation
|
Claude finished @celestinryf's task in 3m 23s —— View job PR Review: feat(uipath-insights): teach filter discovery and add filters smoke eval
SummaryAdds four Change-by-Change Review1.
|
| Area | Status | Notes |
|---|---|---|
| Frontmatter | OK | Description 492 chars, combined 1242 chars; → redirects present |
| E2E Tests | OK | Existing skill — no new e2e required for this change; PR description notes e2e slice lives in #2551 |
| Skill Body | OK | Filter Discovery Commands section is prescriptive, numbered, copy-paste-ready |
| References & Assets | OK | Playbook routing updated, no duplicate content, no broken links |
| Repo Hygiene | OK | CODEOWNERS already covers both skill and test paths; no secrets; changes scoped to one skill |
Issues for Manual Review
- CLI command correctness. The four
filter-*commands are documented from cli#3449 which hasn't merged yet. The actual flag names (--limit,--offset), response shapes (FolderName,FolderKey,Pagination.Total,HasMore), and the 30-day activity window should be verified against the CLI implementation once it merges. filter-queuesresponse shape. SKILL.md documents{QueueName, FolderKey}rows — confirm this matches the CLI's actual output schema.- Pagination semantics. The skill says "
--limit/--offsetpaginate client-side." Confirm whether these are truly client-side (CLI fetches all, then slices) or server-side (CLI passes to the API). This affects whetherHasMore: falseguarantees completeness.
Conclusion
Clean, well-scoped PR. The skill content is prescriptive and addresses the two concrete agent mistakes (adding time flags, treating empty as "does not exist"). The smoke task has solid criteria including the negative time-flag check. The two missing items (discovery bullet in "When to Use", queue activation row) are both Low and don't block merge. Recommend approve once the CLI commands land and the passing-run claim is added per the Limitations section.
|
|
Claude finished @celestinryf's task in 2m 35s —— View job Coder-eval task lint (advisory)1 task YAML changed; verdicts: 0 Critical, 1 High, 0 Medium, 0 Low, 0 OK. Rubric: .claude/commands/lint-task.md. This check is advisory and never blocks merge. Evidence of passing run❌ High — PR body explicitly states: "The smoke task itself has not been run; see Limitations" and "skill-insights-smoke-filter-discovery has no passing run yet, and cannot have one." The author documents a valid reason (commands exist only on cli#3449, not yet merged) and commits to adding a passing-run claim post-merge. Please edit the PR description to add a line like Per-task lint
|
efe3415 to
3bf6612
Compare
The four filter discovery command groups (filter-folders, filter-processes, filter-queues, filter-machines) land in the CLI via UiPath/cli#3449. Teaches them in SKILL.md (scope-discovery section, no-time-flags rule, discover-before-you-act workflow), routes folder-key lookups through filter-folders in the investigation playbook, adds a filters smoke task, and adds three activation positives (026-028). The smoke task has no passing run yet: it calls the installed uip surface, and the commands reach @uipath/cli@dev only when cli#3449 merges to main.
3bf6612 to
8aad100
Compare
|
Addressing the two bot reviews, point by point (changes landed in PR review findings
Manual-review questions the review raised
Task lint
|
| - type: command_executed | ||
| description: "Agent ran filter-folders list to discover folders" | ||
| tool_name: "Bash" | ||
| command_pattern: 'uip\s+insights\s+filter-folders\s+list' |
There was a problem hiding this comment.
issue (non-blocking): This task already passed at weighted 1.00 on this head (smoke run reported 7/7 passed, status=SUCCESS) while cli#3449 is still open, because command_executed matches the command string and not its exit code — so all four criteria pass even when uip insights filter-* does not exist yet. Either soften the Limitations claim that a passing run is impossible before that merge, or add a run_command criterion (uip insights filter-folders list --output json, expected_exit_code: 0) so the task actually proves the CLI path.
| ```bash | ||
| uip insights filter-folders list --output json # {FolderName, FolderKey} rows | ||
| uip insights filter-processes list --output json # {ProcessName, FolderKey} rows | ||
| uip insights filter-queues list --output json # {QueueName, FolderKey} rows |
There was a problem hiding this comment.
suggestion (non-blocking): Now that uip insights filter-queues list is a taught command, the existing negative criterion in tests/tasks/uipath-insights/smoke_critical_rules.yaml (command_pattern: 'uip\s+insights.*queue') can false-fail a weight-2.0 assertion if the agent runs filter-queues while explaining the queue-metrics boundary. Narrowing it to the actual intent — e.g. uip\s+insights\s+jobs[^&;|\n]*queue — keeps that guard meaningful.
| description: "UiPath Insights job monitoring via `uip insights` — query job execution metrics, failure analysis, and process performance. Covers job KPIs, failure reasons, completion trends, process breakdowns. For Orchestrator job start/stop/logs→uipath-platform, root-cause analysis of specific errors→uipath-troubleshoot, RPA workflow authoring→uipath-rpa." | ||
| when_to_use: "User says 'job failures', 'automation health', 'job success rate', 'processing time', 'which processes fail the most', 'failure reasons', 'job trends', 'how many jobs ran', 'insights dashboard', 'job metrics', 'job KPIs', 'job performance', 'uncompleted jobs', 'pending jobs', 'faulted jobs', 'job timeline', 'process details'. Also 'uip insights', 'insights jobs'. NOT for starting/stopping jobs (uipath-platform), NOT for root-cause debugging of a specific job error (uipath-troubleshoot), NOT for queue metrics (not yet supported)." | ||
| description: "UiPath Insights job monitoring via `uip insights` — query job execution metrics, failure analysis, and process performance. Covers job KPIs, failure reasons, completion trends, process breakdowns. Also filter discovery — folders, processes, queues, and machines with recent activity, for choosing exact scope before alerts or filtered queries. For Orchestrator job start/stop/logs→uipath-platform, root-cause analysis of specific errors→uipath-troubleshoot, RPA workflow authoring→uipath-rpa." | ||
| when_to_use: "User says 'job failures', 'automation health', 'job success rate', 'processing time', 'which processes fail the most', 'failure reasons', 'job trends', 'how many jobs ran', 'insights dashboard', 'job metrics', 'job KPIs', 'job performance', 'uncompleted jobs', 'pending jobs', 'faulted jobs', 'job timeline', 'process details', 'which folders can you see', 'what processes are active', 'find the folder key', 'discover queues', 'which machines reported', 'filter-folders', 'filter-processes'. Also 'uip insights', 'insights jobs'. NOT for starting/stopping jobs (uipath-platform), NOT for root-cause debugging of a specific job error (uipath-troubleshoot), NOT for queue item metrics (queue discovery is supported via filter-queues; metrics are not)." |
There was a problem hiding this comment.
suggestion (non-blocking): The new discovery phrases overlap the uipath-platform activation set (uipath-platform-009 folders, -032 processes under a folder, -018 queue items), and the activation gate only re-runs skills whose own SKILL.md changed, so an activation lost there would only surface later on an unrelated uipath-platform PR. Worth running the uipath-platform activation dataset once before merge.
| # [^&;|\n]* instead of .* : the grader compiles patterns with re.DOTALL, | ||
| # so .* would bleed across command separators and false-fail a batched | ||
| # call like `filter-folders list ... && jobs summary --time-range ...` | ||
| command_pattern: 'uip\s+insights\s+filter-\S+\s+list[^&;|\n]*--(time-range|started-after|started-before)' |
There was a problem hiding this comment.
suggestion (non-blocking): [^&;|\n]* also excludes newlines, so a backslash-continued invocation (uip insights filter-folders list \ then --time-range 60) slips past this guard — the exact mistake it exists to catch, and the jobs examples in SKILL.md use that continuation style. (?:[^&;|\n]|\\\n)* closes it without reintroducing the cross-command bleed.
| identifiers, and treat an empty result as normal rather than an | ||
| error. The CLI is authenticated; the tenant may or may not have | ||
| recent activity, and both are valid outcomes. | ||
| tags: [uipath-insights, smoke, mode:build, lifecycle:discover] |
There was a problem hiding this comment.
nit (non-blocking): mode:build does not match the taxonomy in tests/README.md (build = creating/designing/editing/deploying), and the five sibling uipath-insights tasks all use mode:diagnose; since the tag drives make tags and the evalboard, a read-only discovery task lands in the wrong bucket.
| Insights provides analytics and monitoring for UiPath automation execution. This skill covers **job monitoring** — querying aggregated job execution data for dashboards, health checks, and failure investigation. | ||
|
|
||
| All operations go through `uip insights jobs <subcommand> --output json`. | ||
| Job monitoring goes through `uip insights jobs <subcommand> --output json`; scope discovery goes through the `uip insights filter-*` groups. |
There was a problem hiding this comment.
nit (non-blocking): uip insights filter-* stays soft-stale in the verb gate even after a catalog refresh, since filter-* is never a real verb path. An inline <!-- uip-check-skip --> on this line clears the recurring warning.
rohitjain-uipath
left a comment
There was a problem hiding this comment.
+1 on Ruilin's comments. Lets fix them before merge, rest LGTM!
Related to IN-13523.
What
Teaches the four filter discovery command groups landing in UiPath/cli#3449:
filter-folders,filter-processes,filter-queues,filter-machines, each with alistsubcommand.SKILL.mdgets filter hooks indescription/when_to_use, a Filter Discovery Commands section (four rules: no time flags, client-side--limit/--offset, empty is not proof of absence, results are permission-bounded) and a discover-before-you-act workflow; Critical Rule 1 is scoped tojobscommands only.references/investigation-playbook-guide.mdroutes folder-key lookups throughfilter-folders listfirst, withuip or folders listas the fallback. Addstests/tasks/uipath-insights/filters/smoke.yamland activation rows 026-029. The five jobs smoke tasks, the e2e tasks from #2551, andBASELINES_PCTare untouched.Why
The commands ship in UiPath/cli#3449 (review approved, merge pending). Without skill guidance, agents guess folder keys or pass
--time-rangeto commands that reject it; the discovery workflow makes them page through results before concluding a resource is absent. The backend applies a fixed 30-day activity window, which is why the skill frames empty results as "no recent activity", not "does not exist".Scope
Skill content, one smoke task, four activation positives. E2e-depth coverage for these commands lives in the cli repo (
scenarios/insights-tool/filter-discovery.mdS1-S8 andfilter-discovery.e2e.test.ts, both on cli#3449); this skill already has its e2e slice in #2551. The activation baseline (BASELINES_PCT) is deliberately not edited here; re-measuring recall with the new rows is the follow-up once a baseline entry exists for this skill.Testing
scripts/check-cli-verbs.pyandscripts/check-task-driver.pyboth pass on the new smoke task, run 2026-08-10.Limitations
skill-insights-smoke-filter-discoveryhas no passing run yet, and cannot have one: the four commands exist only on cli#3449, and the PR smoke gate installs@uipath/cli@dev, which picks them up only when that PR merges tocli/main. The 2026-08-06 catalog snapshot (1.200.0-dev.8116) carries 0 filter verbs, consistent with that. A real passing-run claim will be added to this PR once the commands are oncli/main; this PR should not merge before that run exists.Activation recall is not re-measured. The activation gate skips
uipath-insightsuntil aBASELINES_PCTentry exists, so rows 026-029 are inert for gating until the baseline lands.How to Review
The Filter Discovery Commands section in
SKILL.mdcarries the weight, especially the no-time-flags rule and the empty-is-not-absence rule, which are the two mistakes agents actually make with these commands. The playbook edits are routing, and the smoke YAML is a criteria list.Checklist
CI note
The smoke gate (
smoke-skills.yml) will fail this PR's filters task until cli#3449 merges, since the@uipath/cli@devinstall cannot have the commands before then. Thelint-tasks.ymladvisory may also flag the missing passing-run claim; both resolve with the post-merge run described in Limitations.