Creates observability dashboards and graphs from logs, traces, errors, sessions, metrics, and events data by previewing charts inline and saving them to a dashboard.
60
68%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./skills/observability/create-graph/SKILL.mdThis 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 typeAll of these tools require a projectKey (e.g. "default").
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.
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 typeWhen the user's request is purely about visualizing data, stay on task — don't reach for unrelated tools.
list-dashboards and offer to target an existing one or create a new one with create-dashboard.get-keys for the relevant product type before building a query. Attribute names vary across services — service_name vs service.name vs serviceName. Guessing wastes tool calls.preview-graph first, show the user an inline preview, and confirm before calling create-graph. For multiple graphs, preview and confirm each one individually.create-graph. Use exact enum casing from enums.md.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.
get-keys before building a query. Prevents silent empty results from wrong field names.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.Count — total events (most common). Requires column="" (empty string).CountDistinct — unique values. Users, sessions, flag keys.Avg, P50, P90, P95, P99 — latency distributions.Sum — numeric totals (payload size, revenue).sessions for productType. It's Sessions — PascalCase. See enums.md.column on a Count expression. The API requires it; pass empty string "".count_distinct or Count_distinct. It's CountDistinct — PascalCase, no underscore.get-keys first and getting empty results because the attribute name was wrong.2026-03-04) for get-keys. Needs full ISO with time: 2026-03-04T00:00:00Z.0aef88f
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.