analyze-performance · git:20261008.ca144d2 · 2026-10-08 · sha256 d2ed663934bc4cf3
analyze-performance git:20261008.ca144d2A
Immutable. This exact content never changes and is served at /api/v1/blob/d2ed663934bc4cf3.
---
name: analyze-performance
description: Use when investigating slow activities, waiting, handoff duration, bottlenecks or cumulative activity workload.
allowed-tools: Read, AskUserQuestion
---
# Performance: averages are not total impact
Use the [shared contract](../../references/analysis-contract.md) and
[units/filter semantics](../../references/filters-and-units.md).
Reuse S, baseline F and metadata; do not request a baseline overview for an exact top-bottleneck question.
## Ordered recipe
Choose the smallest entry branch:
1. **Slow activities by mean:**
`get_bottleneck_analysis_v2 {S,itemsPerPage:5,itemsToSkip:0,mcpFilterOptions:F}`.
Omit absent F. `Duration` is **average activity duration**, already ranked descending.
Do not pass `attributeName`, `metrics`, `aggregation` or `limit`.
2. **Cumulative activity duration:** skip step 1 if this alone was requested.
From metadata take the exact Activity import attribute A; never assume its name is "Activity".
If advertised, call
`get_attribute_statistics {S,attributeName:A,filterOptions:F,itemsPerPage:5,itemsToSkip:0,metricToSortBy:"TotalDuration",sortOrder:"Descending"}`.
There is **no `_v2` suffix**. For an event-level Activity, TotalDuration sums matching
events; AvgDuration is their mean. Keep EventFrequency and CaseFrequency distinct.
RelativeCaseFrequency is a ratio; overlapping activity groups' case counts are not additive.
3. Only for unresolved evidence, choose a targeted drilldown:
`get_edges_with_metrics_v2 {S,filterOptions:F,itemsPerPage:20,itemsToSkip:0}` for handoffs,
or `get_cases_with_metrics_v2 {S,filterOptions:F,itemsPerPage:5,itemsToSkip:0,metricToSortBy:"WaitingTime",sortOrder:"Descending"}`.
Reuse earlier compatible results. Continue relevant drilldowns/pages without fixed call or
total-row ceilings; each query must resolve missing evidence, not repeat an answered question.
## Boundaries and stopping
Missing statistics: report the cumulative-measure gap, optionally average-only bottleneck evidence.
Never derive population totals from top-five averages or call a hidden statistics tool.
Edges expose no sort input: local ranking of one incomplete page is **page-local**, not global.
Report the native edge Duration mean; do not relabel it as an independently established waiting metric.
For a requested global edge ranking, retrieve necessary pages to complete coverage before ranking;
if coverage is incomplete, explicitly leave the global result unresolved.
Event/attribute filters retain whole cases, not just matching events.
Check timestamp imports before interpreting utilization: zero-duration conventions with
start-only data can produce nonzero ratios without measured active work. Keep raw values
and use same-scope cohort evidence; see the unit reference.
Stop once answered or evidence/capability is exhausted. Show at most five headline rows with separate
mean, total and frequency columns only when returned, scope/units and coverage.
High duration is an investigation lead, not proof of cause or a guaranteed time saving.
Mean activity duration times process case count is not total workload: cases are not activity
occurrences. Even known workload is not an intervention's removable delay.
Use the [investigation method](../../references/investigation-method.md) to label observations
and tested findings, retain counterevidence and identify a discriminating next check.