Agent Skills: Datadog Dashboards

Corrects the wrong defaults a model has when building Datadog dashboards, verified against Datadog's docs in July 2026. Use when creating, editing, or reviewing a Datadog dashboard — choosing widgets, writing metric/log/span queries, or emitting widget JSON. Covers the queries that render a plausible number and are still wrong — `.as_count()` is appended automatically in the graph editor but never through the API, so programmatic counts silently average; `p95` resolves only on distribution metrics, and averaging one is an average of averages; ratios need `.as_count()` on both sides or they divide interpolated averages. Also covers grounding queries in metrics that exist rather than invented names, wire type strings that diverge from UI names (Pie Chart is `sunburst`, Table is `query_table`), and Datadog's own layout standard. Assumes the Datadog MCP server is connected. NOT for Terraform or raw Dashboard API management, monitor and SLO authoring, or non-Datadog observability tools.

UncategorizedID: pproenca/dot-skills/datadog-dashboards

Install this agent skill to your local

pnpm dlx add-skill https://github.com/pproenca/dot-skills/tree/HEAD/skills/.experimental/datadog-dashboards

Skill Files

Browse the full folder contents for datadog-dashboards.

Download Skill

Loading file tree…

skills/.experimental/datadog-dashboards/SKILL.md

Skill Metadata

Name
datadog-dashboards
Description
Corrects the wrong defaults a model has when building Datadog dashboards, verified against Datadog's docs in July 2026. Use when creating, editing, or reviewing a Datadog dashboard — choosing widgets, writing metric/log/span queries, or emitting widget JSON. Covers the queries that render a plausible number and are still wrong — `.as_count()` is appended automatically in the graph editor but never through the API, so programmatic counts silently average; `p95` resolves only on distribution metrics, and averaging one is an average of averages; ratios need `.as_count()` on both sides or they divide interpolated averages. Also covers grounding queries in metrics that exist rather than invented names, wire type strings that diverge from UI names (Pie Chart is `sunburst`, Table is `query_table`), and Datadog's own layout standard. Assumes the Datadog MCP server is connected. NOT for Terraform or raw Dashboard API management, monitor and SLO authoring, or non-Datadog observability tools.

Datadog Dashboards

The decisions Datadog forces when you build a dashboard, and how to settle them. Every rule names the wrong default it corrects; there is no rule for what the model already gets right.

Pinned to a date, not a version. Datadog ships continuously, so every claim here was verified against docs.datadoghq.com in July 2026. Re-verify before trusting anything version-shaped — deprecations here (q, default, is_read_only, week_before()) still parse today.

Assumes the Datadog MCP server is connected (https://mcp.<site>/v1/mcp, toolsets=dashboards,widgets). Widget schemas are deliberately not restated in this skill — get_widget_reference returns them current at call time, and a copy here would go stale. If the server is not connected, set it up first (ship-endpoint-follows-the-site); this skill does not cover Terraform or raw API management.

When to Apply

Use this skill when:

  • Creating or editing a Datadog dashboard, or reviewing one someone else built — especially a board assembled programmatically rather than in the graph editor, which is where the .as_count() divergence bites
  • Writing any Datadog query destined for a widget: metric queries with space aggregators and modifiers, or logs / spans / rum queries with search + compute + group_by
  • Choosing between visualizations, or being handed a request that says "graph" but wants a ranking, a single number, or an error budget
  • A dashboard shows numbers nobody trusts, panels that render "No data", or a value that changes when the time frame changes
  • Asked for "a dashboard for X" with no stated audience — the interview in scope-ask-audience-and-decision runs before anything is built

This skill is NOT for:

  • Managing dashboards through Terraform or the raw Dashboard API (this skill assumes the MCP server)
  • Authoring monitors or defining SLOs — though scope-not-every-question-is-a-dashboard covers recognising when the request is one of those
  • Datadog instrumentation: agent config, tracer setup, or deciding which metrics to emit in the first place
  • Non-Datadog observability platforms — the query semantics here do not transfer

Rule Categories

| # | Category | Prefix | Covers | |---|----------|--------|--------| | 1 | Purpose & Scope | scope- | Audience, the decision it drives, variables over duplication, when it should not be a dashboard | | 2 | Grounding in the Account | disco- | Confirming metrics, tags, and facets exist before querying them | | 3 | Query Semantics | query- | The queries that return a number and are wrong | | 4 | Choosing the Widget | widget- | Matching question to visualization; the pairs that are not interchangeable | | 5 | Dashboard JSON | json- | What widget validation cannot see or cannot explain | | 6 | Layout & Readability | layout- | Datadog's own standard for structure, display types, titles, sizing | | 7 | Shipping It | ship- | Validate-and-smoke-test before writing; region endpoints |

Quick Reference

1. Purpose & Scope

2. Grounding in the Account

3. Query Semantics

4. Choosing the Widget

5. Dashboard JSON

6. Layout & Readability

7. Shipping It

How to Use

Read a reference file when its decision comes up. Each rule names the wrong default it corrects, then shows the canonical form — with an incorrect/correct contrast only where the wrong way is a real trap.

Three shortcuts worth taking first:

  • Building a dashboard from a request? Run scope-ask-audience-and-decision, then disco-never-invent-metric-names, before emitting anything. Skipping either produces a board that is fluent and useless.

  • Reviewing a dashboard whose numbers look wrong? Start with query-append-as-count-explicitly and query-percentiles-require-distributions. Together they account for most Datadog panels that are confidently incorrect, and neither leaves a trace in the UI.

  • Porting dashboard JSON written before 2025? json-queries-and-formulas-not-q and json-template-variables-take-defaults are the deprecations that still parse, so nothing points you at them.

  • Section definitions — category structure and ordering rationale

  • Rule template — for adding new rules

  • AGENTS.md — auto-built table of contents across all rules