
Dt App Dashboards
Author Dynatrace dashboard JSON with markdown and data tiles, DQL timeseries queries, chart thresholds, and visualization settings for AI-assisted app observability.
Overview
dt-app-dashboards is an agent skill for the Operate phase that builds Dynatrace dashboard JSON with markdown and DQL data tiles, charts, and alert thresholds.
Install
npx skills add https://github.com/dynatrace/dynatrace-for-ai --skill dt-app-dashboardsWhat is this skill?
- Dashboard document schema with version, variables, and numbered tile map
- Markdown tiles for section headers and operator runbook context
- Data tiles with DQL queries (e.g. dt.service.request.response_time timeseries)
- Line chart visualization with analyzed timeframe and legend placement
- Multi-tier thresholds (OK / WARN / CRITICAL) with comparator rules and design-token colors
- Dashboard content version 21 in example schema
- 3-tier threshold rules (OK, WARN, CRITICAL) in sample tile
Adoption & trust: 720 installs on skills.sh; 87 GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
Your Dynatrace environment has metrics but no version-controlled dashboard JSON your agent can extend with consistent tiles, queries, and threshold semantics.
Who is it for?
Indie builders and small teams already on Dynatrace who want repeatable monitoring dashboards for services and AI workloads.
Skip if: Greenfield projects with no Dynatrace tenant, or builders who only need local dev logging without APM.
When should I use this skill?
When building or editing Dynatrace app dashboards with markdown tiles, data queries, and visualization settings for production monitoring.
What do I get? / Deliverables
You get valid dashboard documents with markdown and data tiles, DQL queries, line charts, and OK/WARN/CRITICAL thresholds ready to import or iterate in Dynatrace.
- Dashboard JSON (type dashboard) with tiles and queries
- Threshold and visualizationSettings blocks for data tiles
Recommended Skills
Journey fit
Custom dashboards are maintained after services run in production, when you need repeatable visibility into latency, services, and health—not during initial ideation. Fits monitoring subphase: defining tiles, queries, and threshold bands for services already instrumented in Dynatrace.
How it compares
Dashboard JSON templates for Dynatrace Grail/DQL—not a generic Grafana or Datadog skill.
Common Questions / FAQ
Who is dt-app-dashboards for?
Solo builders and small teams operating SaaS or APIs on Dynatrace who want agents to produce importable monitoring dashboards instead of one-off UI edits.
When should I use dt-app-dashboards?
In Operate → monitoring when rolling out service health views, tuning response-time thresholds, or documenting runbooks on dashboard markdown tiles after launch.
Is dt-app-dashboards safe to install?
Review the Security Audits panel on this Prism page; dashboard skills may reference production query patterns—validate queries and access scopes in your tenant before publishing boards broadly.
SKILL.md
READMESKILL.md - Dt App Dashboards
{ "name": "Example Dashboard", "type": "dashboard", "content": { "version": 21, "variables": [], "tiles": { "0": { "type": "markdown", "content": "# Example Dashboard\nDemonstrates tile types and visualizations." }, "1": { "type": "data", "title": "Response Time (line chart with thresholds)", "query": "timeseries avg(dt.service.request.response_time), by:{dt.smartscape.service}", "visualization": "lineChart", "visualizationSettings": { "chartSettings": { "xAxisScaling": "analyzedTimeframe", "legend": { "position": "right" } }, "thresholds": [ { "id": 1, "field": "", "title": "", "isEnabled": true, "rules": [ { "id": 0, "color": { "Default": "var(--dt-colors-charts-status-ideal-default, #2f6862)" }, "comparator": "≥", "label": "OK", "value": 0 }, { "id": 1, "color": { "Default": "var(--dt-colors-charts-status-warning-default, #eea53c)" }, "comparator": "≥", "label": "WARN", "value": 4000000 }, { "id": 2, "color": { "Default": "var(--dt-colors-charts-status-critical-default, #c62239)" }, "comparator": "≥", "label": "CRITICAL", "value": 8000000 } ] } ], "unitsOverrides": [ { "identifier": "avg(dt.service.request.response_time)", "unitCategory": "time", "baseUnit": "microsecond", "displayUnit": null, "decimals": null, "suffix": "", "delimiter": false, "added": 1770204632795 } ] }, "querySettings": {} }, "2": { "type": "data", "title": "Events by Category (donut)", "query": "fetch dt.davis.events\n| summarize count(), by:{event.category}", "visualization": "donutChart", "visualizationSettings": { "chartSettings": { "circleChartSettings": { "valueType": "relative" } } }, "querySettings": {} }, "3": { "type": "data", "title": "Total Events (single value)", "query": "fetch dt.davis.events\n| summarize count=count()", "visualization": "singleValue", "visualizationSettings": { "singleValue": { "colorThresholdTarget": "value", "recordField": "count", "label": "Number Events", "isIconVisible": true }, "unitsOverrides": [ { "identifier": "count", "unitCategory": "unspecified", "baseUnit": "count", "displayUnit": null, "decimals": null, "suffix": "", "delimiter": false, "added": 1770205033513 } ] }, "querySettings": {} } }, "layouts": { "0": { "x": 0, "y": 0, "w": 24, "h": 1 }, "1": { "x": 0, "y": 1, "w": 12, "h": 7 }, "2": { "x": 12, "y": 1, "w": 12, "h": 7 }, "3": { "x": 0, "y": 8, "w": 24, "h": 5 } } } } { // Reference for visualizationSettings by visualization type. // All properties are optional unless noted. Only visualization-specific // differences are shown; shared patterns (legend, tooltip, zoom, // unitsOverrides, coloring, thresholds) apply to most chart types. // ── Shared patterns (apply to most visualizations) ── // legend: { "position": "auto", "showLegend": true, "textTruncationMode": "end", "ratio": "auto" } // tooltip: { "variant": "single", "seriesDisplayMode": "single-line" } // zoom: { "isActive": true, "zoom": {"enabled": true}, "pan": {"enabled": true}, "zoomX": {"enabled": true} } // coloring: { "colorRules": [], "thresholdRules": [] } // unitsOverrides: [{ "identifier": "field", "unitCategory": "time", "baseUnit": "microsecond", "displayUnit": null, "decimals": null, "suffix": "", "delimiter": false, "added": <timestamp> }] // ── Time-series charts (lineChart, areaChart, barChart, bandChart) ── "lineChart": { "vis