dt-app-dashboards
dynatrace/dynatrace-for-ai
Create, modify, and analyze Dynatrace dashboards with JSON tiles, layouts, DQL queries, and variables.
What is dt-app-dashboards?
This skill enables you to work with Dynatrace dashboards stored as JSON documents. Use it when you need to create new dashboards, modify existing ones, query dashboard structure, or analyze dashboard configurations including tiles, layouts, DQL queries, variables, and visualizations.
- Create dashboards with tiles (markdown and data visualizations) and grid layouts
- Modify existing dashboards by reading current state, editing JSON, and deploying changes
- Define dashboard variables (query-based, CSV, or text) for dynamic filtering and parameterization
- Work with DQL queries embedded in data tiles and validate them before deployment
- Configure visualization types (time-series, categorical, single-value, tabular, maps, heatmaps) with appropriate field mappings
- Analyze dashboard structure to discover properties, extract queries, and assess dashboard health
How to install dt-app-dashboards
npx skills add https://github.com/dynatrace/dynatrace-for-ai --skill dt-app-dashboards- Dynatrace environment with Document Store access
- dtctl CLI tool installed and authenticated to your Dynatrace tenant
- Basic understanding of DQL (Dynatrace Query Language) for data tiles
How to use dt-app-dashboards
- 1.Load domain skills (e.g., metric or log domain) before generating any DQL queries to avoid inventing unsupported queries
- 2.For new dashboards: design the structure (tiles, layout grid, variables) and validate all DQL queries using the domain skills
- 3.For existing dashboards: fetch the current JSON with `dtctl get dashboard <id> -o json`, save it locally, make your modifications, then deploy with `dtctl apply`
- 4.Define variables using query, CSV, or text types; use `$VariableName` syntax in DQL filters (single-select with `==`, multi-select with `in()`)
- 5.Choose the correct visualization type based on your data shape (time-series for trends, categorical for summaries, table for raw records, maps for geographic data)
- 6.Deploy and validate: `dtctl apply` runs automatic validation; fix all reported errors before re-applying
Use cases
- Build a performance monitoring dashboard with time-series charts for application metrics and service health
- Create a multi-variable dashboard that filters data by service, environment, and time range using dynamic query variables
- Modify an existing dashboard to add new tiles or change visualization types without losing user-made UI edits
- Extract and validate all DQL queries from a dashboard to audit data sources and query logic
- Set up a categorical dashboard with pie charts and bar charts summarizing data by business dimensions
- Dynatrace platform administrators building and maintaining dashboards
- DevOps engineers creating monitoring and observability dashboards
- Site reliability engineers (SREs) designing dashboards for incident response and alerting
- Data analysts building analytical dashboards with Dynatrace data
- Teams automating dashboard creation and updates via CI/CD pipelines
dt-app-dashboards FAQ
`dtctl get dashboard <id> -o json` returns the full JSON content including tiles, layouts, and variables. `dtctl describe` returns metadata only. Always use `get` when you need to read or modify dashboard structure.
No. Never inject an `id` manually or reconstruct JSON from scratch. For updates, always read the current state first with `dtctl get`, modify that file, then deploy. Manual ID injection silently overwrites user-made UI edits.
Define a variable with type `query`, `csv`, or `text`. In your DQL query, use `$VariableName`. For single-select filters use `filter service.name == $Service`; for multi-select use `filter in(service.name, array($Service))`.
The grid is 24 units wide. Common widths: 24 (full width), 12 (half width), 6 (quarter width). Set `x`, `y`, `w` (width), and `h` (height) in the layouts section to position tiles.
No. Omit time-range filters unless explicitly requested by the user. Dynatrace dashboards handle time selection at the dashboard level, not in individual queries.
Full instructions (SKILL.md)
Source of truth, from dynatrace/dynatrace-for-ai.
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
{
"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
tilesmust match IDs inlayouts - Grid is 24 units wide. Common widths: 24 (full), 12 (half), 6 (quarter)
- Two tile types:
markdown(text content) anddata(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 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
namebefore deploying - Updating — ALWAYS read the current state first:
dtctl get dashboard <id> -o json, save it asdashboard.json, modify that file, then deploy it. Never reconstruct JSON from scratch or inject anidmanually — 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
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 |
Related skills
More from dynatrace/dynatrace-for-ai and the wider catalog.

dt-app-notebooks
Create, modify, and analyze Dynatrace notebooks with DQL queries and visualizations.

dt-dql-essentials
Write, optimize, and fix DQL queries with syntax guidance, patterns, and cost-reduction techniques.

dt-js-runtime
Dynatrace server-side JavaScript runtime for executing functions with Web APIs, Node.js modules, and SDK access.

dt-migration
Migrate Dynatrace classic and Gen2 entity-based DQL queries to Smartscape equivalents.

dt-obs-aws
Monitor and analyze AWS infrastructure—EC2, RDS, Lambda, ECS/EKS, VPC, load balancers, storage, and costs—using Dynatrace Smartscape and DQL.

dt-obs-azure
Monitor and audit Azure infrastructure, resources, and security posture in Dynatrace.