mcpbeat

Dt App Dashboards

dynatrace/dt-app-dashboards

Work with Dynatrace dashboards - create, modify, query, and analyze dashboard JSON including tiles, layouts, DQL queries, variables, and visualizations.

8k tokens
context cost
the whole folder, loaded on every use
7
files
instructions only
0
copies elsewhere
how many repositories repackaged it
118
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/Dynatrace/dynatrace-for-ai --skill dt-app-dashboards

What comes with it

28 465 bytes besides the instruction
assets/ExampleDashboard.json
assets/visualization-settings.reference.jsonc
references/analyzing.md
references/create-update.md
references/tiles.md
references/variables.md

The instruction itself

8 sections, as written by the author

Dynatrace Dashboard Skill

Overview

Dynatrace dashboards are JSON documents stored in the Document Store containing

tiles (content/visualizations), layouts (grid positioning), and variables

(dynamic query parameters).

When to use: Creating, modifying, querying, or analyzing dashboards.

Dashboard JSON Structure

{
  "name": "My Dashboard",
  "type": "dashboard",
  "content": {
    "version": 21,
    "variables": [],
    "tiles": { "<id>": { "type": "data|markdown", ... } },
    "layouts": { "<id>": { "x": 0, "y": 0, "w": 24, "h": 8 } }
  }
}
  • Tile IDs in tiles must match IDs in layouts
  • Grid is 24 units wide. Common widths: 24 (full), 12 (half), 6 (quarter)
  • Two tile types: markdown (text content) and data (DQL query + visualization)

Optional content properties: settings, refreshRate, annotations

Reading & Analyzing

Fetch full content with dtctl get dashboard <id> -o json --plain (describe returns metadata only), then inspect the JSON to discover its available properties. Carefully read references/analyzing.md before analyzing.

Create/Update Workflow (Mandatory Order)

Carefully follow the workflow described in references/create-update.md.

Key rules:

  • Load domain skills BEFORE generating queries — do not invent DQL
  • Validate ALL queries before adding to dashboard
  • No time-range filters in queries unless explicitly requested by user
  • Set name before deploying
  • Updating — ALWAYS download first: dtctl get dashboard <id> -o json --plain > dashboard.json, modify, then deploy the downloaded file. Never reconstruct JSON from scratch or inject an id manually — both silently overwrite any UI edits the user made since last deployment.
  • Deploy with dtctl apply — validation runs automatically, and the local file is deleted on success.

Visualization Types

  • Time-series (require timeseries/makeTimeseries): lineChart, areaChart, barChart, bandChart
  • Categorical (summarize ... by:{field}): categoricalBarChart, pieChart, donutChart
  • Single value/gauge (single numeric record): singleValue, meterBar, gauge
  • Tabular (any data shape): table, raw, recordList
  • Distribution/status: histogram, honeycomb
  • Maps: choroplethMap, dotMap, connectionMap, bubbleMap
  • Matrix: heatmap, scatterplot

Required field types per visualization: references/tiles.md

Variables Quick Reference

{ "version": 2, "key": "Service", "type": "query", "visible": true,
  "editable": true, "input": "smartscapeNodes SERVICE | fields name",
  "multiple": false }
  • Single-select: filter service.name == $Service
  • Multi-select: filter in(service.name, array($Service))
  • Types: query (DQL-populated), csv (static list), text (free-form)

Full variable reference: references/variables.md

References

| File | When to Load |

|------|-------------|

| create-update.md | Creating/updating dashboards |

| tiles.md | Tile types, visualization field requirements, settings |

| variables.md | Variable types, replacement strategies, patterns |

| analyzing.md | Reading dashboards, extracting queries, health assessment |

How to use it

Copy the folder

Take dynatrace/dt-app-dashboards from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.