Skip to main content
skill CX Codex

dt-app-dashboards — Claude Code skill: what it does, how to install

Works with Dynatrace dashboards as JSON documents: creates layouts, adds DQL tiles, configures variables, and deploys via dtctl.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add Dynatrace/dynatrace-for-ai --skill dt-app-dashboards -a claude-code
Open on GitHub

What dt-app-dashboards does

This skill guides AI agents through modifying Dynatrace dashboard JSON files stored in the Document Store. It structures the grid layout, sets up markdown and data tiles, and wires DQL queries to specific visualization types like charts, tables, or single-value gauges.

Reading a dashboard requires dtctl get dashboard <id> -o json because describe returns metadata only. During updates, you must fetch and edit the existing dashboard.json before running dtctl apply. Rebuilding the JSON from scratch silently destroys any layout or query changes teammates made directly in the Dynatrace UI.

What it helps with

  • generate valid Dynatrace dashboard JSON with DQL tiles and grid positioning
  • update existing dashboards via dtctl apply without overwriting UI changes
  • configure single-select and multi-select dashboard variables for DQL queries
  • inspect dashboard structure and layout properties via dtctl get

Example prompts for the agent

  • Fetch dashboard <id> with dtctl, add a categoricalBarChart tile, and validate the DQL query
  • Create a Dynatrace dashboard JSON file with a Service variable and a full-width lineChart
  • Validate the DQL queries before updating dashboard.json and deploy via dtctl

How to install dt-app-dashboards

1Skills CLI (Vercel)

npx skills add Dynatrace/dynatrace-for-ai --skill dt-app-dashboards -a claude-code

2Manually: put the files in place

~/.claude/skills/dt-app-dashboards/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/dt-app-dashboards/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about dt-app-dashboards

How to install dt-app-dashboards in Claude Code?

Run npx skills add Dynatrace/dynatrace-for-ai --skill dt-app-dashboards -a claude-code in your terminal.

What does dt-app-dashboards do?

It provides workflow rules for AI coding assistants to generate, inspect, and update Dynatrace dashboards using dtctl and valid DQL.

Why must updates start with dtctl get dashboard <id> -o json?

Creating the JSON from scratch or manually injecting an ID silently overwrites changes made in the Dynatrace web UI. Fetching the live JSON first prevents data loss.

Source text

SKILL.md · Apache-2.0
---
name: dt-app-dashboards
description: Work with Dynatrace dashboards - create, modify, query, and analyze dashboard JSON including tiles, layouts, DQL queries, variables, and visualizations.
license: Apache-2.0
---

# 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

```json
{
  "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` (`describe` returns metadata only), then inspect the JSON to discover its available properties. Carefully read [references/analyzing.md](references/analyzing.md) before analyzing.

## Create/Update Workflow (Mandatory Order)

Carefully follow the workflow described in [references/create-update.md](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 read the current state first:** `dtctl get dashboard <id> -o json`, save it as `dashboard.json`, modify that file, then deploy it. 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. If it fails, fix **all** reported errors before re-applying.

## 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](references/tiles.md)

## Variables Quick Reference

```json
{ "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/variables.md)

## References

| File | When to Load |
|------|-------------|
| [create-update.md](references/create-update.md) | Creating/updating dashboards |
| [tiles.md](references/tiles.md) | Tile types, visualization field requirements, settings |
| [variables.md](references/variables.md) | Variable types, replacement strategies, patterns |
| [analyzing.md](references/analyzing.md) | Reading dashboards, extracting queries, health assessment |

© Dynatrace · Apache-2.0 · Dynatrace/dynatrace-for-ai

Similar skills

Everything for DevOps and infrastructure →

From the same set29

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor