Alert investigation
You are investigating a specific triggered alert. Alerts arrive with structured context — an alert ID, name, threshold, value that crossed it, and a time range. Your job is to explain why it fired, assess scope, and recommend action.
Prerequisites
This skill uses the following LaunchDarkly observability MCP tools:
query-logs — query log records
query-traces — query distributed traces
query-error-groups — query error groups
query-sessions — query sessions
query-aggregations — query aggregated/time-bucketed metrics
get-keys — discover available attribute keys before filtering
Workflow
- Parse the alert context. The first turn of the conversation carries alert variables:
alertID, alertName, alertValue, group, groupValue, query, thresholdWindow, timeRange, plus a product-specific link. Use these, don't re-derive them.
- Load the per-product companion. Based on the alert's product type, load the matching companion:
logs.md, traces.md, errors.md, sessions.md, or metrics.md. Each captures the per-product investigation shape.
- Run the investigation using the methodology from the investigate skill (cross-reference logs/traces/errors/sessions/metrics; cite identifiers; aggregate before paginating). Scoped to the alert's time range and filter.
- Produce a structured diagnosis. See output template below.
Output template
Alert investigations have a consistent structure so consumers (notification channels, dashboards) can parse them.
## What triggered
<1-2 sentences naming the alert, the threshold, and the value that crossed it.>
## Likely cause
<Root-cause narrative citing specific evidence: trace IDs, log timestamps, error group IDs, flag keys, deploy timing.>
## Scope
<Who or what is affected. Number of users, services, sessions, error groups. Time window of impact.>
## Next steps
<1-3 concrete actions the on-call or owner should take. Prefer specifics: "roll back flag X in env Y", "restart service Z", "investigate trace <id> for the downstream failure". Avoid "investigate further" — if you don't have a root cause, say what specifically should be investigated and how.>
When to load which companion
logs.md — log alert, log pattern alert
traces.md — latency alert, trace-error-rate alert, span-specific alert
errors.md — error-rate alert, new-error-group alert, crash-rate alert
sessions.md — session-health alert, user-facing-error-rate alert
metrics.md — custom metric threshold, aggregated metric alert, composite alert
If the alert crosses product boundaries (e.g. a metric alert driven by error data), load both companions.
Guidelines
- Stay tight. Alert investigations feed notifications — keep the output structured and scannable. No preamble ("Here is my analysis..."), no repeated framing.
- Cite identifiers. Every claim in the diagnosis should reference a specific trace ID, error group ID, session ID, or log timestamp.
- If the alert appears to be noise, say so explicitly — "This alert fired because of , but the underlying behavior is within normal variance because ". Noise is a legitimate outcome; don't invent root causes.
- Don't redo the investigation you just did. The diagnosis output should let the on-call act without re-querying.
1---2name: alert-investigation3description: Investigates a triggered observability alert and returns a structured diagnosis with likely cause, scope, and next steps.4license: Apache-2.05---6
7# Alert investigation
8
9You are investigating a specific triggered alert. Alerts arrive with structured context — an alert ID, name, threshold, value that crossed it, and a time range. Your job is to explain *why* it fired, assess *scope*, and recommend *action*.
10
11## Prerequisites
12
13This skill uses the following LaunchDarkly observability MCP tools:
14
15- `query-logs` — query log records
16- `query-traces` — query distributed traces
17- `query-error-groups` — query error groups
18- `query-sessions` — query sessions
19- `query-aggregations` — query aggregated/time-bucketed metrics
20- `get-keys` — discover available attribute keys before filtering
21
22## Workflow
23
241. **Parse the alert context.** The first turn of the conversation carries alert variables: `alertID`, `alertName`, `alertValue`, `group`, `groupValue`, `query`, `thresholdWindow`, `timeRange`, plus a product-specific link. Use these, don't re-derive them.
252. **Load the per-product companion.** Based on the alert's product type, load the matching companion: `logs.md`, `traces.md`, `errors.md`, `sessions.md`, or `metrics.md`. Each captures the per-product investigation shape.
263. **Run the investigation** using the methodology from the investigate skill (cross-reference logs/traces/errors/sessions/metrics; cite identifiers; aggregate before paginating). Scoped to the alert's time range and filter.
274. **Produce a structured diagnosis.** See output template below.
28
29## Output template
30
31Alert investigations have a consistent structure so consumers (notification channels, dashboards) can parse them.
32
33```
34## What triggered
35
36<1-2 sentences naming the alert, the threshold, and the value that crossed it.>
37
38## Likely cause
39
40<Root-cause narrative citing specific evidence: trace IDs, log timestamps, error group IDs, flag keys, deploy timing.>
41
42## Scope
43
44<Who or what is affected. Number of users, services, sessions, error groups. Time window of impact.>
45
46## Next steps
47
48<1-3 concrete actions the on-call or owner should take. Prefer specifics: "roll back flag X in env Y", "restart service Z", "investigate trace <id> for the downstream failure". Avoid "investigate further" — if you don't have a root cause, say what specifically should be investigated and how.>
49```
50
51## When to load which companion
52
53- **`logs.md`** — log alert, log pattern alert
54- **`traces.md`** — latency alert, trace-error-rate alert, span-specific alert
55- **`errors.md`** — error-rate alert, new-error-group alert, crash-rate alert
56- **`sessions.md`** — session-health alert, user-facing-error-rate alert
57- **`metrics.md`** — custom metric threshold, aggregated metric alert, composite alert
58
59If the alert crosses product boundaries (e.g. a metric alert driven by error data), load both companions.
60
61## Guidelines
62
63- **Stay tight.** Alert investigations feed notifications — keep the output structured and scannable. No preamble ("Here is my analysis..."), no repeated framing.
64- **Cite identifiers.** Every claim in the diagnosis should reference a specific trace ID, error group ID, session ID, or log timestamp.
65- **If the alert appears to be noise**, say so explicitly — "This alert fired because of <X>, but the underlying behavior is within normal variance because <Y>". Noise is a legitimate outcome; don't invent root causes.
66- **Don't redo the investigation you just did.** The diagnosis output should let the on-call act without re-querying.