Skip to main content
skill CX Codex

ml-ai — Claude Code skill: what it does, how to install

Enables machine learning and AI features in Grafana Cloud. It helps set up Prophet forecasts, DBSCAN outlier alerts, and Sift root-cause investigations.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add grafana/skills --skill ml-ai -a claude-code
Open on GitHub

What ml-ai does

The skill equips coding agents with workflows for Grafana Cloud AI and ML APIs. It configures Prophet forecasting jobs and DBSCAN peer-group anomaly detection. Teams can replace rigid threshold alerting with dynamic bounds that follow daily seasonality. The skill also covers automated incident investigations with Sift and LLM Plugin setup.

Under the hood, the skill generates API calls against grafana-ml-app and grafana-sift-app, as well as provisioning files for grafana-llm-app. Alerts rely on generated metrics such as ml_forecast_upper and ml_outlier_score. Investigations trigger eight automated checks in Sift, linking findings directly to the incident view.

You need a Grafana Cloud Pro or Advanced stack and an API token with plugins:write permissions. Dynamic alerting will fail on new services. Prophet requires at least 14 days of metric history to compute a usable baseline.

What it helps with

  • configure Prophet metric forecasting alerts without static thresholds
  • detect outlier services using DBSCAN grouping on error rates
  • run automated incident investigations across 8 Sift checks
  • provision the LLM Plugin with OpenAI or other model providers

Example prompts for the agent

  • Set up a Prophet forecast alert on CPU usage if it exceeds the upper bound by 10%
  • Run a Sift root-cause investigation for the checkout service over the last 30 minutes
  • Provision the LLM Plugin with gpt-4o for Grafana Assistant

How to install ml-ai

1Skills CLI (Vercel)

npx skills add grafana/skills --skill ml-ai -a claude-code

2Manually: put the files in place

~/.claude/skills/ml-ai/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/ml-ai/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about ml-ai

How to install ml-ai in Claude Code?

Run npx skills add grafana/skills --skill ml-ai -a claude-code. The command places the skill file into ~/.claude/skills/ml-ai/SKILL.md.

What does ml-ai do?

It teaches coding agents how to interact with Grafana Cloud ML and AI tools. It covers Prophet metric forecasting, DBSCAN outlier jobs, Sift root-cause investigations, and LLM Plugin provisioning.

What prerequisites are needed for dynamic alerts?

You must have a Grafana Cloud Pro or Advanced stack and an API token with plugins:write. Forecasting jobs also need at least 14 days of stored metric history.

Source text

SKILL.md · Apache-2.0
---
name: ml-ai
license: Apache-2.0
description: Turn on AI + ML features in Grafana Cloud — Grafana Assistant (NL → PromQL/LogQL/TraceQL, dashboard build, incident investigation, MCP integration), Dynamic Alerting (Prophet forecasting + DBSCAN outlier detection), Sift (8-analysis automated root-cause), Knowledge Graph + RCA Workbench, and the LLM Plugin (OpenAI / Anthropic / Azure / Ollama / vLLM / LiteLLM). Use when you want anomaly alerts without static thresholds, natural-language querying, automated incident investigation, dashboards generated from a sentence, or a managed LLM proxy for plugins — even when the user says "alert when something looks weird", "explain this PromQL", "find the root cause", "make this a dashboard", or "wire Claude into Grafana" without naming any of these products.
---

# Grafana Cloud AI & ML

> **Docs**: https://grafana.com/docs/grafana-cloud/alerting-and-irm/machine-learning/

ML alerting + automated RCA + LLM-powered Assistant in one Grafana Cloud stack.

## Prerequisites

- Grafana Cloud stack (Pro / Advanced — most features GA, some in preview)
- API token with `plugins:write` for ML / Sift / LLM-plugin endpoints
- For Dynamic Alerting: at least 14 days (ideally 90d) of history for the metric you want to forecast

## Common Workflows

### 1. Forecasting alert with Dynamic Alerting

```bash
# 1. Create forecast job (Prophet — learns daily/weekly seasonality)
curl -X POST https://<stack>.grafana.net/api/plugins/grafana-ml-app/resources/ml/v1/forecast \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "cpu-forecast",
    "metric": "avg(rate(node_cpu_seconds_total{mode=\"user\"}[5m]))",
    "datasourceId": 1,
    "interval": 300,
    "trainingWindow": "90d",
    "forecastWindow": "7d",
    "algorithm": { "name": "prophet", "config": {} }
  }'

# 2. Verify job is producing the predicted-value metric (may take a few minutes).
#    <datasourceId> must match the datasourceId used above (find it via
#    GET /api/datasources), or run the query from Explore instead.
curl -s -H "Authorization: Bearer <token>" \
  'https://<stack>.grafana.net/api/datasources/proxy/<datasourceId>/api/v1/query?query=ml_forecast_upper{job="cpu-forecast"}' \
  | jq '.data.result | length'
# Expect > 0

# 3. Add an alert that fires when actual exceeds the upper bound
# expr:  avg(rate(node_cpu_seconds_total{mode="user"}[5m]))
#         > ml_forecast_upper{job="cpu-forecast"} * 1.1
```

### 2. Outlier alert — one service deviates from peers

```bash
# 1. Create outlier job (DBSCAN — groups peers, flags the odd one)
curl -X POST https://<stack>.grafana.net/api/plugins/grafana-ml-app/resources/ml/v1/outlier \
  -H "Authorization: Bearer <token>" -H "Content-Type: application/json" \
  -d '{
    "name": "service-error-outliers",
    "metric": "sum(rate(http_requests_total{status=~\"5..\"}[5m])) by (service)",
    "datasourceId": 1,
    "interval": 300,
    "algorithm": { "name": "dbscan", "sensitivity": 0.5, "config": { "epsilon": 0.5 } }
  }'

# 2. Verify the score metric exists (<datasourceId> must match the
#    datasourceId used above, or run the query from Explore instead)
curl -s -H "Authorization: Bearer <token>" \
  'https://<stack>.grafana.net/api/datasources/proxy/<datasourceId>/api/v1/query?query=ml_outlier_score{job="service-error-outliers"}' \
  | jq '.data.result | length'

# 3. Alert when ml_outlier_score{job="service-error-outliers"} > 0.8 for 5m
```

### 3. Run a Sift investigation

```bash
# 1. Trigger from API (or from Explore / Incident / OnCall)
curl -X POST https://<stack>.grafana.net/api/plugins/grafana-sift-app/resources/sift/v1/investigations \
  -H "Authorization: Bearer <token>" -H "Content-Type: application/json" \
  -d '{ "name":"checkout-spike","start":"2024-02-01T10:00:00Z","end":"2024-02-01T10:30:00Z",
        "filters":{"service":"checkout","namespace":"production"} }'

# 2. The response includes an investigation ID — open it in the UI:
#    https://<stack>.grafana.net/a/grafana-sift-app/investigations/<id>
# 3. Verify analyses ran — each of the 8 checks shows ✔ or ✖ with linked evidence.
```

See [`references/sift.md`](references/sift.md) for the full 8-analysis table.

### 4. Wire up the LLM Plugin

```yaml
# 1. Provision (provisioning/plugins/llm.yaml — see references/llm-and-graph.md)
apiVersion: 1
apps:
  - type: grafana-llm-app
    jsonData: { openAIUrl: https://api.openai.com, openAIModel: gpt-4o }
    secureJsonData: { openAIKey: sk-... }
```

```bash
# 2. Restart Grafana, then verify the health endpoint reports the configured provider
curl -s -H "Authorization: Bearer <token>" \
  https://<stack>.grafana.net/api/plugins/grafana-llm-app/health | jq
# Expect: {"status":"ok", ...}

# 3. Verify in a panel — open any panel, click the Assistant icon, ask "what does this query do?"
```

See [`references/llm-and-graph.md`](references/llm-and-graph.md) for Assistant capabilities, Knowledge Graph search syntax, and Adaptive Metrics recommendations.

## Resources

- [Machine Learning docs](https://grafana.com/docs/grafana-cloud/alerting-and-irm/machine-learning/)
- [Sift](https://grafana.com/docs/grafana-cloud/alerting-and-irm/machine-learning/sift/)
- [Grafana Assistant](https://grafana.com/docs/grafana-cloud/visualizations/grafana-assistant/)
- [LLM Plugin](https://grafana.com/grafana/plugins/grafana-llm-app/)

© grafana · Apache-2.0 · grafana/skills

Similar skills

Everything for AI and ML →

From the same set51

reconciler-logic Helps implement reconcilers and watchers for grafana-app-sdk applications. Guides reconcile loops, atomic status updates, and resource filters. CX Codex +1 4,200installs app-sdk-concepts This skill guides Grafana App Platform work: choose a deployment mode, scaffold an app, and connect CUE schemas with generated Go logic. CX Codex +1 4,200installs adaptive-metrics A skill for working with Adaptive Metrics aggregation rules: it helps shrink active-series count in Grafana Cloud Metrics and dig into a high Mimir bill. CX Codex +1 4,200installs private-connectivity Sets up private network connectivity to Grafana Cloud over AWS PrivateLink, Azure Private Link, GCP Private Service Connect and PDC. Useful when telemetry must stay off the public internet. CX Codex +1 4,100installs react-19-plugin-migration This skill guides changes that prepare a Grafana plugin for React 19 compatibility without upgrading React itself. Use it to scan a plugin and work through the migration steps. CX Codex +1 4,100installs admin A skill for Grafana Cloud account work: creates stacks, mints service-account tokens, configures SSO and RBAC roles. CX Codex +1 4,200installs plugin-bundle-size Helps reduce the module.js entry point in Grafana app plugins using React.lazy, Suspense, and Webpack code splitting. CX Codex +1 4,200installs admission-control Guides you through writing validators and mutators for grafana-app-sdk apps, so resources get checked and adjusted before they hit Kubernetes. CX Codex +1 4,200installs

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor