dt-app-notebooks
Automates the deployment and modification of Dynatrace notebook configurations.
Install
mkdir -p .claude/skills/dt-app-notebooks && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/16826" && unzip -o skill.zip -d .claude/skills/dt-app-notebooks && rm skill.zipInstalls to .claude/skills/dt-app-notebooks
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Work with Dynatrace notebooks - create, modify, query, and analyze notebook JSON. Derives from the dt-app-dashboards skill with notebook-specific differences documented here.Key capabilities
- →Create Dynatrace notebooks by following dashboard workflows
- →Validate DQL queries using `dtctl query` before adding to notebooks
- →Deploy notebooks using the `deploy_notebook.sh` script
- →Modify existing notebooks by downloading, editing, and redeploying
- →Set `autoSelectVisualization` to true for automatic visualization selection
- →Analyze notebook JSON structure and map fields to dashboard equivalents
How it works
The skill creates, modifies, and analyzes Dynatrace notebooks by adapting workflows from the `dt-app-dashboards` skill, validating DQL queries, and deploying via a specific script.
Inputs & outputs
When to use dt-app-notebooks
- →Creating observability notebooks
- →Querying Dynatrace data
- →Deploying custom reporting layouts
About this skill
Dynatrace Notebook Skill
How to Use This Skill
Notebooks and dashboards are structurally similar. Follow the dt-app-dashboards skill for all workflows (creating, modifying, querying, analyzing), applying the differences documented below.
Mandatory Create/Update Workflow
- Load domain skills BEFORE generating queries — do not invent DQL
- Validate ALL queries via
dtctl query '<DQL>' --plainbefore adding to the notebook - Always set
"autoSelectVisualization": trueinvisualizationSettingsunless the user explicitly requests a specific visualization type - ALWAYS deploy via
deploy_notebook.sh— never usedtctl applydirectly:
The script validates the notebook first and blocks deployment on errors. Skipping it risks deploying broken notebooks. On successful deployment, the local file is deleted.bash scripts/deploy_notebook.sh notebook.json - When updating an existing notebook: download first with
dtctl get notebook <id> -o json --plain > notebook.json, modify, then deploy. Never reconstruct from scratch or inject anidmanually.
Notebook JSON Structure
{
"name": "My Notebook",
"type": "notebook",
"content": {
"version": "7",
"defaultTimeframe": { "from": "now()-2h", "to": "now()" },
"sections": [
{ "id": "uuid-1", "type": "markdown", "markdown": "# Title\nContext" },
{
"id": "uuid-2", "type": "dql", "title": "Query Section", "showInput": true,
"state": {
"input": { "value": "fetch logs | summarize count()" },
"visualization": "table",
"visualizationSettings": { "autoSelectVisualization": true, "chartSettings": {} },
"querySettings": {
"maxResultRecords": 1000, "defaultScanLimitGbytes": 500,
"maxResultMegaBytes": 1, "defaultSamplingRatio": 10, "enableSampling": false
}
}
}
]
}
}
Key Differences from Dashboards
Document Structure
| Aspect | Dashboard | Notebook |
|---|---|---|
type | "dashboard" | "notebook" |
content.version | 21 (number) | "7" (string) |
| Content blocks | tiles (object map) + layouts (object map) | sections (ordered array) |
| Variables | content.variables[] with query, csv, text types | None |
| Layout/grid | 24-unit grid via layouts with x, y, w, h | None — sections render top-to-bottom in array order |
| Default timeframe | Controlled by UI time picker | content.defaultTimeframe object with from/to |
Section Types vs Tile Types
Dashboards have two tile types (markdown, data). Notebooks have three section types:
markdown— Same concept. Fields:id,type,markdowndql— Equivalent to dashboarddatatiles, but query and visualization are nested insidestate(see table below)
Query & Visualization Path Mapping
| Field | Dashboard tile | Notebook DQL section |
|---|---|---|
| Query string | tile.query | section.state.input.value |
| Visualization type | tile.visualization | section.state.visualization |
| Visualization settings | tile.visualizationSettings | section.state.visualizationSettings |
| Query settings | tile.querySettings | section.state.querySettings |
| Section-specific timeframe | N/A (UI picker controls all tiles) | section.state.input.timeframe |
Notebook-Only Section Properties
autoSelectVisualization(boolean, invisualizationSettings) — whentrue, Dynatrace automatically selects the best visualization type for the query result. Prefertruewhen the user has no specific visualization preference. When set tofalse, you must explicitly setstate.visualizationto the desired type.showTitle(boolean) — show/hide section titleshowInput(boolean, defaulttrue) — show/hide query editor. Always set totrueunless explicitly requested otherwise.height(number, px) — section height (default ~400)drilldownPath— navigation path for drilldown interactionsfilterSegments— section-level filter segmentsdavis— Davis AI copilot configuration
Available Visualizations
Notebooks support: table, lineChart, areaChart, barChart, categoricalBarChart, pieChart, donutChart, singleValue, bandChart, histogram, honeycomb, raw, recordView
What Does NOT Apply from the Dashboard Skill
- Variables — Notebooks have no variables. Ignore all variable sections: types, substitution patterns (
$Var,array($Var)), dependency resolution, variable validation. - Layouts/grid — No positioning system. Section order in the array = display order. No
x,y,w,h. - Tile ID / Layout ID matching — Not applicable (no layouts object).
- UI timeframe picker warnings — Notebooks don't have a dashboard-style time picker that controls all queries. Instead,
content.defaultTimeframesets the default, and each section can override viasection.state.input.timeframe. Hardcoded time filters in queries are acceptable in notebooks. - Variable substitution in queries — Not applicable.
Validation & Deployment
Use the scripts in scripts/:
-
notebook-validator.js— Validates notebook structure and executes all DQL queries. Run via:cat notebook.json | jq '{notebook: .}' | dtctl exec function -f scripts/notebook-validator.js --data - --plain | jq -r .resultOr by notebook ID:
echo '{"notebookId":"<id>"}' | dtctl exec function -f scripts/notebook-validator.js --data - --plain | jq -r .result -
deploy_notebook.sh— Validates then deploys:bash scripts/deploy_notebook.sh notebook.json bash scripts/deploy_notebook.sh --dry-run notebook.json
Related Skills
- dt-app-dashboards — Base skill for all workflows; this skill documents only the differences
- dt-dql-essentials — DQL query syntax, functions, and optimization
When not to use it
- →When working with Dynatrace dashboards that are not notebooks
- →When deploying notebooks directly with `dtctl apply`
- →When attempting to use variables within notebooks
Limitations
- →Notebooks do not support variables
- →Notebooks do not have a layout/grid system like dashboards
- →Notebooks do not have a dashboard-style UI timeframe picker
How it compares
This skill provides specific instructions and tools for Dynatrace notebooks, addressing their structural and functional differences from dashboards, unlike a generic dashboard management approach.
Compared to similar skills
dt-app-notebooks side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| dt-app-notebooks (this skill) | 0 | 1mo | Review | Intermediate |
| agent-session-monitor | 2 | 6mo | Review | Intermediate |
| ideogram-observability | 1 | 1mo | Review | Intermediate |
| coralogix-analysis | 1 | 6mo | Review | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
agent-session-monitor
alibaba
Real-time agent conversation monitoring - monitors Higress access logs, aggregates conversations by session, tracks token usage. Supports web interface for viewing complete conversation history and costs. Use when users ask about current session token consumption, conversation history, or cost statistics.
ideogram-observability
jeremylongshore
Set up comprehensive observability for Ideogram integrations with metrics, traces, and alerts. Use when implementing monitoring for Ideogram operations, setting up dashboards, or configuring alerting for Ideogram integration health. Trigger with phrases like "ideogram monitoring", "ideogram metrics", "ideogram observability", "monitor ideogram", "ideogram alerts", "ideogram tracing".
coralogix-analysis
incidentfox
Coralogix log analysis with DataPrime query language. Use when querying Coralogix logs, metrics, or traces. Provides syntax reference and intelligent investigation scripts.
clay-observability
jeremylongshore
Set up comprehensive observability for Clay integrations with metrics, traces, and alerts. Use when implementing monitoring for Clay operations, setting up dashboards, or configuring alerting for Clay integration health. Trigger with phrases like "clay monitoring", "clay metrics", "clay observability", "monitor clay", "clay alerts", "clay tracing".
model-usage
openclaw
Use CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
analytics-tracking
davila7
When the user wants to set up, improve, or audit analytics tracking and measurement. Also use when the user mentions "set up tracking," "GA4," "Google Analytics," "conversion tracking," "event tracking," "UTM parameters," "tag manager," "GTM," "analytics implementation," or "tracking plan." For A/B test measurement, see ab-test-setup.