Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Diagnoses pipeline performance issues -- slow jobs, expensive queries, latency trends -- using Monte Carlo's cross-platform observability. Uses a tiered investigation approach: discover problems, bridge to affected tables, then drill into root causes. Activates when a user asks about...
.claude/skills/sickn33-monte-carlo-performance-diagnosis/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-17 | ✗→✓ | ▲ Improved | 60% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 1% | 0% |
| case-05 | ✗→✓ | ▲ Improved | -20% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 9% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 47% | 0% |
This skill helps diagnose data pipeline performance issues using Monte Carlo's cross-platform observability data. It works across Airflow, dbt, Databricks, and warehouse query engines to find bottlenecks, detect regressions, and identify root causes.
> Monte Carlo tool routing (required): Always call Monte Carlo MCP tools through this plugin's > bundled server, whose fully-qualified tool names are > mcp__plugin_mc-agent-toolkit_monte-carlo-mcp__<tool> (e.g. > mcp__plugin_mc-agent-toolkit_monte-carlo-mcp__get_alerts). Bare tool names used in this skill > (get_alerts, search, get_table, …) refer to that bundled server. If the session also has a > separately-configured monte-carlo-mcp server, do not route to it — it may point at a > different endpoint or credentials.
Reference files live next to this skill file. Use the Read tool (not MCP resources) to access them:
references/investigation-tiers.md (relative to this file)references/query-analysis.md (relative to this file)Activate when the user:
Do not activate when the user is:
The following MCP tools must be available (connect to Monte Carlo's MCP server):
Discovery tools (Tier 1):
get_jobs_performance -- find slow/failing jobs across Airflow, dbt, Databricksget_top_slow_queries -- find slowest query groups by total runtimeBridge tool:
get_tables_for_job -- convert job MCONs to table MCONsDiagnosis tools (Tier 2):
get_tasks_performance -- drill into a job's individual tasksget_change_timeline -- unified timeline of query changes, volume shifts, Airflow/dbt failuresget_query_rca -- root cause analysis for failed/futile queriesget_query_latency_distribution -- latency trend over timeget_asset_lineage -- trace upstream/downstream impactSupporting tools:
get_warehouses -- list available warehousesDetermine what the user wants to investigate:
Call get_warehouses to list available warehouses. Match the user's context to a warehouse.
If you don't have specific MCONs to investigate, start with discovery:
get_jobs_performance with optional integration_type filter (AIRFLOW, DATABRICKS, DBT) if the user specifies a platform.avgDuration, negative runDurationTrend7d, high failure ratesget_top_slow_queries with optional warehouse_id and query_type ("read" for SELECTs, "write" for INSERT/CREATE/MERGE).Present the top findings to the user before drilling deeper. A typical investigation needs only 3-7 tool calls.
If both discovery tools return no results: Tell the user no performance issues were found in the current time window. Suggest broadening the scope (different warehouse, longer time range, or a different platform filter).
After Tier 1 identifies problematic jobs, convert to table MCONs:
Call get_tables_for_job(job_mcon=..., integration_type=...) using the integration_type from the job performance results.
This gives you the table MCONs needed for Tier 2 investigation.
Now drill into root causes using the MCONs from discovery or the bridge:
get_tasks_performance to find which specific task in a job is the bottleneck.get_change_timeline -- this is your most powerful tool. It returns a unified timeline of:All in one call. Look for correlations: "query changed on day X, runtime doubled on day X+1."
get_query_rca to get root cause analysis:get_query_latency_distribution to see the trend:bucket="1h". The default downsamples to daily on windows ≥ 3 days, which hides hour-level steps.get_asset_lineage with direction="DOWNSTREAM" to see what's affected by a slow table, or direction="UPSTREAM" to find what feeds it.Structure your response as:
runDurationTrend7d) to distinguish regressions from normal variance. Flag if trend data has less than 0.1 confidence.query_type="read". When they ask about "writes", use query_type="write". Do NOT mix them.User request:
> Diagnose why this pipeline became slow, identify the bottleneck from the available telemetry, and propose the smallest verified fix.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-17 | fail→pass | 7,701 | 1,569 | -80% | 1 | 1 | 0% | 1,302 | 2,089 | +60% | 0 | 0 | — |
case-01 | fail→fail | 17,209 | 6,590 | -62% | 1 | 1 | 0% | 2,895 | 2,325 | -20% | 0 | 0 | — |
case-02 | fail→fail | 26,622 | 3,721 | -86% | 1 | 1 | 0% | 4,342 | 2,205 | -49% | 0 | 0 | — |
case-03 | fail→fail | 15,657 | 4,300 | -73% | 1 | 1 | 0% | 2,574 | 1,921 | -25% | 0 | 0 | — |
case-04 | fail→pass | 15,778 | 5,249 | -67% | 1 | 1 | 0% | 2,595 | 2,612 | +1% | 0 | 0 | — |
case-05 | fail→pass | 15,244 | 3,946 | -74% | 1 | 1 | 0% | 3,072 | 2,471 | -20% | 0 | 0 | — |
case-06 | fail→fail | 9,868 | 8,054 | -18% | 1 | 1 | 0% | 1,865 | 3,352 | +80% | 0 | 0 | — |
case-07 | fail→pass | 10,912 | 2,282 | -79% | 1 | 1 | 0% | 2,091 | 2,282 | +9% | 0 | 0 | — |
case-08 | fail→pass | 9,887 | 2,386 | -76% | 1 | 1 | 0% | 1,560 | 2,295 | +47% | 0 | 0 | — |
case-23 | fail→pass | 7,608 | 1,907 | -75% | 1 | 1 | 0% | 1,346 | 2,151 | +60% | 0 | 0 | — |
case-09 | fail→pass | 6,355 | 2,379 | -63% | 1 | 1 | 0% | 1,082 | 2,261 | +109% | 0 | 0 | — |
case-10 | fail→pass | 6,636 | 2,184 | -67% | 1 | 1 | 0% | 1,154 | 2,231 | +93% | 0 | 0 | — |
case-11 | fail→pass | 6,288 | 2,560 | -59% | 1 | 1 | 0% | 1,136 | 2,243 | +97% | 0 | 0 | — |
case-12 | pass→pass | 9,268 | 2,309 | -75% | 1 | 1 | 0% | 1,614 | 2,162 | +34% | 0 | 0 | — |
case-13 | fail→pass | 11,219 | 2,077 | -81% | 1 | 1 | 0% | 1,986 | 2,224 | +12% | 0 | 0 | — |
case-14 | fail→pass | 11,804 | 3,120 | -74% | 1 | 1 | 0% | 1,835 | 2,394 | +30% | 0 | 0 | — |
case-15 | fail→pass | 4,675 | 2,055 | -56% | 1 | 1 | 0% | 786 | 2,225 | +183% | 0 | 0 | — |
case-16 | fail→pass | 4,428 | 2,279 | -49% | 1 | 1 | 0% | 790 | 2,194 | +178% | 0 | 0 | — |
case-18 | pass→pass | 7,357 | 2,075 | -72% | 1 | 1 | 0% | 1,263 | 2,139 | +69% | 0 | 0 | — |
case-19 | pass→pass | 12,199 | 9,999 | -18% | 1 | 1 | 0% | 2,151 | 3,096 | +44% | 0 | 0 | — |
case-20 | fail→pass | 6,780 | 2,515 | -63% | 1 | 1 | 0% | 1,143 | 2,201 | +93% | 0 | 0 | — |
case-21 | fail→pass | 7,197 | 1,625 | -77% | 1 | 1 | 0% | 1,258 | 2,136 | +70% | 0 | 0 | — |
case-22 | fail→pass | 8,552 | 2,391 | -72% | 1 | 1 | 0% | 1,348 | 2,180 | +62% | 0 | 0 | — |
case-24 | pass→pass | 10,656 | 4,013 | -62% | 1 | 1 | 0% | 1,855 | 2,531 | +36% | 0 | 0 | — |
case-25 | fail→pass | 5,094 | 1,649 | -68% | 1 | 1 | 0% | 774 | 2,127 | +175% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 25 cases were attempted, and 22 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +68 percentage points is the difference between those two pass rates over the 22 comparable cases.
The publisher has shipped newer versions since this run, so these numbers describe v1, not the version currently listed.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.