Builds charts and dashboards from your LaunchDarkly observability data: logs, traces, errors, sessions, metrics and events. It shows each chart as a preview first and saves it to a dashboard only after you confirm.
WHEN YOUR AGENT SHOULD USE IT
USE FOR
- Chart error rates or latency percentiles over time.
- Compare errors by service or requests by endpoint.
- Add charts to an existing dashboard, or start a new one.
- Copy an existing chart's exact setup into a new one.
This is the playbook your agent receives when the skill activates — you don't need to read it to use the skill, but it's here to audit before installing.
Create graphs and dashboards
Prerequisites
This skill uses the following LaunchDarkly MCP tools:
preview-graph— render a chart preview inline without saving itcreate-graph— add a chart to an existing dashboardcreate-dashboard— create a new empty dashboardlist-dashboards— list existing dashboardsget-dashboard— get the full config of a dashboard, including its graphsget-keys— discover available metrics, attributes, and keys for a product type
All of these tools require a projectKey (e.g. "default").
Overview
You are building observability graphs. Your tools are precise — get the enum values wrong and the API rejects the call. Always use get-keys before building a query to confirm the dimension names are real.
Capabilities
list-dashboards— list existing dashboards to check for duplicates or find a targetget-dashboard— get the full config of an existing dashboard, including its graphscreate-dashboard— create a new dashboardpreview-graph— render a chart preview inlinecreate-graph— add a chart to a dashboardget-keys— discover available metrics, attributes, and keys for a product type
When the user's request is purely about visualizing data, stay on task — don't reach for unrelated tools.
Workflow
- Identify the target dashboard. If the user already has a specific dashboard in mind (by ID or name), add graphs to it directly. Otherwise, call
list-dashboardsand offer to target an existing one or create a new one withcreate-dashboard. - Discover the data shape. Call
get-keysfor the relevant product type before building a query. Attribute names vary across services —service_namevsservice.namevsserviceName. Guessing wastes tool calls. - For ambiguous requests, ask a brief clarifying question as regular text. Example: "I found several latency-related keys. Would you like P50 or P95 latency, and should I group by service name?" Keep clarifications short — one or two questions max. For minor ambiguity (chart type preference), make a reasonable default and note your assumption.
- Preview before committing. Call
preview-graphfirst, show the user an inline preview, and confirm before callingcreate-graph. For multiple graphs, preview and confirm each one individually. - Create the graph with
create-graph. Use exact enum casing fromenums.md. - Confirm what was created — provide the dashboard URL and a one-line description of what the graph shows.
Duplicating existing graphs
When asked to duplicate or copy a graph, call get-dashboard to retrieve the full configuration (expressions, product type, query, groupBy, display settings), then replicate those values in create-graph. Do not guess from the graph title alone — titles drift from the underlying config.
Guidelines
- Be concise — don't narrate intermediate tool calls. Skip prefaces like "First, let me discover the keys" or "Now I'll build the chart." One short sentence at the start of the reply is enough if needed (e.g. "Building a chart of recent logs by level."); after that, just call the tools.
- Prefer multiple focused graphs over one complex graph. A dashboard with 3 clean graphs beats one graph with 5 overlapping expressions.
- Always call
get-keysbefore building a query. Prevents silent empty results from wrong field names.
Chart-type picks
Line chart— time-series trends. Error rates over time, latency percentiles, request volume.Bar chart(or histogram) — comparisons across a dimension. Errors by service, requests by endpoint.Table— detailed breakdowns with multiple dimensions where a chart wouldn't convey the detail.
Aggregators
Count— total events (most common). Requirescolumn=""(empty string).CountDistinct— unique values. Users, sessions, flag keys.Avg,P50,P90,P95,P99— latency distributions.Sum— numeric totals (payload size, revenue).
Common mistakes
- Using lowercase
sessionsforproductType. It'sSessions— PascalCase. Seeenums.md. - Omitting
columnon aCountexpression. The API requires it; pass empty string"". - Using
count_distinctorCount_distinct. It'sCountDistinct— PascalCase, no underscore. - Building a query without
get-keysfirst and getting empty results because the attribute name was wrong. - Using date-only format (
2026-03-04) forget-keys. Needs full ISO with time:2026-03-04T00:00:00Z.
Needs another service connected
1 FOR YOU- 01LaunchDarkly's hosted MCP server and your project key
LaunchDarkly's hosted MCP server, with its dashboard and chart tools, and your LaunchDarkly project key. LaunchDarkly's plugin for Claude Code adds the server and asks you to sign in when it first connects.
In the launchdarkly/ai-tooling repository — the LaunchDarkly Agent Skills plugindoesn't install this skill.
Copy & paste — that's it
npx skills add launchdarkly/ai-tooling --skill "create-graph" --full-depthRun this in your project — your agent picks the skill up automatically.
Licensed under Apache-2.0— you can use, modify, and redistribute it under that license's terms.
View the full license file on GitHub →