Kubernetes Network Root Cause Analysis
kubeshark/kubeshark
Investigates past Kubernetes incidents from Kubeshark traffic snapshots: takes captures, dissects API calls, extracts PCAPs and compares traffic over time.
DAVIS problem analysis including root cause identification, impact assessment, and correlation with other telemetry.
$ npx skills add Dynatrace/dynatrace-for-ai --skill dt-obs-problems -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Dynatrace/dynatrace-for-ai dt-obs-problems --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Dynatrace/dynatrace-for-ai.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/dt-obs-problems .claude/skills/dt-obs-problems && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "dt-obs-problems" agent skill from https://github.com/Dynatrace/dynatrace-for-ai/tree/main/skills/dt-obs-problems into .claude/skills/dt-obs-problems/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dt-obs-problems", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Dynatrace/dynatrace-for-ai/tree/main/skills/dt-obs-problemsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Dynatrace/dynatrace-for-ai --skill dt-obs-problems -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Dynatrace/dynatrace-for-ai dt-obs-problems --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Dynatrace/dynatrace-for-ai.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/dt-obs-problems .agents/skills/dt-obs-problems && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "dt-obs-problems" agent skill from https://github.com/Dynatrace/dynatrace-for-ai/tree/main/skills/dt-obs-problems into .agents/skills/dt-obs-problems/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dt-obs-problems", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Dynatrace/dynatrace-for-ai --skill dt-obs-problems -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Dynatrace/dynatrace-for-ai dt-obs-problems --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Dynatrace/dynatrace-for-ai.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/dt-obs-problems .cursor/skills/dt-obs-problems && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "dt-obs-problems" agent skill from https://github.com/Dynatrace/dynatrace-for-ai/tree/main/skills/dt-obs-problems into .cursor/skills/dt-obs-problems/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dt-obs-problems", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Dynatrace/dynatrace-for-ai.git --path skills/dt-obs-problems--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Dynatrace/dynatrace-for-ai --skill dt-obs-problems -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Dynatrace/dynatrace-for-ai dt-obs-problems --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Dynatrace/dynatrace-for-ai.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/dt-obs-problems .gemini/skills/dt-obs-problems && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "dt-obs-problems" agent skill from https://github.com/Dynatrace/dynatrace-for-ai/tree/main/skills/dt-obs-problems into .gemini/skills/dt-obs-problems/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dt-obs-problems", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Dynatrace/dynatrace-for-ai dt-obs-problemsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Dynatrace/dynatrace-for-ai --skill dt-obs-problems -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Dynatrace/dynatrace-for-ai.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/dt-obs-problems .github/skills/dt-obs-problems && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "dt-obs-problems" agent skill from https://github.com/Dynatrace/dynatrace-for-ai/tree/main/skills/dt-obs-problems into .github/skills/dt-obs-problems/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dt-obs-problems", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Dynatrace/dynatrace-for-ai --skill dt-obs-problems -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Dynatrace/dynatrace-for-ai dt-obs-problems --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Dynatrace/dynatrace-for-ai.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/dt-obs-problems .opencode/skills/dt-obs-problems && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "dt-obs-problems" agent skill from https://github.com/Dynatrace/dynatrace-for-ai/tree/main/skills/dt-obs-problems into .opencode/skills/dt-obs-problems/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dt-obs-problems", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
dt-obs-problemsDAVIS problem analysis including root cause identification, impact assessment, and correlation with other telemetry.
Dt Obs Problems is an agent skill from Dynatrace/dynatrace-for-ai. DAVIS problem analysis including root cause identification, impact assessment, and correlation with other telemetry. Use when querying or investigating detected problems. Trigger: "active problems", "root cause analysis", "problem impact", "affected users", "list problems", "P-12345 details", "recurring problems", "problem history", "problem trending", "blast radius", "which entity caused the problem", "problems affecting Kubernetes", "problems by service". Do NOT use for explaining existing queries, product…
Its SKILL.md is about 4.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including reference files (for example `references/impact-analysis.md`, `references/problem-correlation.md` and `references/problem-merging.md`).
It sits in Development, covering Root cause analysis, Observability and Technical writing. It works with Kubernetes. The repository describes itself as: Skills, prompts, and instructions for building AI agents on top of Dynatrace production context. The licence is Apache-2.0.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 4f9aa71. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are dql).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Dt Obs Problems loads about 4.6k tokens when it runs, and up to ~13k if it reads all its reference files. Until then it costs about 158 tokens; SKILL.md has 1,317 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from Dynatrace/dynatrace-for-ai at commit 4f9aa71, republished under its Apache-2.0 licence (© Dynatrace). 1,317 words, ~4,602 tokens.
.claude/skills/dt-obs-problems/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.Analyze Dynatrace AI-detected problems including root cause identification, impact assessment, and correlation with logs and metrics.
Dynatrace automatically detects anomalies, performance degradations, and failures across your environment, creating problems that aggregate related alert, warning and info-level events and provide root cause and impact insights.
Problems are automatically detected, software and infrastructure health and resilience issues that:
The event.kind field (stable, permission) identifies the high-level event type:
event.kind value | Description |
|---|---|
DAVIS_EVENT | Davis-detected infrastructure/application events |
BIZ_EVENT | Business events (ingested via API or captured from spans) |
RUM_EVENT | Real User Monitoring events |
AUDIT_EVENT | Administrative/security audit events |
event.provider (stable, permission) identifies the event source.
Common event.category values:
| Category | Description | Example |
|---|---|---|
| AVAILABILITY | Infrastructure or service unavailable | Web service returns no data, synthetic test actively fails, database connection lost |
| ERROR | Increased error rates beyond baseline | API error rate jumped from 0.1% to 15% |
| SLOWDOWN | Performance degradation | Response time increased from 200ms to 5000ms |
| RESOURCE | Resource saturation | Container memory at 95%, causing OOM kills |
| CUSTOM | Custom anomaly detections | Business KPI (orders/minute) dropped below threshold |
Detection → ACTIVE → Under Investigation → CLOSED| ❌ WRONG | ✅ CORRECT | Description |
|---|---|---|
title | event.name | Problem title/description |
status | event.status | Problem lifecycle status |
severity | event.category | Problem type/category |
start | event.start | Problem start time |
// ✅ CORRECT: Use these status values
fetch dt.davis.problems
| filter event.status == "ACTIVE" // Currently occurring problems
// or event.status == "CLOSED" // Resolved problems
// ❌ INCORRECT: event.status == "OPEN" does not exist!
| limit 1fetch dt.davis.problems, from:now() - 1h
| filter not(dt.davis.is_duplicate)
| fields
event.start, // Problem start timestamp
event.end, // Problem end timestamp (if closed)
display_id, // Human-readable problem ID (P-XXXXX)
event.name, // Problem title
event.description, // Detailed description
event.category, // Problem type
event.status, // ACTIVE or CLOSED
dt.smartscape_source.id, // The smartscape ID for the affected resource
dt.davis.affected_users_count, // Number of affected users
affected_entity_ids = smartscape.affected_entities[][id], // Array of affected entity IDs
dt.smartscape.service, // Affected services (may be array)
dt.davis.root_cause_entity, // Entity identified as root cause
root_cause_entity_id, // Root cause entity ID
root_cause_entity_name, // Human-readable root cause name
dt.davis.is_duplicate, // Whether duplicate detection
dt.davis.is_rootcause // Root cause vs. symptom
| limit 10Always start problem queries with this foundation:
fetch dt.davis.problems, from:now() - 2h
| filter not(dt.davis.is_duplicate) and event.status == "ACTIVE"
| fields event.start, display_id, event.name, event.category
| sort event.start desc
| limit 20Key components:
fetch dt.davis.problems - The problems data sourcenot(dt.davis.is_duplicate) - Filter out duplicate detectionsevent.status == "ACTIVE" - Show only active problemsfetch dt.davis.problems
| filter not(dt.davis.is_duplicate) and event.status == "ACTIVE"
| summarize problem_count = count(), by: {event.category}
| sort problem_count descfetch dt.davis.problems
| filter not(dt.davis.is_duplicate) and event.status == "ACTIVE"
| filter dt.davis.affected_users_count > 100
| fields event.start, display_id, event.name, dt.davis.affected_users_count, event.category
| sort dt.davis.affected_users_count descfetch dt.davis.problems
| filter not(dt.davis.is_duplicate) and event.status == "ACTIVE"
| filter arraySize(affected_entity_ids) > 5
| fields event.start, display_id, event.name, affected_entity_ids, event.category, impacted_entity_count = arraySize(affected_entity_ids)
| sort impacted_entity_count descfetch dt.davis.problems
| filter display_id == "P-XXXXXXXXXX"
| fields event.start, event.end, event.name, event.description, affected_entity_ids, dt.davis.affected_users_count, root_cause_entity_id, root_cause_entity_namefetch dt.davis.problems, from:now() - 7d
| filter not(dt.davis.is_duplicate)
| filter in(dt.smartscape.service, toSmartscapeId("SERVICE-XXXXXXXXX"))
| summarize problems = count(), by: {event.category, event.status}fetch dt.davis.problems, from:now() - 24h
| filter not(dt.davis.is_duplicate) and event.status == "ACTIVE"
| fields
display_id,
event.name,
event.description,
root_cause_entity_id,
root_cause_entity_name,
affected_entity_ids = smartscape.affected_entities[][id]Identify which entity types most frequently cause problems:
fetch dt.davis.problems, from:now() - 7d
| filter not(dt.davis.is_duplicate)
| filter isNotNull(root_cause_entity_id)
| summarize problem_count = count(), by:{root_cause_entity_name}
| sort problem_count desc
| limit 20fetch dt.davis.problems, from:now() - 24h
| filter not(dt.davis.is_duplicate) and event.status == "ACTIVE"
| filter iAny(startsWith(smartscape.affected_entities[][type], "AWS_"))fetch dt.davis.problems, from:now() - 30m
| filter not(dt.davis.is_duplicate) and event.status == "ACTIVE"
| filter matchesPhrase(root_cause_entity_id, "HOST-")
| filter isNotNull(dt.smartscape.service)
| fields display_id, event.name, root_cause_entity_name, dt.smartscape.serviceCalculate entity impact per root cause:
fetch dt.davis.problems, from:now() - 7d
| filter not(dt.davis.is_duplicate)
| filter isNotNull(root_cause_entity_id)
| fieldsAdd affected_count = arraySize(smartscape.affected_entities)
| summarize
avg_affected = avg(affected_count),
max_affected = max(affected_count),
problem_count = count(),
by:{root_cause_entity_name}
| sort avg_affected descIdentify entities repeatedly causing problems:
fetch dt.davis.problems, from:now() - 24h
| filter not(dt.davis.is_duplicate)
| filter isNotNull(root_cause_entity_id)
| summarize
problem_count = count(),
first_occurrence = min(event.start),
last_occurrence = max(event.start),
by:{root_cause_entity_id, root_cause_entity_name}
| filter problem_count > 3
| sort problem_count descThese are different questions — pick the right approach:
event.category
(SLOWDOWN, ERROR, RESOURCE, AVAILABILITY, CUSTOM). Explain what triggers each category.root_cause_entity_name. Lists specific services, hosts, or apps.Cause category breakdown (use when asked about common causes, patterns, or types):
fetch dt.davis.problems, from:now() - 30d
| filter not(dt.davis.is_duplicate)
| summarize problem_count = count(), by: {event.category}
| sort problem_count descThen for each category, explain what triggers it using the Problem Categories table and cite specific entities from the tenant data as examples.
Track problem trends over time, identify recurring issues, and analyze resolution performance.
Primary Files:
references/problem-trending.md - Timeseries analysis and pattern detectionCommon Use Cases:
makeTimeseriesKey Techniques:
makeTimeseries vs bin(): Choose the right approach for lifecycle spans vs discrete eventscoalesce(event.end, now()) for active problemsSee references/problem-trending.md for complete query patterns and best practices.
Use affected_entity_ids or dt.smartscape_source.id to find problems related to Kubernetes:
fetch dt.davis.problems, from:now() - 7d
| filter not(dt.davis.is_duplicate)
| filter matchesPhrase(dt.smartscape_source.id, "KUBERNETES_CLUSTER")
OR matchesPhrase(dt.smartscape_source.id, "K8S_")
| fields event.start, display_id, event.name, event.category, event.status,
dt.smartscape_source.id, affected_entity_ids
| sort event.start descAlternative: expand affected entities and filter for K8s entity types:
fetch dt.davis.problems, from:now() - 7d
| filter not(dt.davis.is_duplicate)
| expand entity_id = affected_entity_ids
| filter matchesPhrase(entity_id, "KUBERNETES_CLUSTER")
OR matchesPhrase(entity_id, "K8S_")
| fields event.start, display_id, event.name, event.category, entity_id
| sort event.start descList all problems from the last 24 hours (common request):
fetch dt.davis.problems, from:now() - 24h
| filter not(dt.davis.is_duplicate)
| fields event.start, event.end, display_id, event.name, event.category, event.status
| sort event.start descWhen summarizing problem causes, categories, or patterns, provide a comprehensive breakdown across all standard categories present in the data: AVAILABILITY, ERROR, SLOWDOWN, RESOURCE, and CUSTOM. For each category found:
Do not stop after the first two categories — users expect the full picture. Reference the Problem Categories table above for trigger descriptions.
When presenting query results:
get-entity-name calls are finequery-problems tool which returns names directly, or
include root_cause_entity_name / entityName() in the DQL query to resolve
names inline. Avoid calling get-entity-name in a loop for 10+ entities —
this can exhaust the tool call limit and return no answer at all.not(dt.davis.is_duplicate) to avoid counting the same problem multiple times"ACTIVE" or "CLOSED", never "OPEN"not(dt.davis.is_duplicate) immediately after fetch| limit 1 to verify field names existdisplay_id for referenceisNotNull(root_cause_entity_id) when requireddt.davis.event_ids// ✅ GOOD - Specific time range
fetch dt.davis.problems, from:now() - 4h// ❌ BAD - Scans all historical data
fetch dt.davis.problemsWhen using absolute ISO 8601 timestamps for from and to in DQL queries, always wrap them in double quotes. Unquoted timestamps are a syntax error.
// ✅ CORRECT - absolute timestamps quoted
fetch dt.davis.problems, from: "2026-05-18T22:50:00Z", to: "2026-05-18T23:35:00Z"
| filter not(dt.davis.is_duplicate)
| fields event.start, display_id, event.name, event.category, event.status
| sort event.start desc| Problem | Cause | Solution |
|---|---|---|
| No problems returned | Using event.status == "OPEN" | Use "ACTIVE" or "CLOSED" — "OPEN" does not exist |
| Duplicate problems in results | Missing deduplication filter | Add filter not(dt.davis.is_duplicate) immediately after fetch |
Wrong field name (title, status, severity) | SQL-like naming | Use event.name, event.status, event.category — see field name table above |
root_cause_entity_id is null | Not all problems have identified root causes | Add filter isNotNull(root_cause_entity_id) when querying root causes |
| Query scans too much data / times out | Missing time range | Always specify from:now() - <duration> on the fetch command |
affected_entity_ids is empty array | Problem has no mapped affected entities | Check dt.smartscape.service or dt.smartscape_source.id as alternatives |
© Dynatrace, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 4 other files (references) in skills/dt-obs-problems of Dynatrace/dynatrace-for-ai.
Open the folder on GitHubat commit 4f9aa71
Dt Obs Problems next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Dt Obs Problems this skillDynatrace/dynatrace-for-ai | 161 | — | ~4.6k | Automated safety check: Pass | Apache-2.0 | |
| Kubernetes Network Root Cause Analysiskubeshark/kubeshark | 12k | — | ~5.3k | Automated safety check: Pass | Apache-2.0 | |
| Kubernetes Troubleshooting with Inspektor Gadgetinspektor-gadget/inspektor-gadget | 2.9k | — | ~2.3k | Automated safety check: Pass | Apache-2.0 | |
| Production Error Huntdifferent-ai/openwork | 24k | — | ~803 | Automated safety check: Pass | Custom licence | |
| Debug MasteryxenitV1/claude-code-maestro | 229 | — | ~2.5k | Automated safety check: Notes | MIT | |
| Debugging Techniquesancoleman/ai-design-components | 526 | — | ~3.3k | Automated safety check: Pass | MIT |
kubeshark/kubeshark
Investigates past Kubernetes incidents from Kubeshark traffic snapshots: takes captures, dissects API calls, extracts PCAPs and compares traffic over time.
inspektor-gadget/inspektor-gadget
Traces what the kernel is doing for a misbehaving pod using Inspektor Gadget's eBPF tools, tagged with namespace, pod, container and node, without changing workloads.
different-ai/openwork
Traces an opaque production error in an OpenWork build to its cause using local server logs and Sentry, names the regressing PR and files a report.
xenitV1/claude-code-maestro
Systematic debugging methodology with 4-phase process, root cause tracing, and elite observability standards.
ancoleman/ai-design-components
Debugging workflows for Python (pdb, debugpy), Go (delve), Rust (lldb), and Node.js, including container debugging (kubectl debug, ephemeral containers) and production-safe debugging techniques with…
datadog-labs/agent-skills
Root cause analysis on production LLM traces. An agent skill from datadog-labs/agent-skills.
Dynatrace/dynatrace-for-ai
Analyze dashboards and notebooks using Davis analyzers — anomaly detection, novelty scoring, and correlation.
Dynatrace/dynatrace-for-ai
Set up the Dynatrace iOS SDK (OneAgent) in an iOS project using Swift Package Manager.
Dynatrace/dynatrace-for-ai
End-to-end Dynatrace alerting lifecycle — anomaly detector setup and model selection (static threshold, adaptive baseline, seasonal baseline), alert event storage in Grail, problem grouping and…
Dynatrace/dynatrace-for-ai
AWS cloud resource monitoring including EC2, RDS, Lambda, ECS/EKS, VPC networking, load balancers, S3, DynamoDB, SQS/SNS, and cost optimization.
Dynatrace/dynatrace-for-ai
3rd-party test and monitor result ingestion into Dynatrace Grail via the platform events ingest API (platform/ingest/custom/events/).
Dynatrace/dynatrace-for-ai
Service performance monitoring with RED metrics (Rate, Errors, Duration) and runtime-specific telemetry for Java, .NET, Node.js, Python, PHP, and Go.
Works with
Categories
DAVIS problem analysis including root cause identification, impact assessment, and correlation with other telemetry. Dt Obs Problems is an agent skill from Dynatrace/dynatrace-for-ai. DAVIS problem analysis including root cause identification, impact assessment, and correlation with other telemetry.
Dt Obs Problems fits situations like: investigating detected problems; explaining existing queries; product documentation questions; generic log searching.
Run `npx skills add Dynatrace/dynatrace-for-ai --skill dt-obs-problems -a claude-code`. Or copy the skill folder (skills/dt-obs-problems in Dynatrace/dynatrace-for-ai) into .claude/skills/dt-obs-problems in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Dynatrace/dynatrace-for-ai --skill dt-obs-problems -a codex`. Or copy the skill folder (skills/dt-obs-problems in Dynatrace/dynatrace-for-ai) into .agents/skills/dt-obs-problems in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Dynatrace/dynatrace-for-ai --skill dt-obs-problems -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/dt-obs-problems, .gemini/skills/dt-obs-problems, .github/skills/dt-obs-problems and .opencode/skills/dt-obs-problems in your project.
SKILL.md names no scripts, command-line tools or credentials: Dt Obs Problems is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Dt Obs Problems is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.6k tokens (SKILL.md is roughly 18k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 8.8k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Dt Obs Problems: Kubernetes Network Root Cause Analysis (kubeshark/kubeshark, 12k stars), Kubernetes Troubleshooting with Inspektor Gadget (inspektor-gadget/inspektor-gadget, 2.9k stars), Production Error Hunt (different-ai/openwork, 24k stars) and Debug Mastery (xenitV1/claude-code-maestro, 229 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Dynatrace (a GitHub organization) maintains it in Dynatrace/dynatrace-for-ai, which has 161 GitHub stars. The repository holds 33 skills in this directory. The repository was last updated on October 1, 2026.
Source: Dynatrace/dynatrace-for-ai on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.