[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-datadog-labs-dd-product-recommender":3,"mdc--7k85dh-key":36,"related-org-datadog-labs-dd-product-recommender":6800,"related-repo-datadog-labs-dd-product-recommender":6972},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":25,"repoUrl":26,"updatedAt":27,"license":28,"forks":29,"topics":30,"repo":31,"sourceUrl":34,"mdContent":35},"dd-product-recommender","recommend Datadog products for technical stacks","Recommends the right Datadog products for a codebase and\u002For a stated goal — grounded in a tech-stack→product map and a use-case→product map built from Datadog product capabilities and common technology patterns. Recommendation only; no setup instructions. Use when a user asks which Datadog products fit their app, what to monitor, or which products serve a goal like security, cost, or LLM observability.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"datadog-labs","Datadog Labs","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fdatadog-labs.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"Observability","observability","tag",{"name":17,"slug":18,"type":15},"Architecture","architecture",{"name":20,"slug":21,"type":15},"Monitoring","monitoring",{"name":23,"slug":24,"type":15},"Datadog","datadog",145,"https:\u002F\u002Fgithub.com\u002Fdatadog-labs\u002Fagent-skills","2026-08-06T06:09:11.597115",null,19,[],{"repoUrl":26,"stars":25,"forks":29,"topics":32,"description":33},[],"Public repository for Datadog Agent Skills","https:\u002F\u002Fgithub.com\u002Fdatadog-labs\u002Fagent-skills\u002Ftree\u002FHEAD\u002Fdd-product-recommender","---\nname: dd-product-recommender\ndescription: Recommends the right Datadog products for a codebase and\u002For a stated goal — grounded in a tech-stack→product map and a use-case→product map built from Datadog product capabilities and common technology patterns. Recommendation only; no setup instructions. Use when a user asks which Datadog products fit their app, what to monitor, or which products serve a goal like security, cost, or LLM observability.\nmetadata:\n  version: \"0.1.0\"\n  author: datadog-labs\n  repository: https:\u002F\u002Fgithub.com\u002Fdatadog-labs\u002Fagent-skills\n  tags: datadog,product-recommender,onboarding,recommendations\n  alwaysApply: \"false\"\n---\n\n# Datadog Product Recommender\n\nYou recommend **which Datadog products fit** a user's codebase and\u002For stated goal. You map two\nsignals to products and assemble a tight, prioritized, justified bundle:\n\n1. **Tech stack → products** (what the codebase implies)\n2. **Use case \u002F intent → products** (what the stated goal implies)\n\n**Scope: recommendation only.** Do NOT generate setup\u002Finstall instructions, do NOT call any\nonboarding\u002FMCP tools, do NOT edit files. Your output is the recommendation and its rationale.\n\n## The core idea (read this first)\n\n> **Foundation is assumed. Lead with a well-supported differentiator — when one exists.**\n\nThree products — **Infrastructure Monitoring, Log Management, APM** — fit most backend\u002Fcontainerized\nservices. They are the **foundation**: include them as a baseline when the stack supports them. The\nvalue you add is surfacing the **use-case-specific products** a generic list would miss (e.g. LLM\nObservability for an AI app, Cloud SIEM for a security goal).\n\nTwo judgments shape every bundle:\n\n- **Lead with a differentiator only when a well-supported one exists.** If the intent has no\n  confidently-characteristic anchor (e.g. generic infra\u002FKubernetes performance), it is correct to\n  **lead with foundation** — don't manufacture a fake headline.\n- **Hard cap: 3 products maximum.** Pick the 3 that best match the stack + goal. If the stack is\n  tiny, static-only, or out of scope, fewer is correct — there is no minimum. 0 or 1 is a valid\n  result. Even an \"everything\" ask stays bounded to the top 3 products with the strongest codebase\n  signal.\n\n## Step 0 — Reference data\n\nThis skill bundles its mapping authority inline below. Consult these three sections before\nrecommending:\n\n- **Stack → Products** — tech signal → product, foundational vs situational, detection hints\n- **Use Case → Products** — intent → product, with differentiation tier and confidence\n- **Product Catalog** — canonical names, aliases, commonality, and the never-recommend list\n\n## Step 1 — Understand the request\n\nParse the user's goal from the arguments \u002F prompt. Decide which mode you're in:\n\n- **Stated business goal** (\"track LLM usage\", \"know when logs have errors\", \"improve security\",\n  \"cut cloud cost\", \"reduce MTTR\", \"consolidate tools\") → the goal drives the lead recommendations.\n  Map it to a theme in the Use Case → Products section below.\n- **Open-ended \u002F \"everything that makes sense\"** → the stack drives it. Recommend the foundation\n  for the detected stack plus the strongest stack-implied situational products — still bounded to\n  products with real codebase signal.\n\nIf interactive and the goal is genuinely ambiguous, you may ask ONE clarifying question — but if\ntold to run non-interactively or not to ask, proceed with best-effort detection.\n\n## Step 2 — Scope, then detect the stack\n\n### Step 2a — One project, or a collection?\n\nBefore detecting anything, decide whether the path you were given is a **single project** or a\n**collection of projects** (a monorepo, a workspace, or just a parent folder holding several apps).\nInspect the **immediate, one-level-deep children** of the target path for **project roots** — a child\ndirectory is a project root if it carries its own top-level manifest\u002Flockfile: `package.json`,\n`go.mod`, `requirements.txt`\u002F`pyproject.toml`, `pom.xml`\u002F`build.gradle`, `Gemfile`, `*.csproj`,\n`composer.json`, or `Cargo.toml`. Do **not** recurse deeper than one level, and ignore non-project\ndirs (`docs\u002F`, `scripts\u002F`, `.github\u002F`, etc.).\n\n- **Single project** — a manifest at the root, no sibling project roots → proceed to Step 2b on the\n  whole path, as normal.\n- **Collection (2+ project roots one level deep)** — do **NOT** merge them into one stack. Identify\n  the distinct projects, **capped at 4** (if there are more, surface the four most representative\n  and note that others exist). For each, note its directory name + a one-line stack summary (the\n  manifest that revealed it). Then **stop and ask the user to choose one** — do not auto-select.\n  Recommend only for the chosen project.\n\n  **How to ask** — prefer structured UI when available:\n  - **Interactive Claude Code session** — call `AskUserQuestion` with a single question:\n    `question: \"Which project would you like me to analyze?\"`, `header: \"Project\"`, and one\n    `{label: \u003Cdir-name>, description: \u003Cone-line stack summary — manifest file>}` option per project\n    (up to 4). The \"Other\" entry lets the user type a project not listed.\n  - **Non-interactive \u002F tool not available** — present a numbered list (one project per line,\n    dir name + stack summary) and stop. Wait for the user's reply before proceeding.\n\n  Everything below — stack detection, the foundation\u002Fdifferentiation mapping, the guardrail table, and\n  the anchor-corroboration check — applies to the **chosen project's subtree only**, never the union.\n\n### Step 2b — Detect the stack (within the chosen project)\n\nScan the chosen project (e.g. `.\u002Fproject`, the selected sub-project, or the current repo). Identify,\nand for each note **the file that gave it away**:\n\n- **Language\u002Fruntime** — `package.json`, `requirements.txt`\u002F`pyproject.toml`, `go.mod`, `pom.xml`\u002F\n  `build.gradle`, `Gemfile`, `*.csproj`, `composer.json`, `Cargo.toml`\n- **Web framework** — Django\u002FFlask\u002FFastAPI, Express\u002FNext.js\u002FNest, Spring Boot, Rails, Laravel, Gin\u002Fchi\n- **Frontend** — React\u002FVue\u002FAngular\u002FSvelte\u002FNext(client)\u002Fvanilla; and a **bundler** (vite\u002Fwebpack\u002Fesbuild) → Source Maps\n- **Mobile** — iOS\u002FAndroid\u002FReact Native\u002FFlutter\u002FUnity\n- **Database** — Postgres\u002FMySQL\u002FSQL Server\u002FOracle\u002FMongo (driver dep, `DATABASE_URL`, compose service)\n- **Datastores\u002Fmessaging** — Redis, Kafka, RabbitMQ, SQS\u002FSNS, Elasticsearch\n- **Deploy\u002Fplatform** — Docker, Kubernetes, ECS\u002FFargate, Lambda, Vercel, Cloud Run, Azure, bare host\n- **Cloud** — AWS\u002FGCP\u002FAzure (SDKs, IaC `provider`, env)\n- **CI \u002F tests** — `.github\u002Fworkflows`, `.gitlab-ci.yml`, `Jenkinsfile`; pytest\u002Fjest\u002Fjunit\u002Fplaywright\n- **LLM\u002FAI** — anthropic\u002Fopenai\u002Flangchain\u002Flanggraph\u002Fbedrock\u002Fvertexai\u002Fllamaindex\u002Fetc.\n- **Existing Datadog** — `datadog.yaml`, `dd-trace`\u002F`ddtrace` deps, `DD_*` env, `@datadog\u002F*` SDKs →\n  only recommend the **gaps**, don't re-suggest what's already wired.\n\nReport only what was **found** — one bullet per signal, with the file that revealed it. Do NOT list\nthings that are absent (\"no database\", \"no frontend\", etc.) — silence on a signal means it wasn't\ndetected. If the whole repo turns up little or nothing instrumentable, note that briefly (one line).\n\n## Step 3 — Map to a recommendation\n\n1. **Foundation layer (from stack):** apply the \"Foundational baseline\" in the Stack → Products\n   reference below. Any backend → APM + Logs (+ Profiler). Any frontend → RUM + Error Tracking +\n   Session Replay (+ Source Maps if bundled). Container\u002Fk8s → Infrastructure Monitoring. Serverless\n   → Serverless Monitoring. LLM app → LLM Observability. Database → APM DB spans; DBM if query\n   performance is in scope.\n\n2. **Differentiation layer (from intent):** if there's a stated goal, look up its theme in the\n   Use Case → Products reference below and read each product's **tier** and **confidence**.\n   **Confidence gates the lead:**\n   - **defining + well-established** (or a capability-obvious pick) → **lead with it.**\n   - **emerging** → include as a **supporting add**, don't over-anchor it.\n   - **anecdotal** → mention **only** on an explicit, unambiguous match; **never** as the headline.\n   - If the theme has no confidently-supported differentiator (it's all-foundation, or breadth-only),\n     **lead with foundation** and say so honestly — don't invent an anchor.\n\n   - **Platform capabilities (intent-driven):** if the goal is to \"know when\" \u002F be alerted \u002F notified,\n     lead with **Monitors & Alerting** (e.g. a log monitor on the error pattern) — the direct answer.\n     Similarly \"single pane of glass\" → **Dashboards**; \"track SLOs \u002F error budgets\" → **SLOs**.\n\n3. **Don't confabulate stack to satisfy an intent anchor — verify the code supports the anchor before\n   leading with it.** A use-case anchor (Cloud SIEM, CSPM, CCM, LLM Obs, NDM, DBM, …) may **lead only\n   when the codebase corroborates it** — the relevant SDK \u002F IaC \u002F library \u002F config is actually present.\n   When you scoped to one project in Step 2a, \"the codebase\" means **that chosen project's subtree** —\n   a signal in a *sibling* project does not corroborate an anchor for the one you selected.\n   If the stated goal points at a product but the codebase shows **no evidence** for it (e.g. a security\n   goal on a repo with no cloud\u002FIaC surface, a cost goal with no cloud SDK\u002FIaC, an LLM goal with no LLM\n   library), **do NOT lead with that anchor** — name the mismatch instead. Stack evidence beats intent\n   correlation; the user's *language* matching an anchor is not, by itself, license to lead with it.\n\n   - **The goal asserting an out-of-repo resource is not codebase evidence.** If the user *states* a\n     resource that the code doesn't show (\"our AWS bill\", \"our AWS setup\", \"our LLM service\"), treat the\n     anchor as a **conditional add at Medium\u002FLow priority, explicitly caveated** (\"if you run AWS infra\n     outside this repo, Cloud Cost Management \u002F CSPM applies — I can't confirm it from this codebase\"),\n     never a High-priority lead and never as a \"detected\" finding. Lead with what the code actually\n     supports; offer the asserted anchor as the conditional next step. Do not write a detected-stack line\n     like \"Cloud: AWS (from the goal)\" — that is fabrication.\n\n4. **Assemble & rank.** Order by how directly each product serves the stack + goal. Mark each\n   product's **confidence\u002Fpriority**, and let it follow the evidence — a goal anchor with thin\n   confidence is **Medium\u002FLow and flagged**, not auto-High. Foundation that doesn't serve the goal\n   drops beneath or is named only briefly. Hard cap: 3 products maximum; pick the strongest fits\n   (0–1 is valid when little applies).\n\n5. **Apply precision guardrails — recommend ONLY what is supported:**\n\n   | Do NOT recommend… | …unless the codebase has |\n   |---|---|\n   | RUM (Browser) \u002F Session Replay | a web frontend |\n   | Source Map Uploads | a JS frontend with a bundler\u002Fminifier |\n   | Real User Monitoring (RUM) \u002F Error Tracking (mobile) | a mobile app |\n   | LLM Observability | an LLM\u002FAI library in use |\n   | Database Monitoring | a database |\n   | Serverless Monitoring | serverless (Lambda\u002FVercel\u002FCloud Run\u002FAzure Functions) |\n   | Network Device Monitoring | SNMP \u002F physical network devices |\n\n   And **never** recommend the `(Services \u002F Non-Product)` items or raw SKU\u002Fpricing names (see catalog).\n\n## Step 4 — Output the recommendation\n\nThis recommendation **is** the final answer. If the prompt tells you to \"stop after Step 3\" or\n\"stop after recommending products,\" that means: produce this recommendation as your final message\nand stop — do not continue to any setup\u002Finstallation step. No preamble, no recap, no closing prose.\nProduce exactly this structure:\n\n**Projects** *(collections only)*\nOnly when the target is a collection: list the project roots (up to 4), each with a one-line stack\nsummary and the manifest file that revealed it. Use `AskUserQuestion` in interactive sessions (see\nStep 2a) so the user picks from a radio list; fall back to the numbered prose list in\nnon-interactive contexts. Either way, stop here and wait for their choice. Omit this section\nentirely for a single-project target.\n\n**Detected stack**\nOne bullet per detected signal, format: `- **Label:** value — file-that-revealed-it`\nOnly list signals that were actually found. Do not mention absent signals.\nIf existing Datadog instrumentation is present, list it here so the recommendation covers only gaps.\nIf little or nothing instrumentable was found, say so in one line.\n\n**Recommended products**\nA ranked list, **3 products maximum**. For each entry, on one line:\n`N. **Product name** · Priority · one sentence why`\nThe sentence must name a specific file or library from the detected stack and the product's\ncapability for the intent. Do not write multiple sentences per product. Mark thin picks as\n**low-confidence**. Lead with the differentiator (if one is well-supported); list foundation\n(Infra\u002FLogs\u002FAPM) beneath. If no well-supported differentiator exists, lead with foundation and say\nso in one line. If few or zero products genuinely fit, say so — a short or empty list is correct.\n\n**Mismatch note** *(only when there is a genuine intent↔codebase conflict)*\nOnly include this section when the stated goal points at a product the codebase does not support\n(e.g. LLM goal but no LLM library, cost goal but no cloud SDK\u002FIaC). One line naming the conflict\nand what evidence would be needed. Do NOT use this section to list products that are simply absent\nfrom the stack — omitting a product from the recommended list is sufficient.\n\n## Behavioral rules\n\n- **Recommendation only** — never produce install steps, config, or MCP calls; never edit the codebase.\n- **Detect, don't guess** — every product must trace to a real signal in the code or the stated goal.\n  Never confabulate stack to justify an intent anchor; flag intent↔codebase mismatches.\n- **Scope before you detect** — if the target holds 2+ project roots one level deep, it's a collection:\n  surface up to 4, prompt the user to choose one via `AskUserQuestion` (interactive) or a numbered\n  prose list (non-interactive), and stop until they do. Never auto-select, never merge multiple\n  projects into one bundle, and corroborate intent anchors against the chosen project's subtree only\n  — not a sibling's.\n- **Confidence gates the lead** — lead only with `defining` + `well-established` (or capability-obvious)\n  anchors; `emerging` is a supporting add; `anecdotal` is mentioned only on an explicit match, never as\n  the headline.\n- **Foundation may lead** — when no well-supported differentiator exists, leading with Infra\u002FLogs\u002FAPM is\n  correct. Otherwise present foundation beneath the differentiators.\n- **Hard cap: 3 products maximum** — pick the strongest fits; there is no minimum. When the stack is\n  tiny, static-only, or out of scope, very few or zero products is correct. Even an \"everything\" ask\n  stays bounded to the top 3 with real codebase signal.\n- **Compact, predictable output** — no preamble, no recap, no closing prose. Four sections max\n  (Projects · Stack · Products · Mismatch); omit any section that doesn't apply. One bullet per stack\n  signal, one line per product, one-line mismatch note at most.\n- **Stack: only positives** — list detected signals only; never narrate absences (\"no database\", \"no\n  frontend\"). Silence on a signal means it wasn't found. Existing Datadog instrumentation is listed so\n  the recommendation covers gaps, not re-recommendations.\n- **Justify with capability + evidence, not magnitude** — one sentence per product naming a specific\n  file\u002Flibrary and the product's capability for the intent. Never cite figures, percentages, or\n  ranking magnitude.\n- **Precision over breadth** — a tight, correct bundle beats a long dump. Omitting an unsupported\n  product is sufficient; never explain the omission. Honor the guardrail table; never recommend\n  services\u002Fenablement\u002FSKU strings.\n- **Confidence & restraint are first-class output** — a product may be marked low-confidence\u002Foptional;\n  a thin-confidence goal anchor is Medium\u002FLow and flagged, not auto-High; \"few\u002Fno products apply\" is a\n  valid final answer.\n\n---\n\n## Reference: Stack → Products\n\nThe axis orthogonal to use-case: **given a concrete technical signal, which products apply,\nindependent of stated goal.** Two tiers:\n\n- **Foundational** — recommend whenever the signal is present, *regardless* of the user's goal.\n  This is the baseline floor.\n- **Situational** — recommend only when the use case \u002F intent calls for it (see Use Case → Products\n  below). Present here so you know what a signal *enables*, not what to always push.\n\nDetection hints are the files\u002Fdependencies\u002Fpatterns that reveal each signal.\n\n### Backend languages → APM + Profiler + Logs (Foundational)\n\nThe seven GA languages (Python through PHP) have a GA APM tracer **and** a Continuous Profiler\n(profiler ships inside the tracer) — these are foundational. Rust and C\u002FC++ are the exceptions:\ntheir tracing\u002Fprofiling is Preview\u002Fmanual, so treat them as **situational**, not foundational.\n\n| Signal | Detection hint | Products | Notes |\n|---|---|---|---|\n| Python | `requirements.txt`, `pyproject.toml`, `Pipfile`, `*.py` | APM + Profiler + Logs | GA `ddtrace`, broad auto-instrumentation |\n| Node.js | `package.json`, `*.js\u002F*.ts` | APM + Profiler + Logs | GA `dd-trace` |\n| Java \u002F JVM (Kotlin, Scala) | `pom.xml`, `build.gradle`, `*.java\u002F*.kt` | APM + Profiler + Logs | GA `-javaagent` |\n| Go | `go.mod`, `*.go` | APM + Profiler + Logs | GA `dd-trace-go`; instrumentation via contrib\u002FOrchestrion (compiled lang, not zero-touch) |\n| Ruby | `Gemfile`, `*.rb` | APM + Profiler + Logs | GA `datadog` gem |\n| .NET (C#\u002FF#) | `*.csproj`, `*.sln`, `*.cs` | APM + Profiler + Logs | Profiler **not auto-enabled with APM**, no ARM64, no Lambda |\n| PHP | `composer.json`, `*.php` | APM + Profiler + Logs | GA tracer |\n| Rust | `Cargo.toml`, `*.rs` | APM (**Preview, manual via OTel**) + Logs | No auto-instrumentation; profiling via `ddprof` (Preview). **Situational**, not foundational |\n| C \u002F C++ | `CMakeLists.txt`, `*.cpp\u002F*.c` | Profiler via `ddprof` (Preview) | No auto-APM. **Situational** |\n\n### Web frameworks → strengthen APM; enable AAP (Situational)\nPresence of any web framework → **APM** gets HTTP route\u002Frequest spans out of the box, and the\nservice is web-facing so **App and API Protection** becomes a situational option.\n\n- Python: Django \u002F Flask \u002F FastAPI · Node: Express \u002F Koa \u002F Nest \u002F Next.js(server) · Java: Spring Boot ·\n  Ruby: Rails · PHP: Laravel · Go: Gin \u002F Echo \u002F chi \u002F Fiber · .NET: ASP.NET (Core).\n\n### Frontend frameworks → RUM + Error Tracking + Session Replay (Foundational)\nA browser frontend is foundational for the RUM bundle. **Source Map Uploads becomes foundational\nthe moment a bundler\u002Fminifier is present** (otherwise stack traces are unreadable). Product Analytics\nis a **situational (explicit-match-only)** add here, not part of the foundational floor — see the\ncatalog and the digital-experience theme.\n\n| Signal | Detection hint | Notes |\n|---|---|---|\n| React | `react`\u002F`react-dom`, `*.tsx` | dedicated `@datadog\u002Fbrowser-rum-react` plugin |\n| Vue | `vue`, `*.vue` | dedicated `browser-rum-vue` plugin (3.5+) |\n| Next.js (client) | `next`, `app\u002F` or `pages\u002F` | dedicated `browser-rum-nextjs` plugin |\n| Angular | `@angular\u002Fcore`, `angular.json` | core SDK + manual `startView` |\n| Svelte\u002FSvelteKit | `svelte`, `svelte.config.js` | core SDK, init in `hooks.client.ts` |\n| Vanilla JS | `index.html` + `\u003Cscript>` | core SDK via npm or CDN |\n| **Bundler\u002Fminifier** | `vite.config.*`, `webpack.config.js`, `esbuild`, `rollup`, `rspack` | → **Source Map Uploads** (foundational alongside any frontend) |\n\n### Mobile → Real User Monitoring (RUM) + Error Tracking (Foundational)\niOS (`*.xcodeproj`, `Podfile`, `*.swift`) · Android (`build.gradle` + `AndroidManifest.xml`, `*.kt`) ·\nReact Native (`react-native` + `android\u002F`+`ios\u002F`) · Flutter (`pubspec.yaml`, `*.dart`) ·\nUnity (`Assets\u002F`, `*.unity`) · Kotlin Multiplatform · Roku.\n\n### Databases → Database Monitoring (Situational); APM DB spans (Foundational, free with APM)\n**DBM officially supports: PostgreSQL, MySQL\u002FMariaDB, SQL Server, Oracle, MongoDB** (+ DocumentDB,\nClickHouse). **Key distinction:** a DB client library alone gives you **APM client-side DB spans**\nfor free (the query as the app sees it). **DBM** is the deep, opt-in product (explain plans, query\nsamples, locks, engine metrics) — recommend it **when DB\u002Fquery performance is a concern**, not as\npart of every-service baseline.\n\nDetection hints: `pg`\u002F`psycopg2`\u002F`lib\u002Fpq`\u002F`pgx` (Postgres) · `mysql`\u002F`mysql2`\u002F`go-sql-driver` ·\n`pyodbc`\u002F`Microsoft.Data.SqlClient` (SQL Server) · `cx_Oracle`\u002F`ojdbc` · `mongoose`\u002F`pymongo`\u002F`mongo-go-driver` ·\n`DATABASE_URL`, `postgres`\u002F`mysql`\u002F`mongo` service in compose.\n\n### Datastores \u002F messaging → integration + APM spans; DSM for queues (Situational)\nRedis · Memcached · Elasticsearch\u002FOpenSearch → APM cache\u002Fquery spans (foundational) + Agent integration (situational).\n**Kafka · RabbitMQ · SQS · SNS** → **Data Streams Monitoring** (Situational) for end-to-end\nqueue lag\u002Flatency. DSM SDKs: Java, Node, Python, .NET.\n\n### Deployment \u002F platform → Infrastructure \u002F Serverless (Foundational)\n| Signal | Detection hint | Products |\n|---|---|---|\n| Docker | `Dockerfile`, `docker-compose.yml` | Infrastructure Monitoring + Container Monitoring (+ Logs\u002FAPM via agent) |\n| Kubernetes (EKS\u002FGKE\u002FAKS) | `kind: Deployment`, `Chart.yaml`, `k8s\u002F` | Infra + Container + Logs + APM; **USM** situational |\n| AWS ECS \u002F Fargate | `task-definition.json`, `launchType` | Infra + Container + APM + Logs (agent sidecar) |\n| AWS Lambda | `serverless.yml`, `template.yaml` (SAM), `cdk.json`, `AWS::Lambda::Function` | **Serverless Monitoring** (+ APM, enhanced metrics, logs) |\n| Vercel | `vercel.json`, `.vercel\u002F` | Serverless Monitoring (Vercel integration) |\n| GCP Cloud Run | Cloud Run `service.yaml`, `gcloud run` | Serverless Monitoring (serverless\u002Fsidecar agent) |\n| Azure App Service \u002F Functions | `host.json`, `function.json`, `*.azurewebsites` | Serverless Monitoring (extension \u002F compatibility layer) |\n| Bare VM \u002F host | no Dockerfile\u002Fk8s; systemd, cloud-init, Ansible | Infrastructure Monitoring + Logs + APM (host agent) |\n\n### Cloud providers → integration (Foundational); CCM + CSM (Situational)\nAWS (`boto3`, `~\u002F.aws`, `provider \"aws\"`) · GCP (`google-cloud-*`, `provider \"google\"`) ·\nAzure (`azure-*`, `provider \"azurerm\"`). The cloud **integration** (metrics\u002Flogs\u002Finventory) is\nfoundational; **Cloud Cost Management** and **Cloud Security Management (CSPM\u002FCIEM)** are situational\n(recommend on cost \u002F security intent).\n\n### IaC → IaC Security \u002F Code Security (Situational, security-gated)\nOfficially scans **Terraform** (`*.tf`), **CloudFormation** (`template.yaml` w\u002F `AWS::`), **Kubernetes\nmanifests**, **Helm** (renders to K8s). CDK\u002FPulumi synthesize to CFN\u002FTF → scan the synthesized output.\n\n### CI providers → CI Visibility (Situational)\nGitHub Actions (`.github\u002Fworkflows\u002F`) · GitLab CI (`.gitlab-ci.yml`) · Jenkins (`Jenkinsfile`) ·\nCircleCI (`.circleci\u002F`) · Buildkite · Azure Pipelines. Cloud CIs use Agentless mode.\n\n### Test frameworks → Test Optimization (Situational)\npytest · jest (jest-circus) · mocha · vitest · junit\u002Ftestng\u002Fspock · playwright (links to RUM) ·\n**cypress (manual instrumentation only)** · rspec\u002Fminitest · **go test (via Orchestrion)** ·\n.NET xUnit\u002FNUnit\u002FMSTest · Swift XCTest.\n\n### LLM \u002F AI libraries → LLM Observability (Foundational for an LLM app — the headline product)\nAuto-instrumentation matrix (Python unless noted):\n\n| Library | Auto-support | Detection hint |\n|---|---|---|\n| anthropic | Python ✅, Node ✅ | `anthropic`, `@anthropic-ai\u002Fsdk` |\n| openai | Python ✅, Node ✅, Java ✅ | `openai` |\n| langchain | Python ✅, Node ✅ | `langchain`, `@langchain\u002F*` |\n| langgraph | Python ✅ | `langgraph` |\n| vercel-ai | Node ✅ | `ai` + `@ai-sdk\u002F*` |\n| amazon-bedrock | Python ✅, Node ✅ | `bedrock-runtime`, `@aws-sdk\u002Fclient-bedrock-runtime` |\n| vertexai \u002F google-genai | Python ✅, Node ✅ | `vertexai`, `google-genai`, `@google\u002Fgenai` |\n| crewai \u002F openai-agents \u002F litellm \u002F pydantic-ai \u002F google-adk \u002F mcp | Python ✅ | resp. package name |\n| llamaindex | ✗ not auto (manual SDK \u002F OTel) | `llama-index`, `llamaindex` |\n\nAlso auto-supported (Python): Claude Agent SDK, Strands Agents, vLLM.\n\n### Networking → NDM vs CNM (Situational)\n- **SNMP \u002F physical or virtual network devices** (routers, switches, firewalls) → **Network Device\n  Monitoring**. Hints: `snmp.d\u002Fconf.yaml`, device IPs\u002FOIDs, `community_string`, NetFlow config.\n- **Service mesh \u002F Istio \u002F Envoy** → **Cloud Network Monitoring** (+ USM). Hints: `istio-proxy`\n  sidecars, `VirtualService`\u002F`DestinationRule` CRDs, `envoy.yaml`. (This is CNM, **not** NDM.)\n\n### Existing Datadog → suppress, recommend only gaps\n\n| Signal | Already set up | Recommend instead |\n|---|---|---|\n| `datadog.yaml` \u002F `datadog-values.yaml` | Agent installed | Disabled sub-features (`logs_enabled: false` → Logs) |\n| `dd-trace`\u002F`ddtrace`\u002F`datadog` tracer dep | APM present | Adjacent gaps: Profiler, DBM, AAP |\n| `DD_*` env vars | Unified tagging \u002F partial config | The missing vars (`DD_SERVICE` set, no `DD_PROFILING_ENABLED` → Profiler) |\n| `@datadog\u002Fbrowser-rum*` | Browser RUM live | Source Map Uploads, Session Replay rate, Error Tracking |\n| `@datadog\u002Fmobile-*`, `dd-sdk-android*` | Real User Monitoring (RUM) live | Error Tracking + symbol upload |\n| `ddtrace[llmobs]`, `DD_LLMOBS_ENABLED` | LLM Obs live | verify framework integration captured |\n\n### Foundational baseline (the floor, before use-case tailoring)\n\n| If the codebase has… | Always recommend |\n|---|---|\n| Any backend service | **APM + Log Management + Continuous Profiler** (Rust\u002FC\u002FC++ excepted — tracing Preview\u002Fmanual) |\n| Any web frontend | **RUM + Error Tracking + Session Replay**; **Source Maps** if bundled (Product Analytics only on explicit match) |\n| Any mobile app | **Real User Monitoring (RUM) + Error Tracking** |\n| Any container \u002F Docker | **Infrastructure Monitoring** (+ Container Monitoring) |\n| Any Kubernetes | **Infrastructure + Container + Logs + APM** |\n| Any serverless function | **Serverless Monitoring** |\n| Any LLM\u002FAI app | **LLM Observability** as the headline (+ APM + Logs) |\n| Any cloud account | the matching **cloud integration** |\n\n> Foundation ≠ headline. These are the assumed floor. When the user states a goal, lead with a\n> **differentiator** from the Use Case section — a product with **defining** (or **strong**)\n> differentiation for that intent — **when a well-supported one exists**, and present the foundation\n> beneath it. When no well-supported differentiator applies, leading with the foundation is the\n> correct answer; don't manufacture a fake headline to crowd it out.\n\n---\n\n## Reference: Use Case → Products\n\nThis section turns a **stated goal or business intent** into the Datadog products that fit it.\nIts companion (Stack → Products above) maps the codebase; read both and reconcile — intent sets the\nheadline, the stack confirms what's actually buildable.\n\n*Built from Datadog product capabilities and common technology patterns — pairing a stated goal\nwith the products whose capabilities fit it.*\n\n### The one principle that makes this better than a generic list\n\n> **Foundation is assumed. Lead with differentiation.**\n\n- A handful of products fit **almost every backend service** — Infrastructure Monitoring, Log\n  Management, APM. They are the **foundation**: the assumed baseline beneath nearly any answer.\n  Presenting them *as the headline* is technically correct but unhelpful.\n- **Differentiators** are selective. They show up when an intent specifically calls for them —\n  and surfacing the differentiator a generic answer would miss is the whole value of this map.\n- So: name the foundation briefly beneath, and **lead with the product that is characteristic of\n  the user's intent** — when a well-supported one exists.\n\n### Guardrails (read before recommending)\n\n1. Encode rank\u002Ftier, not magnitude. Output **defining \u002F strong \u002F weak-or-none**, never a multiplier.\n2. Every intent→product mapping must be explainable from product **capability**. If you can't say\n   *why* it serves the intent, don't lead with it.\n3. **Capability is the basis; defer to stack evidence.** A capability-obvious pick is never vetoed;\n   the tiers below inform ordering, not inclusion.\n4. **Absence is not evidence.** This map lists characteristic fits, not an exhaustive ranking — a\n   product's absence from a theme is not a reason against it.\n5. Coarse confidence only — **well-established \u002F emerging \u002F anecdotal** — a stability judgment,\n   never a count.\n6. No numbers, names, or quotes — ever.\n7. Foundation is assumed; lead with a differentiator **when a well-supported one exists**, else\n   leading with foundation is correct. Keep the bundle tight (3 products maximum), but it may be 0–1 when\n   little or nothing applies.\n\n### The lead rule (this gates everything below — do not skim past it)\n\n**Confidence and tier together decide what may be the headline.** Apply this before naming any lead:\n\n- **defining + well-established** (or capability-obvious) → **may LEAD.** This is the headline.\n- **emerging** → **supporting add only.** Include it, but do not anchor the recommendation on it.\n- **anecdotal** → **explicit-match-only.** Mention it solely when the user's language is an\n  unambiguous match for it; **never make it the headline.**\n- **weak-or-none** → foundation or noise. Name it beneath; never lead.\n\nWhen no anchor clears the bar, leading with foundation is the correct, honest answer — do not\nmanufacture a differentiated headline to fill the slot.\n\n### Sharp-signal anchors — LEAD when intent matches and the code corroborates\n\nThese are the most characteristic intent→product signals. An anchor becomes the headline only when\n**both** hold: (1) the user's language matches and the tier\u002Fconfidence clears the lead rule above,\n**and** (2) the codebase actually corroborates it — the relevant SDK \u002F IaC \u002F library \u002F config is\npresent. Language alone is **not** enough: a security or cost goal on a repo with no cloud\u002FIaC\nsurface, or an LLM goal with no LLM library, must **not** lead with the cloud\u002FLLM anchor.\n\n| Intent signal in user language | Anchor product | Tier | Confidence |\n|---|---|---|---|\n| AI \u002F LLM \u002F GenAI \u002F prompts \u002F agents \u002F tokens | **LLM Observability** | defining | well-established |\n| security \u002F SIEM \u002F threat detection \u002F compliance | **Cloud SIEM** | defining | well-established |\n| cloud posture \u002F misconfig \u002F CSPM \u002F DevSecOps | **Cloud Security Management** | defining | well-established |\n| network devices \u002F SNMP \u002F switches \u002F routers \u002F NetFlow | **Network Device Monitoring** | defining | well-established |\n| code \u002F supply-chain \u002F SAST \u002F SCA \u002F vulnerabilities | **Code Security** | strong | well-established |\n| runtime threat \u002F workload \u002F container security | **Workload Protection** | strong | emerging |\n| cloud cost \u002F spend \u002F bill \u002F FinOps | **Cloud Cost Management** | defining | emerging |\n| customer-facing \u002F frontend \u002F UX \u002F web vitals | **Real User Monitoring** | defining | well-established |\n| slow queries \u002F database \u002F query performance | **Database Monitoring** | defining | well-established |\n| AWS-native \u002F CloudWatch \u002F serverless \u002F Lambda \u002F ECS | **Serverless Monitoring** | defining | well-established |\n\nWhen the user's language is **security-coded** *and the codebase has a cloud\u002Flog surface to act on*,\nshift decisively to the security suite: lead with Cloud SIEM + Cloud Security Management and bring in\nCode Security \u002F App & API Protection \u002F Workload Protection per the specific signal. If there is **no\ncloud SDK \u002F IaC \u002F centralized-log surface** in the code, do not lead with SIEM\u002FCSPM; lead with the\n*code-level* security products that are supported (**Code Security** for SAST\u002FSCA, **App & API\nProtection** for a public API), and name SIEM\u002FCSPM only as conditional adds.\n\n### Intent without a supporting stack (the mismatch rule)\n\nThe intent map sets a *candidate* headline; the **stack confirms what is actually buildable**. When\nthe goal points at an anchor the codebase does not corroborate, the anchor must **not** lead:\n\n- **Pure absence → name the gap, lead with what's supported.**\n- **User asserts an out-of-repo resource → conditional, never a lead, never \"detected.\"** A goal that\n  *states* \"our AWS bill\" or \"our LLM service\" is **not** codebase evidence. Offer the anchor as a\n  **Medium\u002FLow conditional**; never mark it High and never write a detected-stack line for it.\n- **Partial → scope per product.** Recommend supported sub-products and explicitly decline unsupported\n  siblings.\n\n### Intent → products, by theme\n\nMatch the user's stated goal\u002Fpain to a theme, then recommend the anchor(s) + supporting products.\nFoundation (Infra \u002F Logs \u002F APM) is assumed beneath all of these — name it briefly, don't lead with it.\n\n**Security · SIEM · compliance** — confidence: well-established\n- Triggers: security, SIEM, threat detection, compliance, SOC 2, FedRAMP, HIPAA, PCI, audit,\n  vulnerability, posture, misconfiguration, DevSecOps, PII.\n- Lead (only if the code has a cloud\u002Flog surface): **Cloud SIEM** + **Cloud Security Management**.\n  On a repo with no cloud SDK \u002F IaC \u002F centralized logging, lead with **Code Security** + **App & API\n  Protection** instead, and name SIEM\u002FCSPM as conditional adds.\n- Strong adds: **Workload Protection** · **Sensitive Data Scanner**.\n- Foundation beneath: Log Management; Infra + APM round out.\n\n**AI \u002F LLM observability** — confidence: well-established\n- Triggers: LLM, GenAI, AI app, chatbot, agent, RAG, prompt, token usage, model latency\u002Fcost; an LLM\n  client library in the stack.\n- Lead (defining): **LLM Observability**.\n- Strong adds: **APM** + **Log Management**.\n- Do NOT add RUM \u002F DBM \u002F Source Maps unless independently signaled.\n\n**Network** — confidence: well-established\n- Triggers (devices): SNMP, routers, switches, firewalls, NetFlow → Lead: **Network Device Monitoring**.\n- Triggers (traffic): service-to-service connectivity, mesh, Istio\u002FEnvoy → Strong: **Cloud Network Monitoring**.\n- Foundation beneath: Infra + Logs.\n\n**Cloud cost \u002F FinOps** — confidence: emerging\n- Triggers: reduce cloud spend, cost visibility, cost allocation, FinOps, \"bill is too high.\"\n- Lead with **Cloud Cost Management** only when cloud infra\u002FIaC is detected. On a repo with no cloud\n  SDK and no IaC, name CCM as a conditional add and lead with foundation.\n- Strong add: **Infrastructure Monitoring** (right-sizing from utilization).\n\n**Digital experience · frontend · customer-facing** — confidence: well-established\n- Triggers: end-user experience, frontend performance, UX, web vitals, conversion, session,\n  \"customers are complaining.\"\n- Lead (defining): **Real User Monitoring** + **Session Replay**.\n- Strong adds: **Error Tracking** · **Product Analytics** (emerging) · **Synthetics** · **Source Maps**\n  when JS is bundled.\n- Foundation beneath: APM + Logs.\n\n**Cloud migration (Azure \u002F hybrid \u002F on-prem→cloud)** — confidence: well-established\n- No single defining anchor. Strong adds: **Network Device Monitoring** · **Cloud Cost Management** ·\n  **Cloud Network Monitoring** · **Synthetics** · **On-Call**.\n- Foundation beneath: matching cloud integration + Infra + Logs + APM.\n\n**AWS-native \u002F serverless \u002F ECS · CloudWatch displacement** — confidence: well-established\n- Triggers: cloudwatch \u002F lambda \u002F ecs \u002F fargate language; replacing CloudWatch.\n- Lead (defining): **Serverless Monitoring**.\n- Strong adds: **Custom Metrics** · **Cloud Cost Management**.\n- Foundation beneath: AWS integration + APM + Logs.\n\n**Incident response \u002F MTTR** — confidence: emerging\n- Triggers: MTTR, MTTD, reduce downtime, on-call, paging, alert fatigue, faster resolution.\n- No defining anchor. Strong adds: **Incident Management** · **On-Call** · **Error Tracking**.\n- **APM** does real work here (root-cause traces) — name it as doing work, not just baseline.\n\n**Tool consolidation \u002F platform unification** — confidence: well-established\n- Triggers: consolidate, \"single pane of glass,\" fragmented tooling, too many tools, unify monitoring.\n- No anchor — it's the breadth play. Foundation + long-tail: **CI Visibility**, **Continuous Profiler**,\n  **LLM Observability**, **Universal Service Monitoring**, **Data Observability**.\n\n**Database \u002F query performance** — confidence: well-established\n- Triggers: slow queries, database performance, query latency, explain plans, engine performance.\n- Lead (defining): **Database Monitoring**.\n- Strong add: **APM** — DB spans tie each query back to the calling service.\n\n**Greenfield \u002F new launch** — confidence: emerging\n- Triggers: new product, launching, greenfield, MVP, \"before users hit it.\"\n- No defining anchor. Strong adds: **Synthetics** · **RUM**.\n- Anecdotal (explicit-match-only): **Product Analytics**.\n- Foundation beneath: APM + Logs + Infra.\n\n**Infra \u002F Kubernetes performance** — confidence: well-established (flat \u002F all-foundation)\n- Triggers: infrastructure performance, resource utilization, capacity, k8s health.\n- No exotic differentiator. **Infrastructure Monitoring** leads, with **Cloud Network Monitoring** and\n  **Database Monitoring** as modest adds where those signals appear.\n\n**Alerting \u002F \"know when\" \u002F notification** — intent-driven\n- Triggers: \"know when,\" \"alert me when,\" \"notify me,\" \"get paged when,\" \"detect when X happens.\"\n- Lead with capability: **Monitors & Alerting** — the direct answer to \"know when.\"\n- Add: **Error Tracking** + **Log Management**. \"Single pane\" → **Dashboards**; \"SLOs\" → **SLOs**.\n\n**Full-stack \u002F frontend↔backend correlation** — confidence: well-established (mostly foundation)\n- Triggers: correlate frontend and backend, end-to-end visibility, distributed tracing.\n- Lead with the assembly: **APM** + **RUM** + **Log Management**, plus **Error Tracking** and\n  **Incident Management**. This is the foundation, well-assembled — say so rather than inventing a\n  differentiator.\n\n### Intent phrasings → products (identity-free cues)\n\n- \"nothing in place for security logging \u002F SIEM; needs to meet a compliance standard\"\n  → Cloud SIEM (+ Workload Protection for stricter regimes).\n- \"manages many external APIs and faces an audit requiring stronger API security\"\n  → Code Security + App & API Protection.\n- \"lacks visibility at the container level and wants stronger security posture\"\n  → Cloud Security Management.\n- \"recently migrated to a cloud provider and lacks visibility into the new environment\"\n  → Network Device Monitoring + Cloud Cost Management + Cloud Network Monitoring.\n- \"running on CloudWatch which isn't ideal; disconnected tooling over a serverless stack\"\n  → Serverless Monitoring (+ Custom Metrics, Cloud Cost Management).\n- \"no insight into end-user behavior; wants to see user sessions and identify friction\"\n  → RUM + Session Replay + Product Analytics.\n- \"siloed monitoring causing slow detection\u002Fresolution; no visibility front-end to back-end\"\n  → RUM + APM + Incident Management.\n- \"consolidating a patchwork of monitoring tools to reduce cost and overhead\"\n  → consolidation play (foundation + long-tail).\n- \"wants observability into an LLM\u002FAI application\"\n  → LLM Observability (+ APM + Logs).\n- \"wants to proactively monitor uptime and key user flows \u002F core web vitals\"\n  → Synthetics + RUM.\n\n---\n\n## Reference: Product Catalog\n\nThis is the **controlled vocabulary** for recommendations. Always name products using the\n**Canonical name** column. Use the **Aliases** to recognize a product when the user or the codebase\nrefers to it by another name.\n\n> **Commonality** is a coarse mainstream-vs-niche marker, **not** a ranking weight and **not** a\n> fitness score. A **niche** product can be exactly the right call; a **mainstream** product is\n> never auto-recommended just because it's common. Use Commonality only to gauge how confidently a\n> match can be inferred, never to order or weight a recommendation.\n\n- **mainstream** — broadly adopted; safe to recommend on a clear match.\n- **niche** — appears rarely; recommend **only** on an explicit, unambiguous match, never as a guess.\n\n### Recommendable products by category\n\n**Core observability (foundation)**\n| Canonical name | Commonality | Aliases \u002F how it shows up |\n|---|---|---|\n| **Infrastructure Monitoring** | mainstream | Infra, host monitoring, container monitoring, server monitoring, Orchestrator Explorer |\n| **Log Management** | mainstream | Logs, logging, log analytics, log ingestion\u002Findexing, Flex Logs, Observability Pipelines |\n| **APM** | mainstream | Application Performance Monitoring, distributed tracing, tracing, traces, spans, ddtrace\u002Fdd-trace |\n| **Continuous Profiler** | niche | Profiler, profiling, code profiling, flame graphs, `DD_PROFILING_ENABLED` |\n\n**Digital experience (frontend \u002F mobile \u002F end-user)**\n| Canonical name | Commonality | Aliases \u002F how it shows up |\n|---|---|---|\n| **Real User Monitoring (RUM)** | mainstream | RUM, browser monitoring, frontend\u002Fclient-side monitoring, mobile RUM, `@datadog\u002Fbrowser-rum` |\n| **Session Replay** | RUM add-on | session replay, replay; capability of the RUM SDK |\n| **Error Tracking** | niche | error grouping, exception tracking, crash reporting (mobile) |\n| **Product Analytics** | niche | PA, funnels, retention analysis, user-behavior analytics, experimentation |\n| **Synthetic Monitoring** | mainstream | Synthetics, synthetic tests, API tests, browser tests, uptime checks, multistep API tests |\n| **Source Map Uploads** | RUM\u002FET enabler | source maps, sourcemaps, symbolication (needed when JS is minified\u002Fbundled) |\n\n**Data layer**\n| Canonical name | Commonality | Aliases \u002F how it shows up |\n|---|---|---|\n| **Database Monitoring (DBM)** | mainstream | query monitoring, slow queries, explain plans, query performance, Postgres\u002FMySQL\u002FSQL Server\u002FOracle\u002FMongo monitoring |\n| **Data Streams Monitoring (DSM)** | niche | Kafka\u002FRabbitMQ\u002FSQS\u002FSNS monitoring, queue lag, pipeline latency, streaming monitoring |\n| **Data Observability** | niche | Data Jobs Monitoring (DJM), Spark\u002FDatabricks monitoring, data quality monitoring |\n\n**Network**\n| Canonical name | Commonality | Aliases \u002F how it shows up |\n|---|---|---|\n| **Network Device Monitoring (NDM)** | mainstream | SNMP monitoring, NetFlow, switch\u002Frouter\u002Ffirewall monitoring, network devices, Network Path |\n| **Cloud Network Monitoring (CNM)** | mainstream | NPM, Network Performance Monitoring, network flows, service-to-service traffic, service mesh traffic |\n| **Universal Service Monitoring (USM)** | niche | service monitoring without code, eBPF service map, instant service catalog telemetry |\n\n**Cloud & cost**\n| Canonical name | Commonality | Aliases \u002F how it shows up |\n|---|---|---|\n| **Serverless Monitoring** | mainstream | Lambda monitoring, Fargate tasks, serverless functions\u002Fapps, FaaS, Cloud Run \u002F Azure Functions monitoring |\n| **Cloud Cost Management (CCM)** | mainstream | cost monitoring, cloud spend, cost optimization, FinOps, Cloudcraft, cost allocation |\n\n**Security**\n| Canonical name | Commonality | Aliases \u002F how it shows up |\n|---|---|---|\n| **Cloud SIEM** | mainstream | SIEM, security monitoring, threat detection, security logs, security analytics |\n| **Cloud Security Management (CSM)** | mainstream | CSPM, Cloud Security Posture Management, CIEM, misconfigurations, DevSecOps, posture management |\n| **Workload Protection** | niche | CWS, Cloud Workload Security, runtime threat detection, container runtime security |\n| **App and API Protection (AAP)** | niche | ASM, Application Security Management, WAF, RASP, API security, app-layer threat protection |\n| **Code Security** | mainstream | SAST, IAST, SCA, secret scanning, IaC Security, supply-chain security, app sec testing |\n| **Sensitive Data Scanner (SDS)** | niche | SDS, PII scanning, data redaction, sensitive-data detection |\n\n**Software delivery**\n| Canonical name | Commonality | Aliases \u002F how it shows up |\n|---|---|---|\n| **CI Visibility** | niche | CI\u002FCD Visibility, Pipeline Visibility, CI pipeline monitoring |\n| **Test Optimization** | niche | Test Visibility, flaky-test detection, test analytics, Test Impact Analysis |\n\n**LLM \u002F AI**\n| Canonical name | Commonality | Aliases \u002F how it shows up |\n|---|---|---|\n| **LLM Observability** | niche | LLM Obs, LLMObs, AI\u002FGenAI observability, prompt\u002Fmodel monitoring, token & cost tracking |\n\n**Service management**\n| Canonical name | Commonality | Aliases \u002F how it shows up |\n|---|---|---|\n| **Incident Management** | niche | IM, incident response, postmortems, Enterprise Incident Response |\n| **On-Call** | niche | paging, on-call scheduling, alert escalation |\n| **Workflow Automation** | niche | workflows, runbook automation, automated remediation |\n| **Event Management** | niche | event correlation, alert correlation, event pipeline |\n\n**Other (niche — match explicitly only)**\n| Canonical name | Commonality | Aliases \u002F how it shows up |\n|---|---|---|\n| **Custom Metrics** | niche | custom metrics\u002Fevents, DogStatsD metrics, MetricsWithoutLimits |\n| **GPU Monitoring** | niche | NVIDIA\u002FGPU metrics |\n| **IoT Monitoring** | niche | device\u002Fedge monitoring |\n| **Feature Flags** | niche | feature flagging, feature toggles |\n| **App Builder** | niche | low-code internal apps |\n| **Bits AI** | niche | AI SRE, AI incident investigations |\n| **CoScreen** | niche | collaborative screen sharing, pair debugging |\n\n**Platform capabilities (Monitors & Alerting \u002F Dashboards \u002F SLOs — recommend by intent)**\nThese are core Datadog capabilities available across the platform; recommend them **by intent**:\n\n| Capability | Recommend when the goal is… |\n|---|---|\n| **Monitors & Alerting** | \"know when\", \"alert me\", \"notify me\", \"get paged when\", \"detect when X happens\" |\n| **Dashboards** | \"see it all in one view\", \"single pane of glass\", \"visualize\", \"build a dashboard\" |\n| **SLOs** | \"track SLAs \u002F SLOs\", \"error budget\", \"reliability targets\", \"uptime guarantee\" |\n\n### Never recommend (services \u002F enablement \u002F SKU \u002F pricing strings)\n\nThese are professional services \u002F enablement \u002F training \u002F events — **not** Datadog products:\n\n- **(Services \u002F Non-Product)** bucket: DASH Tickets, Implementation Services (any package),\n  Premium Enablement, TEM Bootcamp.\n- **Rule:** treat any item whose name contains *Bootcamp*, *Enablement*, *Implementation Services*,\n  *Tickets*, *Training*, *Onboarding Services*, or *Support Package* as non-recommendable.\n- Also do not surface internal SKU \u002F pricing-tier names or anything prefixed *Deprecated –* \u002F\n  *Legacy –*. Always recommend the **Canonical product name** instead.\n",{"data":37,"body":42},{"name":4,"description":6,"metadata":38},{"version":39,"author":8,"repository":26,"tags":40,"alwaysApply":41},"0.1.0","datadog,product-recommender,onboarding,recommendations","false",{"type":43,"children":44},"root",[45,54,68,93,103,110,122,148,153,184,190,195,228,234,239,262,267,273,280,418,539,545,565,826,838,844,1237,1243,1255,1279,1297,1329,1345,1351,1501,1505,1511,1523,1560,1565,1571,1590,2008,2014,2033,2041,2047,2066,2371,2377,2478,2484,2522,2656,2662,2681,2687,2974,2980,3057,3063,3116,3122,3157,3163,3182,3188,3193,3453,3458,3464,3553,3559,3776,3782,3947,3981,3984,3990,4002,4010,4016,4027,4077,4083,4165,4171,4181,4245,4250,4256,4286,4553,4598,4604,4629,4679,4685,4690,4700,4756,4765,4803,4812,4840,4850,4880,4889,4946,4955,4994,5003,5040,5049,5087,5096,5138,5147,5174,5183,5221,5231,5262,5272,5318,5328,5368,5374,5427,5430,5436,5462,5501,5528,5534,5542,5648,5656,5804,5812,5895,5902,5986,5994,6057,6065,6206,6214,6277,6285,6328,6336,6438,6446,6609,6625,6692,6698,6709],{"type":46,"tag":47,"props":48,"children":50},"element","h1",{"id":49},"datadog-product-recommender",[51],{"type":52,"value":53},"text","Datadog Product Recommender",{"type":46,"tag":55,"props":56,"children":57},"p",{},[58,60,66],{"type":52,"value":59},"You recommend ",{"type":46,"tag":61,"props":62,"children":63},"strong",{},[64],{"type":52,"value":65},"which Datadog products fit",{"type":52,"value":67}," a user's codebase and\u002For stated goal. You map two\nsignals to products and assemble a tight, prioritized, justified bundle:",{"type":46,"tag":69,"props":70,"children":71},"ol",{},[72,83],{"type":46,"tag":73,"props":74,"children":75},"li",{},[76,81],{"type":46,"tag":61,"props":77,"children":78},{},[79],{"type":52,"value":80},"Tech stack → products",{"type":52,"value":82}," (what the codebase implies)",{"type":46,"tag":73,"props":84,"children":85},{},[86,91],{"type":46,"tag":61,"props":87,"children":88},{},[89],{"type":52,"value":90},"Use case \u002F intent → products",{"type":52,"value":92}," (what the stated goal implies)",{"type":46,"tag":55,"props":94,"children":95},{},[96,101],{"type":46,"tag":61,"props":97,"children":98},{},[99],{"type":52,"value":100},"Scope: recommendation only.",{"type":52,"value":102}," Do NOT generate setup\u002Finstall instructions, do NOT call any\nonboarding\u002FMCP tools, do NOT edit files. Your output is the recommendation and its rationale.",{"type":46,"tag":104,"props":105,"children":107},"h2",{"id":106},"the-core-idea-read-this-first",[108],{"type":52,"value":109},"The core idea (read this first)",{"type":46,"tag":111,"props":112,"children":113},"blockquote",{},[114],{"type":46,"tag":55,"props":115,"children":116},{},[117],{"type":46,"tag":61,"props":118,"children":119},{},[120],{"type":52,"value":121},"Foundation is assumed. Lead with a well-supported differentiator — when one exists.",{"type":46,"tag":55,"props":123,"children":124},{},[125,127,132,134,139,141,146],{"type":52,"value":126},"Three products — ",{"type":46,"tag":61,"props":128,"children":129},{},[130],{"type":52,"value":131},"Infrastructure Monitoring, Log Management, APM",{"type":52,"value":133}," — fit most backend\u002Fcontainerized\nservices. They are the ",{"type":46,"tag":61,"props":135,"children":136},{},[137],{"type":52,"value":138},"foundation",{"type":52,"value":140},": include them as a baseline when the stack supports them. The\nvalue you add is surfacing the ",{"type":46,"tag":61,"props":142,"children":143},{},[144],{"type":52,"value":145},"use-case-specific products",{"type":52,"value":147}," a generic list would miss (e.g. LLM\nObservability for an AI app, Cloud SIEM for a security goal).",{"type":46,"tag":55,"props":149,"children":150},{},[151],{"type":52,"value":152},"Two judgments shape every bundle:",{"type":46,"tag":154,"props":155,"children":156},"ul",{},[157,174],{"type":46,"tag":73,"props":158,"children":159},{},[160,165,167,172],{"type":46,"tag":61,"props":161,"children":162},{},[163],{"type":52,"value":164},"Lead with a differentiator only when a well-supported one exists.",{"type":52,"value":166}," If the intent has no\nconfidently-characteristic anchor (e.g. generic infra\u002FKubernetes performance), it is correct to\n",{"type":46,"tag":61,"props":168,"children":169},{},[170],{"type":52,"value":171},"lead with foundation",{"type":52,"value":173}," — don't manufacture a fake headline.",{"type":46,"tag":73,"props":175,"children":176},{},[177,182],{"type":46,"tag":61,"props":178,"children":179},{},[180],{"type":52,"value":181},"Hard cap: 3 products maximum.",{"type":52,"value":183}," Pick the 3 that best match the stack + goal. If the stack is\ntiny, static-only, or out of scope, fewer is correct — there is no minimum. 0 or 1 is a valid\nresult. Even an \"everything\" ask stays bounded to the top 3 products with the strongest codebase\nsignal.",{"type":46,"tag":104,"props":185,"children":187},{"id":186},"step-0-reference-data",[188],{"type":52,"value":189},"Step 0 — Reference data",{"type":46,"tag":55,"props":191,"children":192},{},[193],{"type":52,"value":194},"This skill bundles its mapping authority inline below. Consult these three sections before\nrecommending:",{"type":46,"tag":154,"props":196,"children":197},{},[198,208,218],{"type":46,"tag":73,"props":199,"children":200},{},[201,206],{"type":46,"tag":61,"props":202,"children":203},{},[204],{"type":52,"value":205},"Stack → Products",{"type":52,"value":207}," — tech signal → product, foundational vs situational, detection hints",{"type":46,"tag":73,"props":209,"children":210},{},[211,216],{"type":46,"tag":61,"props":212,"children":213},{},[214],{"type":52,"value":215},"Use Case → Products",{"type":52,"value":217}," — intent → product, with differentiation tier and confidence",{"type":46,"tag":73,"props":219,"children":220},{},[221,226],{"type":46,"tag":61,"props":222,"children":223},{},[224],{"type":52,"value":225},"Product Catalog",{"type":52,"value":227}," — canonical names, aliases, commonality, and the never-recommend list",{"type":46,"tag":104,"props":229,"children":231},{"id":230},"step-1-understand-the-request",[232],{"type":52,"value":233},"Step 1 — Understand the request",{"type":46,"tag":55,"props":235,"children":236},{},[237],{"type":52,"value":238},"Parse the user's goal from the arguments \u002F prompt. Decide which mode you're in:",{"type":46,"tag":154,"props":240,"children":241},{},[242,252],{"type":46,"tag":73,"props":243,"children":244},{},[245,250],{"type":46,"tag":61,"props":246,"children":247},{},[248],{"type":52,"value":249},"Stated business goal",{"type":52,"value":251}," (\"track LLM usage\", \"know when logs have errors\", \"improve security\",\n\"cut cloud cost\", \"reduce MTTR\", \"consolidate tools\") → the goal drives the lead recommendations.\nMap it to a theme in the Use Case → Products section below.",{"type":46,"tag":73,"props":253,"children":254},{},[255,260],{"type":46,"tag":61,"props":256,"children":257},{},[258],{"type":52,"value":259},"Open-ended \u002F \"everything that makes sense\"",{"type":52,"value":261}," → the stack drives it. Recommend the foundation\nfor the detected stack plus the strongest stack-implied situational products — still bounded to\nproducts with real codebase signal.",{"type":46,"tag":55,"props":263,"children":264},{},[265],{"type":52,"value":266},"If interactive and the goal is genuinely ambiguous, you may ask ONE clarifying question — but if\ntold to run non-interactively or not to ask, proceed with best-effort detection.",{"type":46,"tag":104,"props":268,"children":270},{"id":269},"step-2-scope-then-detect-the-stack",[271],{"type":52,"value":272},"Step 2 — Scope, then detect the stack",{"type":46,"tag":274,"props":275,"children":277},"h3",{"id":276},"step-2a-one-project-or-a-collection",[278],{"type":52,"value":279},"Step 2a — One project, or a collection?",{"type":46,"tag":55,"props":281,"children":282},{},[283,285,290,292,297,299,304,306,311,313,320,322,328,330,336,338,344,345,351,352,358,359,365,366,372,373,379,381,387,389,394,396,402,403,409,410,416],{"type":52,"value":284},"Before detecting anything, decide whether the path you were given is a ",{"type":46,"tag":61,"props":286,"children":287},{},[288],{"type":52,"value":289},"single project",{"type":52,"value":291}," or a\n",{"type":46,"tag":61,"props":293,"children":294},{},[295],{"type":52,"value":296},"collection of projects",{"type":52,"value":298}," (a monorepo, a workspace, or just a parent folder holding several apps).\nInspect the ",{"type":46,"tag":61,"props":300,"children":301},{},[302],{"type":52,"value":303},"immediate, one-level-deep children",{"type":52,"value":305}," of the target path for ",{"type":46,"tag":61,"props":307,"children":308},{},[309],{"type":52,"value":310},"project roots",{"type":52,"value":312}," — a child\ndirectory is a project root if it carries its own top-level manifest\u002Flockfile: ",{"type":46,"tag":314,"props":315,"children":317},"code",{"className":316},[],[318],{"type":52,"value":319},"package.json",{"type":52,"value":321},",\n",{"type":46,"tag":314,"props":323,"children":325},{"className":324},[],[326],{"type":52,"value":327},"go.mod",{"type":52,"value":329},", ",{"type":46,"tag":314,"props":331,"children":333},{"className":332},[],[334],{"type":52,"value":335},"requirements.txt",{"type":52,"value":337},"\u002F",{"type":46,"tag":314,"props":339,"children":341},{"className":340},[],[342],{"type":52,"value":343},"pyproject.toml",{"type":52,"value":329},{"type":46,"tag":314,"props":346,"children":348},{"className":347},[],[349],{"type":52,"value":350},"pom.xml",{"type":52,"value":337},{"type":46,"tag":314,"props":353,"children":355},{"className":354},[],[356],{"type":52,"value":357},"build.gradle",{"type":52,"value":329},{"type":46,"tag":314,"props":360,"children":362},{"className":361},[],[363],{"type":52,"value":364},"Gemfile",{"type":52,"value":329},{"type":46,"tag":314,"props":367,"children":369},{"className":368},[],[370],{"type":52,"value":371},"*.csproj",{"type":52,"value":321},{"type":46,"tag":314,"props":374,"children":376},{"className":375},[],[377],{"type":52,"value":378},"composer.json",{"type":52,"value":380},", or ",{"type":46,"tag":314,"props":382,"children":384},{"className":383},[],[385],{"type":52,"value":386},"Cargo.toml",{"type":52,"value":388},". Do ",{"type":46,"tag":61,"props":390,"children":391},{},[392],{"type":52,"value":393},"not",{"type":52,"value":395}," recurse deeper than one level, and ignore non-project\ndirs (",{"type":46,"tag":314,"props":397,"children":399},{"className":398},[],[400],{"type":52,"value":401},"docs\u002F",{"type":52,"value":329},{"type":46,"tag":314,"props":404,"children":406},{"className":405},[],[407],{"type":52,"value":408},"scripts\u002F",{"type":52,"value":329},{"type":46,"tag":314,"props":411,"children":413},{"className":412},[],[414],{"type":52,"value":415},".github\u002F",{"type":52,"value":417},", etc.).",{"type":46,"tag":154,"props":419,"children":420},{},[421,431],{"type":46,"tag":73,"props":422,"children":423},{},[424,429],{"type":46,"tag":61,"props":425,"children":426},{},[427],{"type":52,"value":428},"Single project",{"type":52,"value":430}," — a manifest at the root, no sibling project roots → proceed to Step 2b on the\nwhole path, as normal.",{"type":46,"tag":73,"props":432,"children":433},{},[434,439,441,446,448,453,455,460,462,466,471,473,527,530,532,537],{"type":46,"tag":61,"props":435,"children":436},{},[437],{"type":52,"value":438},"Collection (2+ project roots one level deep)",{"type":52,"value":440}," — do ",{"type":46,"tag":61,"props":442,"children":443},{},[444],{"type":52,"value":445},"NOT",{"type":52,"value":447}," merge them into one stack. Identify\nthe distinct projects, ",{"type":46,"tag":61,"props":449,"children":450},{},[451],{"type":52,"value":452},"capped at 4",{"type":52,"value":454}," (if there are more, surface the four most representative\nand note that others exist). For each, note its directory name + a one-line stack summary (the\nmanifest that revealed it). Then ",{"type":46,"tag":61,"props":456,"children":457},{},[458],{"type":52,"value":459},"stop and ask the user to choose one",{"type":52,"value":461}," — do not auto-select.\nRecommend only for the chosen project.",{"type":46,"tag":463,"props":464,"children":465},"br",{},[],{"type":46,"tag":61,"props":467,"children":468},{},[469],{"type":52,"value":470},"How to ask",{"type":52,"value":472}," — prefer structured UI when available:",{"type":46,"tag":154,"props":474,"children":475},{},[476,517],{"type":46,"tag":73,"props":477,"children":478},{},[479,484,486,492,494,500,501,507,509,515],{"type":46,"tag":61,"props":480,"children":481},{},[482],{"type":52,"value":483},"Interactive Claude Code session",{"type":52,"value":485}," — call ",{"type":46,"tag":314,"props":487,"children":489},{"className":488},[],[490],{"type":52,"value":491},"AskUserQuestion",{"type":52,"value":493}," with a single question:\n",{"type":46,"tag":314,"props":495,"children":497},{"className":496},[],[498],{"type":52,"value":499},"question: \"Which project would you like me to analyze?\"",{"type":52,"value":329},{"type":46,"tag":314,"props":502,"children":504},{"className":503},[],[505],{"type":52,"value":506},"header: \"Project\"",{"type":52,"value":508},", and one\n",{"type":46,"tag":314,"props":510,"children":512},{"className":511},[],[513],{"type":52,"value":514},"{label: \u003Cdir-name>, description: \u003Cone-line stack summary — manifest file>}",{"type":52,"value":516}," option per project\n(up to 4). The \"Other\" entry lets the user type a project not listed.",{"type":46,"tag":73,"props":518,"children":519},{},[520,525],{"type":46,"tag":61,"props":521,"children":522},{},[523],{"type":52,"value":524},"Non-interactive \u002F tool not available",{"type":52,"value":526}," — present a numbered list (one project per line,\ndir name + stack summary) and stop. Wait for the user's reply before proceeding.",{"type":46,"tag":463,"props":528,"children":529},{},[],{"type":52,"value":531},"Everything below — stack detection, the foundation\u002Fdifferentiation mapping, the guardrail table, and\nthe anchor-corroboration check — applies to the ",{"type":46,"tag":61,"props":533,"children":534},{},[535],{"type":52,"value":536},"chosen project's subtree only",{"type":52,"value":538},", never the union.",{"type":46,"tag":274,"props":540,"children":542},{"id":541},"step-2b-detect-the-stack-within-the-chosen-project",[543],{"type":52,"value":544},"Step 2b — Detect the stack (within the chosen project)",{"type":46,"tag":55,"props":546,"children":547},{},[548,550,556,558,563],{"type":52,"value":549},"Scan the chosen project (e.g. ",{"type":46,"tag":314,"props":551,"children":553},{"className":552},[],[554],{"type":52,"value":555},".\u002Fproject",{"type":52,"value":557},", the selected sub-project, or the current repo). Identify,\nand for each note ",{"type":46,"tag":61,"props":559,"children":560},{},[561],{"type":52,"value":562},"the file that gave it away",{"type":52,"value":564},":",{"type":46,"tag":154,"props":566,"children":567},{},[568,638,648,665,675,693,703,713,731,762,772],{"type":46,"tag":73,"props":569,"children":570},{},[571,576,578,583,584,589,590,595,596,601,602,607,609,614,615,620,621,626,627,632,633],{"type":46,"tag":61,"props":572,"children":573},{},[574],{"type":52,"value":575},"Language\u002Fruntime",{"type":52,"value":577}," — ",{"type":46,"tag":314,"props":579,"children":581},{"className":580},[],[582],{"type":52,"value":319},{"type":52,"value":329},{"type":46,"tag":314,"props":585,"children":587},{"className":586},[],[588],{"type":52,"value":335},{"type":52,"value":337},{"type":46,"tag":314,"props":591,"children":593},{"className":592},[],[594],{"type":52,"value":343},{"type":52,"value":329},{"type":46,"tag":314,"props":597,"children":599},{"className":598},[],[600],{"type":52,"value":327},{"type":52,"value":329},{"type":46,"tag":314,"props":603,"children":605},{"className":604},[],[606],{"type":52,"value":350},{"type":52,"value":608},"\u002F\n",{"type":46,"tag":314,"props":610,"children":612},{"className":611},[],[613],{"type":52,"value":357},{"type":52,"value":329},{"type":46,"tag":314,"props":616,"children":618},{"className":617},[],[619],{"type":52,"value":364},{"type":52,"value":329},{"type":46,"tag":314,"props":622,"children":624},{"className":623},[],[625],{"type":52,"value":371},{"type":52,"value":329},{"type":46,"tag":314,"props":628,"children":630},{"className":629},[],[631],{"type":52,"value":378},{"type":52,"value":329},{"type":46,"tag":314,"props":634,"children":636},{"className":635},[],[637],{"type":52,"value":386},{"type":46,"tag":73,"props":639,"children":640},{},[641,646],{"type":46,"tag":61,"props":642,"children":643},{},[644],{"type":52,"value":645},"Web framework",{"type":52,"value":647}," — Django\u002FFlask\u002FFastAPI, Express\u002FNext.js\u002FNest, Spring Boot, Rails, Laravel, Gin\u002Fchi",{"type":46,"tag":73,"props":649,"children":650},{},[651,656,658,663],{"type":46,"tag":61,"props":652,"children":653},{},[654],{"type":52,"value":655},"Frontend",{"type":52,"value":657}," — React\u002FVue\u002FAngular\u002FSvelte\u002FNext(client)\u002Fvanilla; and a ",{"type":46,"tag":61,"props":659,"children":660},{},[661],{"type":52,"value":662},"bundler",{"type":52,"value":664}," (vite\u002Fwebpack\u002Fesbuild) → Source Maps",{"type":46,"tag":73,"props":666,"children":667},{},[668,673],{"type":46,"tag":61,"props":669,"children":670},{},[671],{"type":52,"value":672},"Mobile",{"type":52,"value":674}," — iOS\u002FAndroid\u002FReact Native\u002FFlutter\u002FUnity",{"type":46,"tag":73,"props":676,"children":677},{},[678,683,685,691],{"type":46,"tag":61,"props":679,"children":680},{},[681],{"type":52,"value":682},"Database",{"type":52,"value":684}," — Postgres\u002FMySQL\u002FSQL Server\u002FOracle\u002FMongo (driver dep, ",{"type":46,"tag":314,"props":686,"children":688},{"className":687},[],[689],{"type":52,"value":690},"DATABASE_URL",{"type":52,"value":692},", compose service)",{"type":46,"tag":73,"props":694,"children":695},{},[696,701],{"type":46,"tag":61,"props":697,"children":698},{},[699],{"type":52,"value":700},"Datastores\u002Fmessaging",{"type":52,"value":702}," — Redis, Kafka, RabbitMQ, SQS\u002FSNS, Elasticsearch",{"type":46,"tag":73,"props":704,"children":705},{},[706,711],{"type":46,"tag":61,"props":707,"children":708},{},[709],{"type":52,"value":710},"Deploy\u002Fplatform",{"type":52,"value":712}," — Docker, Kubernetes, ECS\u002FFargate, Lambda, Vercel, Cloud Run, Azure, bare host",{"type":46,"tag":73,"props":714,"children":715},{},[716,721,723,729],{"type":46,"tag":61,"props":717,"children":718},{},[719],{"type":52,"value":720},"Cloud",{"type":52,"value":722}," — AWS\u002FGCP\u002FAzure (SDKs, IaC ",{"type":46,"tag":314,"props":724,"children":726},{"className":725},[],[727],{"type":52,"value":728},"provider",{"type":52,"value":730},", env)",{"type":46,"tag":73,"props":732,"children":733},{},[734,739,740,746,747,753,754,760],{"type":46,"tag":61,"props":735,"children":736},{},[737],{"type":52,"value":738},"CI \u002F tests",{"type":52,"value":577},{"type":46,"tag":314,"props":741,"children":743},{"className":742},[],[744],{"type":52,"value":745},".github\u002Fworkflows",{"type":52,"value":329},{"type":46,"tag":314,"props":748,"children":750},{"className":749},[],[751],{"type":52,"value":752},".gitlab-ci.yml",{"type":52,"value":329},{"type":46,"tag":314,"props":755,"children":757},{"className":756},[],[758],{"type":52,"value":759},"Jenkinsfile",{"type":52,"value":761},"; pytest\u002Fjest\u002Fjunit\u002Fplaywright",{"type":46,"tag":73,"props":763,"children":764},{},[765,770],{"type":46,"tag":61,"props":766,"children":767},{},[768],{"type":52,"value":769},"LLM\u002FAI",{"type":52,"value":771}," — anthropic\u002Fopenai\u002Flangchain\u002Flanggraph\u002Fbedrock\u002Fvertexai\u002Fllamaindex\u002Fetc.",{"type":46,"tag":73,"props":773,"children":774},{},[775,780,781,787,788,794,795,801,803,809,811,817,819,824],{"type":46,"tag":61,"props":776,"children":777},{},[778],{"type":52,"value":779},"Existing Datadog",{"type":52,"value":577},{"type":46,"tag":314,"props":782,"children":784},{"className":783},[],[785],{"type":52,"value":786},"datadog.yaml",{"type":52,"value":329},{"type":46,"tag":314,"props":789,"children":791},{"className":790},[],[792],{"type":52,"value":793},"dd-trace",{"type":52,"value":337},{"type":46,"tag":314,"props":796,"children":798},{"className":797},[],[799],{"type":52,"value":800},"ddtrace",{"type":52,"value":802}," deps, ",{"type":46,"tag":314,"props":804,"children":806},{"className":805},[],[807],{"type":52,"value":808},"DD_*",{"type":52,"value":810}," env, ",{"type":46,"tag":314,"props":812,"children":814},{"className":813},[],[815],{"type":52,"value":816},"@datadog\u002F*",{"type":52,"value":818}," SDKs →\nonly recommend the ",{"type":46,"tag":61,"props":820,"children":821},{},[822],{"type":52,"value":823},"gaps",{"type":52,"value":825},", don't re-suggest what's already wired.",{"type":46,"tag":55,"props":827,"children":828},{},[829,831,836],{"type":52,"value":830},"Report only what was ",{"type":46,"tag":61,"props":832,"children":833},{},[834],{"type":52,"value":835},"found",{"type":52,"value":837}," — one bullet per signal, with the file that revealed it. Do NOT list\nthings that are absent (\"no database\", \"no frontend\", etc.) — silence on a signal means it wasn't\ndetected. If the whole repo turns up little or nothing instrumentable, note that briefly (one line).",{"type":46,"tag":104,"props":839,"children":841},{"id":840},"step-3-map-to-a-recommendation",[842],{"type":52,"value":843},"Step 3 — Map to a recommendation",{"type":46,"tag":69,"props":845,"children":846},{},[847,857,987,1067,1091],{"type":46,"tag":73,"props":848,"children":849},{},[850,855],{"type":46,"tag":61,"props":851,"children":852},{},[853],{"type":52,"value":854},"Foundation layer (from stack):",{"type":52,"value":856}," apply the \"Foundational baseline\" in the Stack → Products\nreference below. Any backend → APM + Logs (+ Profiler). Any frontend → RUM + Error Tracking +\nSession Replay (+ Source Maps if bundled). Container\u002Fk8s → Infrastructure Monitoring. Serverless\n→ Serverless Monitoring. LLM app → LLM Observability. Database → APM DB spans; DBM if query\nperformance is in scope.",{"type":46,"tag":73,"props":858,"children":859},{},[860,865,867,872,874,879,881,886],{"type":46,"tag":61,"props":861,"children":862},{},[863],{"type":52,"value":864},"Differentiation layer (from intent):",{"type":52,"value":866}," if there's a stated goal, look up its theme in the\nUse Case → Products reference below and read each product's ",{"type":46,"tag":61,"props":868,"children":869},{},[870],{"type":52,"value":871},"tier",{"type":52,"value":873}," and ",{"type":46,"tag":61,"props":875,"children":876},{},[877],{"type":52,"value":878},"confidence",{"type":52,"value":880},".\n",{"type":46,"tag":61,"props":882,"children":883},{},[884],{"type":52,"value":885},"Confidence gates the lead:",{"type":46,"tag":154,"props":887,"children":888},{},[889,904,921,945,956],{"type":46,"tag":73,"props":890,"children":891},{},[892,897,899],{"type":46,"tag":61,"props":893,"children":894},{},[895],{"type":52,"value":896},"defining + well-established",{"type":52,"value":898}," (or a capability-obvious pick) → ",{"type":46,"tag":61,"props":900,"children":901},{},[902],{"type":52,"value":903},"lead with it.",{"type":46,"tag":73,"props":905,"children":906},{},[907,912,914,919],{"type":46,"tag":61,"props":908,"children":909},{},[910],{"type":52,"value":911},"emerging",{"type":52,"value":913}," → include as a ",{"type":46,"tag":61,"props":915,"children":916},{},[917],{"type":52,"value":918},"supporting add",{"type":52,"value":920},", don't over-anchor it.",{"type":46,"tag":73,"props":922,"children":923},{},[924,929,931,936,938,943],{"type":46,"tag":61,"props":925,"children":926},{},[927],{"type":52,"value":928},"anecdotal",{"type":52,"value":930}," → mention ",{"type":46,"tag":61,"props":932,"children":933},{},[934],{"type":52,"value":935},"only",{"type":52,"value":937}," on an explicit, unambiguous match; ",{"type":46,"tag":61,"props":939,"children":940},{},[941],{"type":52,"value":942},"never",{"type":52,"value":944}," as the headline.",{"type":46,"tag":73,"props":946,"children":947},{},[948,950,954],{"type":52,"value":949},"If the theme has no confidently-supported differentiator (it's all-foundation, or breadth-only),\n",{"type":46,"tag":61,"props":951,"children":952},{},[953],{"type":52,"value":171},{"type":52,"value":955}," and say so honestly — don't invent an anchor.",{"type":46,"tag":73,"props":957,"children":958},{},[959,964,966,971,973,978,980,985],{"type":46,"tag":61,"props":960,"children":961},{},[962],{"type":52,"value":963},"Platform capabilities (intent-driven):",{"type":52,"value":965}," if the goal is to \"know when\" \u002F be alerted \u002F notified,\nlead with ",{"type":46,"tag":61,"props":967,"children":968},{},[969],{"type":52,"value":970},"Monitors & Alerting",{"type":52,"value":972}," (e.g. a log monitor on the error pattern) — the direct answer.\nSimilarly \"single pane of glass\" → ",{"type":46,"tag":61,"props":974,"children":975},{},[976],{"type":52,"value":977},"Dashboards",{"type":52,"value":979},"; \"track SLOs \u002F error budgets\" → ",{"type":46,"tag":61,"props":981,"children":982},{},[983],{"type":52,"value":984},"SLOs",{"type":52,"value":986},".",{"type":46,"tag":73,"props":988,"children":989},{},[990,995,997,1002,1004,1009,1011,1017,1019,1024,1026,1031,1033,1038,1040],{"type":46,"tag":61,"props":991,"children":992},{},[993],{"type":52,"value":994},"Don't confabulate stack to satisfy an intent anchor — verify the code supports the anchor before\nleading with it.",{"type":52,"value":996}," A use-case anchor (Cloud SIEM, CSPM, CCM, LLM Obs, NDM, DBM, …) may ",{"type":46,"tag":61,"props":998,"children":999},{},[1000],{"type":52,"value":1001},"lead only\nwhen the codebase corroborates it",{"type":52,"value":1003}," — the relevant SDK \u002F IaC \u002F library \u002F config is actually present.\nWhen you scoped to one project in Step 2a, \"the codebase\" means ",{"type":46,"tag":61,"props":1005,"children":1006},{},[1007],{"type":52,"value":1008},"that chosen project's subtree",{"type":52,"value":1010}," —\na signal in a ",{"type":46,"tag":1012,"props":1013,"children":1014},"em",{},[1015],{"type":52,"value":1016},"sibling",{"type":52,"value":1018}," project does not corroborate an anchor for the one you selected.\nIf the stated goal points at a product but the codebase shows ",{"type":46,"tag":61,"props":1020,"children":1021},{},[1022],{"type":52,"value":1023},"no evidence",{"type":52,"value":1025}," for it (e.g. a security\ngoal on a repo with no cloud\u002FIaC surface, a cost goal with no cloud SDK\u002FIaC, an LLM goal with no LLM\nlibrary), ",{"type":46,"tag":61,"props":1027,"children":1028},{},[1029],{"type":52,"value":1030},"do NOT lead with that anchor",{"type":52,"value":1032}," — name the mismatch instead. Stack evidence beats intent\ncorrelation; the user's ",{"type":46,"tag":1012,"props":1034,"children":1035},{},[1036],{"type":52,"value":1037},"language",{"type":52,"value":1039}," matching an anchor is not, by itself, license to lead with it.",{"type":46,"tag":154,"props":1041,"children":1042},{},[1043],{"type":46,"tag":73,"props":1044,"children":1045},{},[1046,1051,1053,1058,1060,1065],{"type":46,"tag":61,"props":1047,"children":1048},{},[1049],{"type":52,"value":1050},"The goal asserting an out-of-repo resource is not codebase evidence.",{"type":52,"value":1052}," If the user ",{"type":46,"tag":1012,"props":1054,"children":1055},{},[1056],{"type":52,"value":1057},"states",{"type":52,"value":1059}," a\nresource that the code doesn't show (\"our AWS bill\", \"our AWS setup\", \"our LLM service\"), treat the\nanchor as a ",{"type":46,"tag":61,"props":1061,"children":1062},{},[1063],{"type":52,"value":1064},"conditional add at Medium\u002FLow priority, explicitly caveated",{"type":52,"value":1066}," (\"if you run AWS infra\noutside this repo, Cloud Cost Management \u002F CSPM applies — I can't confirm it from this codebase\"),\nnever a High-priority lead and never as a \"detected\" finding. Lead with what the code actually\nsupports; offer the asserted anchor as the conditional next step. Do not write a detected-stack line\nlike \"Cloud: AWS (from the goal)\" — that is fabrication.",{"type":46,"tag":73,"props":1068,"children":1069},{},[1070,1075,1077,1082,1084,1089],{"type":46,"tag":61,"props":1071,"children":1072},{},[1073],{"type":52,"value":1074},"Assemble & rank.",{"type":52,"value":1076}," Order by how directly each product serves the stack + goal. Mark each\nproduct's ",{"type":46,"tag":61,"props":1078,"children":1079},{},[1080],{"type":52,"value":1081},"confidence\u002Fpriority",{"type":52,"value":1083},", and let it follow the evidence — a goal anchor with thin\nconfidence is ",{"type":46,"tag":61,"props":1085,"children":1086},{},[1087],{"type":52,"value":1088},"Medium\u002FLow and flagged",{"type":52,"value":1090},", not auto-High. Foundation that doesn't serve the goal\ndrops beneath or is named only briefly. Hard cap: 3 products maximum; pick the strongest fits\n(0–1 is valid when little applies).",{"type":46,"tag":73,"props":1092,"children":1093},{},[1094,1099,1218,1221,1223,1227,1229,1235],{"type":46,"tag":61,"props":1095,"children":1096},{},[1097],{"type":52,"value":1098},"Apply precision guardrails — recommend ONLY what is supported:",{"type":46,"tag":1100,"props":1101,"children":1102},"table",{},[1103,1122],{"type":46,"tag":1104,"props":1105,"children":1106},"thead",{},[1107],{"type":46,"tag":1108,"props":1109,"children":1110},"tr",{},[1111,1117],{"type":46,"tag":1112,"props":1113,"children":1114},"th",{},[1115],{"type":52,"value":1116},"Do NOT recommend…",{"type":46,"tag":1112,"props":1118,"children":1119},{},[1120],{"type":52,"value":1121},"…unless the codebase has",{"type":46,"tag":1123,"props":1124,"children":1125},"tbody",{},[1126,1140,1153,1166,1179,1192,1205],{"type":46,"tag":1108,"props":1127,"children":1128},{},[1129,1135],{"type":46,"tag":1130,"props":1131,"children":1132},"td",{},[1133],{"type":52,"value":1134},"RUM (Browser) \u002F Session Replay",{"type":46,"tag":1130,"props":1136,"children":1137},{},[1138],{"type":52,"value":1139},"a web frontend",{"type":46,"tag":1108,"props":1141,"children":1142},{},[1143,1148],{"type":46,"tag":1130,"props":1144,"children":1145},{},[1146],{"type":52,"value":1147},"Source Map Uploads",{"type":46,"tag":1130,"props":1149,"children":1150},{},[1151],{"type":52,"value":1152},"a JS frontend with a bundler\u002Fminifier",{"type":46,"tag":1108,"props":1154,"children":1155},{},[1156,1161],{"type":46,"tag":1130,"props":1157,"children":1158},{},[1159],{"type":52,"value":1160},"Real User Monitoring (RUM) \u002F Error Tracking (mobile)",{"type":46,"tag":1130,"props":1162,"children":1163},{},[1164],{"type":52,"value":1165},"a mobile app",{"type":46,"tag":1108,"props":1167,"children":1168},{},[1169,1174],{"type":46,"tag":1130,"props":1170,"children":1171},{},[1172],{"type":52,"value":1173},"LLM Observability",{"type":46,"tag":1130,"props":1175,"children":1176},{},[1177],{"type":52,"value":1178},"an LLM\u002FAI library in use",{"type":46,"tag":1108,"props":1180,"children":1181},{},[1182,1187],{"type":46,"tag":1130,"props":1183,"children":1184},{},[1185],{"type":52,"value":1186},"Database Monitoring",{"type":46,"tag":1130,"props":1188,"children":1189},{},[1190],{"type":52,"value":1191},"a database",{"type":46,"tag":1108,"props":1193,"children":1194},{},[1195,1200],{"type":46,"tag":1130,"props":1196,"children":1197},{},[1198],{"type":52,"value":1199},"Serverless Monitoring",{"type":46,"tag":1130,"props":1201,"children":1202},{},[1203],{"type":52,"value":1204},"serverless (Lambda\u002FVercel\u002FCloud Run\u002FAzure Functions)",{"type":46,"tag":1108,"props":1206,"children":1207},{},[1208,1213],{"type":46,"tag":1130,"props":1209,"children":1210},{},[1211],{"type":52,"value":1212},"Network Device Monitoring",{"type":46,"tag":1130,"props":1214,"children":1215},{},[1216],{"type":52,"value":1217},"SNMP \u002F physical network devices",{"type":46,"tag":463,"props":1219,"children":1220},{},[],{"type":52,"value":1222},"And ",{"type":46,"tag":61,"props":1224,"children":1225},{},[1226],{"type":52,"value":942},{"type":52,"value":1228}," recommend the ",{"type":46,"tag":314,"props":1230,"children":1232},{"className":1231},[],[1233],{"type":52,"value":1234},"(Services \u002F Non-Product)",{"type":52,"value":1236}," items or raw SKU\u002Fpricing names (see catalog).",{"type":46,"tag":104,"props":1238,"children":1240},{"id":1239},"step-4-output-the-recommendation",[1241],{"type":52,"value":1242},"Step 4 — Output the recommendation",{"type":46,"tag":55,"props":1244,"children":1245},{},[1246,1248,1253],{"type":52,"value":1247},"This recommendation ",{"type":46,"tag":61,"props":1249,"children":1250},{},[1251],{"type":52,"value":1252},"is",{"type":52,"value":1254}," the final answer. If the prompt tells you to \"stop after Step 3\" or\n\"stop after recommending products,\" that means: produce this recommendation as your final message\nand stop — do not continue to any setup\u002Finstallation step. No preamble, no recap, no closing prose.\nProduce exactly this structure:",{"type":46,"tag":55,"props":1256,"children":1257},{},[1258,1263,1265,1270,1272,1277],{"type":46,"tag":61,"props":1259,"children":1260},{},[1261],{"type":52,"value":1262},"Projects",{"type":52,"value":1264}," ",{"type":46,"tag":1012,"props":1266,"children":1267},{},[1268],{"type":52,"value":1269},"(collections only)",{"type":52,"value":1271},"\nOnly when the target is a collection: list the project roots (up to 4), each with a one-line stack\nsummary and the manifest file that revealed it. Use ",{"type":46,"tag":314,"props":1273,"children":1275},{"className":1274},[],[1276],{"type":52,"value":491},{"type":52,"value":1278}," in interactive sessions (see\nStep 2a) so the user picks from a radio list; fall back to the numbered prose list in\nnon-interactive contexts. Either way, stop here and wait for their choice. Omit this section\nentirely for a single-project target.",{"type":46,"tag":55,"props":1280,"children":1281},{},[1282,1287,1289,1295],{"type":46,"tag":61,"props":1283,"children":1284},{},[1285],{"type":52,"value":1286},"Detected stack",{"type":52,"value":1288},"\nOne bullet per detected signal, format: ",{"type":46,"tag":314,"props":1290,"children":1292},{"className":1291},[],[1293],{"type":52,"value":1294},"- **Label:** value — file-that-revealed-it",{"type":52,"value":1296},"\nOnly list signals that were actually found. Do not mention absent signals.\nIf existing Datadog instrumentation is present, list it here so the recommendation covers only gaps.\nIf little or nothing instrumentable was found, say so in one line.",{"type":46,"tag":55,"props":1298,"children":1299},{},[1300,1305,1307,1312,1314,1320,1322,1327],{"type":46,"tag":61,"props":1301,"children":1302},{},[1303],{"type":52,"value":1304},"Recommended products",{"type":52,"value":1306},"\nA ranked list, ",{"type":46,"tag":61,"props":1308,"children":1309},{},[1310],{"type":52,"value":1311},"3 products maximum",{"type":52,"value":1313},". For each entry, on one line:\n",{"type":46,"tag":314,"props":1315,"children":1317},{"className":1316},[],[1318],{"type":52,"value":1319},"N. **Product name** · Priority · one sentence why",{"type":52,"value":1321},"\nThe sentence must name a specific file or library from the detected stack and the product's\ncapability for the intent. Do not write multiple sentences per product. Mark thin picks as\n",{"type":46,"tag":61,"props":1323,"children":1324},{},[1325],{"type":52,"value":1326},"low-confidence",{"type":52,"value":1328},". Lead with the differentiator (if one is well-supported); list foundation\n(Infra\u002FLogs\u002FAPM) beneath. If no well-supported differentiator exists, lead with foundation and say\nso in one line. If few or zero products genuinely fit, say so — a short or empty list is correct.",{"type":46,"tag":55,"props":1330,"children":1331},{},[1332,1337,1338,1343],{"type":46,"tag":61,"props":1333,"children":1334},{},[1335],{"type":52,"value":1336},"Mismatch note",{"type":52,"value":1264},{"type":46,"tag":1012,"props":1339,"children":1340},{},[1341],{"type":52,"value":1342},"(only when there is a genuine intent↔codebase conflict)",{"type":52,"value":1344},"\nOnly include this section when the stated goal points at a product the codebase does not support\n(e.g. LLM goal but no LLM library, cost goal but no cloud SDK\u002FIaC). One line naming the conflict\nand what evidence would be needed. Do NOT use this section to list products that are simply absent\nfrom the stack — omitting a product from the recommended list is sufficient.",{"type":46,"tag":104,"props":1346,"children":1348},{"id":1347},"behavioral-rules",[1349],{"type":52,"value":1350},"Behavioral rules",{"type":46,"tag":154,"props":1352,"children":1353},{},[1354,1364,1374,1391,1431,1441,1451,1461,1471,1481,1491],{"type":46,"tag":73,"props":1355,"children":1356},{},[1357,1362],{"type":46,"tag":61,"props":1358,"children":1359},{},[1360],{"type":52,"value":1361},"Recommendation only",{"type":52,"value":1363}," — never produce install steps, config, or MCP calls; never edit the codebase.",{"type":46,"tag":73,"props":1365,"children":1366},{},[1367,1372],{"type":46,"tag":61,"props":1368,"children":1369},{},[1370],{"type":52,"value":1371},"Detect, don't guess",{"type":52,"value":1373}," — every product must trace to a real signal in the code or the stated goal.\nNever confabulate stack to justify an intent anchor; flag intent↔codebase mismatches.",{"type":46,"tag":73,"props":1375,"children":1376},{},[1377,1382,1384,1389],{"type":46,"tag":61,"props":1378,"children":1379},{},[1380],{"type":52,"value":1381},"Scope before you detect",{"type":52,"value":1383}," — if the target holds 2+ project roots one level deep, it's a collection:\nsurface up to 4, prompt the user to choose one via ",{"type":46,"tag":314,"props":1385,"children":1387},{"className":1386},[],[1388],{"type":52,"value":491},{"type":52,"value":1390}," (interactive) or a numbered\nprose list (non-interactive), and stop until they do. Never auto-select, never merge multiple\nprojects into one bundle, and corroborate intent anchors against the chosen project's subtree only\n— not a sibling's.",{"type":46,"tag":73,"props":1392,"children":1393},{},[1394,1399,1401,1407,1409,1415,1417,1422,1424,1429],{"type":46,"tag":61,"props":1395,"children":1396},{},[1397],{"type":52,"value":1398},"Confidence gates the lead",{"type":52,"value":1400}," — lead only with ",{"type":46,"tag":314,"props":1402,"children":1404},{"className":1403},[],[1405],{"type":52,"value":1406},"defining",{"type":52,"value":1408}," + ",{"type":46,"tag":314,"props":1410,"children":1412},{"className":1411},[],[1413],{"type":52,"value":1414},"well-established",{"type":52,"value":1416}," (or capability-obvious)\nanchors; ",{"type":46,"tag":314,"props":1418,"children":1420},{"className":1419},[],[1421],{"type":52,"value":911},{"type":52,"value":1423}," is a supporting add; ",{"type":46,"tag":314,"props":1425,"children":1427},{"className":1426},[],[1428],{"type":52,"value":928},{"type":52,"value":1430}," is mentioned only on an explicit match, never as\nthe headline.",{"type":46,"tag":73,"props":1432,"children":1433},{},[1434,1439],{"type":46,"tag":61,"props":1435,"children":1436},{},[1437],{"type":52,"value":1438},"Foundation may lead",{"type":52,"value":1440}," — when no well-supported differentiator exists, leading with Infra\u002FLogs\u002FAPM is\ncorrect. Otherwise present foundation beneath the differentiators.",{"type":46,"tag":73,"props":1442,"children":1443},{},[1444,1449],{"type":46,"tag":61,"props":1445,"children":1446},{},[1447],{"type":52,"value":1448},"Hard cap: 3 products maximum",{"type":52,"value":1450}," — pick the strongest fits; there is no minimum. When the stack is\ntiny, static-only, or out of scope, very few or zero products is correct. Even an \"everything\" ask\nstays bounded to the top 3 with real codebase signal.",{"type":46,"tag":73,"props":1452,"children":1453},{},[1454,1459],{"type":46,"tag":61,"props":1455,"children":1456},{},[1457],{"type":52,"value":1458},"Compact, predictable output",{"type":52,"value":1460}," — no preamble, no recap, no closing prose. Four sections max\n(Projects · Stack · Products · Mismatch); omit any section that doesn't apply. One bullet per stack\nsignal, one line per product, one-line mismatch note at most.",{"type":46,"tag":73,"props":1462,"children":1463},{},[1464,1469],{"type":46,"tag":61,"props":1465,"children":1466},{},[1467],{"type":52,"value":1468},"Stack: only positives",{"type":52,"value":1470}," — list detected signals only; never narrate absences (\"no database\", \"no\nfrontend\"). Silence on a signal means it wasn't found. Existing Datadog instrumentation is listed so\nthe recommendation covers gaps, not re-recommendations.",{"type":46,"tag":73,"props":1472,"children":1473},{},[1474,1479],{"type":46,"tag":61,"props":1475,"children":1476},{},[1477],{"type":52,"value":1478},"Justify with capability + evidence, not magnitude",{"type":52,"value":1480}," — one sentence per product naming a specific\nfile\u002Flibrary and the product's capability for the intent. Never cite figures, percentages, or\nranking magnitude.",{"type":46,"tag":73,"props":1482,"children":1483},{},[1484,1489],{"type":46,"tag":61,"props":1485,"children":1486},{},[1487],{"type":52,"value":1488},"Precision over breadth",{"type":52,"value":1490}," — a tight, correct bundle beats a long dump. Omitting an unsupported\nproduct is sufficient; never explain the omission. Honor the guardrail table; never recommend\nservices\u002Fenablement\u002FSKU strings.",{"type":46,"tag":73,"props":1492,"children":1493},{},[1494,1499],{"type":46,"tag":61,"props":1495,"children":1496},{},[1497],{"type":52,"value":1498},"Confidence & restraint are first-class output",{"type":52,"value":1500}," — a product may be marked low-confidence\u002Foptional;\na thin-confidence goal anchor is Medium\u002FLow and flagged, not auto-High; \"few\u002Fno products apply\" is a\nvalid final answer.",{"type":46,"tag":1502,"props":1503,"children":1504},"hr",{},[],{"type":46,"tag":104,"props":1506,"children":1508},{"id":1507},"reference-stack-products",[1509],{"type":52,"value":1510},"Reference: Stack → Products",{"type":46,"tag":55,"props":1512,"children":1513},{},[1514,1516,1521],{"type":52,"value":1515},"The axis orthogonal to use-case: ",{"type":46,"tag":61,"props":1517,"children":1518},{},[1519],{"type":52,"value":1520},"given a concrete technical signal, which products apply,\nindependent of stated goal.",{"type":52,"value":1522}," Two tiers:",{"type":46,"tag":154,"props":1524,"children":1525},{},[1526,1543],{"type":46,"tag":73,"props":1527,"children":1528},{},[1529,1534,1536,1541],{"type":46,"tag":61,"props":1530,"children":1531},{},[1532],{"type":52,"value":1533},"Foundational",{"type":52,"value":1535}," — recommend whenever the signal is present, ",{"type":46,"tag":1012,"props":1537,"children":1538},{},[1539],{"type":52,"value":1540},"regardless",{"type":52,"value":1542}," of the user's goal.\nThis is the baseline floor.",{"type":46,"tag":73,"props":1544,"children":1545},{},[1546,1551,1553,1558],{"type":46,"tag":61,"props":1547,"children":1548},{},[1549],{"type":52,"value":1550},"Situational",{"type":52,"value":1552}," — recommend only when the use case \u002F intent calls for it (see Use Case → Products\nbelow). Present here so you know what a signal ",{"type":46,"tag":1012,"props":1554,"children":1555},{},[1556],{"type":52,"value":1557},"enables",{"type":52,"value":1559},", not what to always push.",{"type":46,"tag":55,"props":1561,"children":1562},{},[1563],{"type":52,"value":1564},"Detection hints are the files\u002Fdependencies\u002Fpatterns that reveal each signal.",{"type":46,"tag":274,"props":1566,"children":1568},{"id":1567},"backend-languages-apm-profiler-logs-foundational",[1569],{"type":52,"value":1570},"Backend languages → APM + Profiler + Logs (Foundational)",{"type":46,"tag":55,"props":1572,"children":1573},{},[1574,1576,1581,1583,1588],{"type":52,"value":1575},"The seven GA languages (Python through PHP) have a GA APM tracer ",{"type":46,"tag":61,"props":1577,"children":1578},{},[1579],{"type":52,"value":1580},"and",{"type":52,"value":1582}," a Continuous Profiler\n(profiler ships inside the tracer) — these are foundational. Rust and C\u002FC++ are the exceptions:\ntheir tracing\u002Fprofiling is Preview\u002Fmanual, so treat them as ",{"type":46,"tag":61,"props":1584,"children":1585},{},[1586],{"type":52,"value":1587},"situational",{"type":52,"value":1589},", not foundational.",{"type":46,"tag":1100,"props":1591,"children":1592},{},[1593,1619],{"type":46,"tag":1104,"props":1594,"children":1595},{},[1596],{"type":46,"tag":1108,"props":1597,"children":1598},{},[1599,1604,1609,1614],{"type":46,"tag":1112,"props":1600,"children":1601},{},[1602],{"type":52,"value":1603},"Signal",{"type":46,"tag":1112,"props":1605,"children":1606},{},[1607],{"type":52,"value":1608},"Detection hint",{"type":46,"tag":1112,"props":1610,"children":1611},{},[1612],{"type":52,"value":1613},"Products",{"type":46,"tag":1112,"props":1615,"children":1616},{},[1617],{"type":52,"value":1618},"Notes",{"type":46,"tag":1123,"props":1620,"children":1621},{},[1622,1675,1711,1754,1793,1831,1877,1909,1963],{"type":46,"tag":1108,"props":1623,"children":1624},{},[1625,1630,1658,1663],{"type":46,"tag":1130,"props":1626,"children":1627},{},[1628],{"type":52,"value":1629},"Python",{"type":46,"tag":1130,"props":1631,"children":1632},{},[1633,1638,1639,1644,1645,1651,1652],{"type":46,"tag":314,"props":1634,"children":1636},{"className":1635},[],[1637],{"type":52,"value":335},{"type":52,"value":329},{"type":46,"tag":314,"props":1640,"children":1642},{"className":1641},[],[1643],{"type":52,"value":343},{"type":52,"value":329},{"type":46,"tag":314,"props":1646,"children":1648},{"className":1647},[],[1649],{"type":52,"value":1650},"Pipfile",{"type":52,"value":329},{"type":46,"tag":314,"props":1653,"children":1655},{"className":1654},[],[1656],{"type":52,"value":1657},"*.py",{"type":46,"tag":1130,"props":1659,"children":1660},{},[1661],{"type":52,"value":1662},"APM + Profiler + Logs",{"type":46,"tag":1130,"props":1664,"children":1665},{},[1666,1668,1673],{"type":52,"value":1667},"GA ",{"type":46,"tag":314,"props":1669,"children":1671},{"className":1670},[],[1672],{"type":52,"value":800},{"type":52,"value":1674},", broad auto-instrumentation",{"type":46,"tag":1108,"props":1676,"children":1677},{},[1678,1683,1698,1702],{"type":46,"tag":1130,"props":1679,"children":1680},{},[1681],{"type":52,"value":1682},"Node.js",{"type":46,"tag":1130,"props":1684,"children":1685},{},[1686,1691,1692],{"type":46,"tag":314,"props":1687,"children":1689},{"className":1688},[],[1690],{"type":52,"value":319},{"type":52,"value":329},{"type":46,"tag":314,"props":1693,"children":1695},{"className":1694},[],[1696],{"type":52,"value":1697},"*.js\u002F*.ts",{"type":46,"tag":1130,"props":1699,"children":1700},{},[1701],{"type":52,"value":1662},{"type":46,"tag":1130,"props":1703,"children":1704},{},[1705,1706],{"type":52,"value":1667},{"type":46,"tag":314,"props":1707,"children":1709},{"className":1708},[],[1710],{"type":52,"value":793},{"type":46,"tag":1108,"props":1712,"children":1713},{},[1714,1719,1740,1744],{"type":46,"tag":1130,"props":1715,"children":1716},{},[1717],{"type":52,"value":1718},"Java \u002F JVM (Kotlin, Scala)",{"type":46,"tag":1130,"props":1720,"children":1721},{},[1722,1727,1728,1733,1734],{"type":46,"tag":314,"props":1723,"children":1725},{"className":1724},[],[1726],{"type":52,"value":350},{"type":52,"value":329},{"type":46,"tag":314,"props":1729,"children":1731},{"className":1730},[],[1732],{"type":52,"value":357},{"type":52,"value":329},{"type":46,"tag":314,"props":1735,"children":1737},{"className":1736},[],[1738],{"type":52,"value":1739},"*.java\u002F*.kt",{"type":46,"tag":1130,"props":1741,"children":1742},{},[1743],{"type":52,"value":1662},{"type":46,"tag":1130,"props":1745,"children":1746},{},[1747,1748],{"type":52,"value":1667},{"type":46,"tag":314,"props":1749,"children":1751},{"className":1750},[],[1752],{"type":52,"value":1753},"-javaagent",{"type":46,"tag":1108,"props":1755,"children":1756},{},[1757,1762,1777,1781],{"type":46,"tag":1130,"props":1758,"children":1759},{},[1760],{"type":52,"value":1761},"Go",{"type":46,"tag":1130,"props":1763,"children":1764},{},[1765,1770,1771],{"type":46,"tag":314,"props":1766,"children":1768},{"className":1767},[],[1769],{"type":52,"value":327},{"type":52,"value":329},{"type":46,"tag":314,"props":1772,"children":1774},{"className":1773},[],[1775],{"type":52,"value":1776},"*.go",{"type":46,"tag":1130,"props":1778,"children":1779},{},[1780],{"type":52,"value":1662},{"type":46,"tag":1130,"props":1782,"children":1783},{},[1784,1785,1791],{"type":52,"value":1667},{"type":46,"tag":314,"props":1786,"children":1788},{"className":1787},[],[1789],{"type":52,"value":1790},"dd-trace-go",{"type":52,"value":1792},"; instrumentation via contrib\u002FOrchestrion (compiled lang, not zero-touch)",{"type":46,"tag":1108,"props":1794,"children":1795},{},[1796,1801,1816,1820],{"type":46,"tag":1130,"props":1797,"children":1798},{},[1799],{"type":52,"value":1800},"Ruby",{"type":46,"tag":1130,"props":1802,"children":1803},{},[1804,1809,1810],{"type":46,"tag":314,"props":1805,"children":1807},{"className":1806},[],[1808],{"type":52,"value":364},{"type":52,"value":329},{"type":46,"tag":314,"props":1811,"children":1813},{"className":1812},[],[1814],{"type":52,"value":1815},"*.rb",{"type":46,"tag":1130,"props":1817,"children":1818},{},[1819],{"type":52,"value":1662},{"type":46,"tag":1130,"props":1821,"children":1822},{},[1823,1824,1829],{"type":52,"value":1667},{"type":46,"tag":314,"props":1825,"children":1827},{"className":1826},[],[1828],{"type":52,"value":24},{"type":52,"value":1830}," gem",{"type":46,"tag":1108,"props":1832,"children":1833},{},[1834,1839,1861,1865],{"type":46,"tag":1130,"props":1835,"children":1836},{},[1837],{"type":52,"value":1838},".NET (C#\u002FF#)",{"type":46,"tag":1130,"props":1840,"children":1841},{},[1842,1847,1848,1854,1855],{"type":46,"tag":314,"props":1843,"children":1845},{"className":1844},[],[1846],{"type":52,"value":371},{"type":52,"value":329},{"type":46,"tag":314,"props":1849,"children":1851},{"className":1850},[],[1852],{"type":52,"value":1853},"*.sln",{"type":52,"value":329},{"type":46,"tag":314,"props":1856,"children":1858},{"className":1857},[],[1859],{"type":52,"value":1860},"*.cs",{"type":46,"tag":1130,"props":1862,"children":1863},{},[1864],{"type":52,"value":1662},{"type":46,"tag":1130,"props":1866,"children":1867},{},[1868,1870,1875],{"type":52,"value":1869},"Profiler ",{"type":46,"tag":61,"props":1871,"children":1872},{},[1873],{"type":52,"value":1874},"not auto-enabled with APM",{"type":52,"value":1876},", no ARM64, no Lambda",{"type":46,"tag":1108,"props":1878,"children":1879},{},[1880,1885,1900,1904],{"type":46,"tag":1130,"props":1881,"children":1882},{},[1883],{"type":52,"value":1884},"PHP",{"type":46,"tag":1130,"props":1886,"children":1887},{},[1888,1893,1894],{"type":46,"tag":314,"props":1889,"children":1891},{"className":1890},[],[1892],{"type":52,"value":378},{"type":52,"value":329},{"type":46,"tag":314,"props":1895,"children":1897},{"className":1896},[],[1898],{"type":52,"value":1899},"*.php",{"type":46,"tag":1130,"props":1901,"children":1902},{},[1903],{"type":52,"value":1662},{"type":46,"tag":1130,"props":1905,"children":1906},{},[1907],{"type":52,"value":1908},"GA tracer",{"type":46,"tag":1108,"props":1910,"children":1911},{},[1912,1917,1932,1944],{"type":46,"tag":1130,"props":1913,"children":1914},{},[1915],{"type":52,"value":1916},"Rust",{"type":46,"tag":1130,"props":1918,"children":1919},{},[1920,1925,1926],{"type":46,"tag":314,"props":1921,"children":1923},{"className":1922},[],[1924],{"type":52,"value":386},{"type":52,"value":329},{"type":46,"tag":314,"props":1927,"children":1929},{"className":1928},[],[1930],{"type":52,"value":1931},"*.rs",{"type":46,"tag":1130,"props":1933,"children":1934},{},[1935,1937,1942],{"type":52,"value":1936},"APM (",{"type":46,"tag":61,"props":1938,"children":1939},{},[1940],{"type":52,"value":1941},"Preview, manual via OTel",{"type":52,"value":1943},") + Logs",{"type":46,"tag":1130,"props":1945,"children":1946},{},[1947,1949,1955,1957,1961],{"type":52,"value":1948},"No auto-instrumentation; profiling via ",{"type":46,"tag":314,"props":1950,"children":1952},{"className":1951},[],[1953],{"type":52,"value":1954},"ddprof",{"type":52,"value":1956}," (Preview). ",{"type":46,"tag":61,"props":1958,"children":1959},{},[1960],{"type":52,"value":1550},{"type":52,"value":1962},", not foundational",{"type":46,"tag":1108,"props":1964,"children":1965},{},[1966,1971,1987,1999],{"type":46,"tag":1130,"props":1967,"children":1968},{},[1969],{"type":52,"value":1970},"C \u002F C++",{"type":46,"tag":1130,"props":1972,"children":1973},{},[1974,1980,1981],{"type":46,"tag":314,"props":1975,"children":1977},{"className":1976},[],[1978],{"type":52,"value":1979},"CMakeLists.txt",{"type":52,"value":329},{"type":46,"tag":314,"props":1982,"children":1984},{"className":1983},[],[1985],{"type":52,"value":1986},"*.cpp\u002F*.c",{"type":46,"tag":1130,"props":1988,"children":1989},{},[1990,1992,1997],{"type":52,"value":1991},"Profiler via ",{"type":46,"tag":314,"props":1993,"children":1995},{"className":1994},[],[1996],{"type":52,"value":1954},{"type":52,"value":1998}," (Preview)",{"type":46,"tag":1130,"props":2000,"children":2001},{},[2002,2004],{"type":52,"value":2003},"No auto-APM. ",{"type":46,"tag":61,"props":2005,"children":2006},{},[2007],{"type":52,"value":1550},{"type":46,"tag":274,"props":2009,"children":2011},{"id":2010},"web-frameworks-strengthen-apm-enable-aap-situational",[2012],{"type":52,"value":2013},"Web frameworks → strengthen APM; enable AAP (Situational)",{"type":46,"tag":55,"props":2015,"children":2016},{},[2017,2019,2024,2026,2031],{"type":52,"value":2018},"Presence of any web framework → ",{"type":46,"tag":61,"props":2020,"children":2021},{},[2022],{"type":52,"value":2023},"APM",{"type":52,"value":2025}," gets HTTP route\u002Frequest spans out of the box, and the\nservice is web-facing so ",{"type":46,"tag":61,"props":2027,"children":2028},{},[2029],{"type":52,"value":2030},"App and API Protection",{"type":52,"value":2032}," becomes a situational option.",{"type":46,"tag":154,"props":2034,"children":2035},{},[2036],{"type":46,"tag":73,"props":2037,"children":2038},{},[2039],{"type":52,"value":2040},"Python: Django \u002F Flask \u002F FastAPI · Node: Express \u002F Koa \u002F Nest \u002F Next.js(server) · Java: Spring Boot ·\nRuby: Rails · PHP: Laravel · Go: Gin \u002F Echo \u002F chi \u002F Fiber · .NET: ASP.NET (Core).",{"type":46,"tag":274,"props":2042,"children":2044},{"id":2043},"frontend-frameworks-rum-error-tracking-session-replay-foundational",[2045],{"type":52,"value":2046},"Frontend frameworks → RUM + Error Tracking + Session Replay (Foundational)",{"type":46,"tag":55,"props":2048,"children":2049},{},[2050,2052,2057,2059,2064],{"type":52,"value":2051},"A browser frontend is foundational for the RUM bundle. ",{"type":46,"tag":61,"props":2053,"children":2054},{},[2055],{"type":52,"value":2056},"Source Map Uploads becomes foundational\nthe moment a bundler\u002Fminifier is present",{"type":52,"value":2058}," (otherwise stack traces are unreadable). Product Analytics\nis a ",{"type":46,"tag":61,"props":2060,"children":2061},{},[2062],{"type":52,"value":2063},"situational (explicit-match-only)",{"type":52,"value":2065}," add here, not part of the foundational floor — see the\ncatalog and the digital-experience theme.",{"type":46,"tag":1100,"props":2067,"children":2068},{},[2069,2087],{"type":46,"tag":1104,"props":2070,"children":2071},{},[2072],{"type":46,"tag":1108,"props":2073,"children":2074},{},[2075,2079,2083],{"type":46,"tag":1112,"props":2076,"children":2077},{},[2078],{"type":52,"value":1603},{"type":46,"tag":1112,"props":2080,"children":2081},{},[2082],{"type":52,"value":1608},{"type":46,"tag":1112,"props":2084,"children":2085},{},[2086],{"type":52,"value":1618},{"type":46,"tag":1123,"props":2088,"children":2089},{},[2090,2134,2170,2213,2248,2283,2312],{"type":46,"tag":1108,"props":2091,"children":2092},{},[2093,2098,2121],{"type":46,"tag":1130,"props":2094,"children":2095},{},[2096],{"type":52,"value":2097},"React",{"type":46,"tag":1130,"props":2099,"children":2100},{},[2101,2107,2108,2114,2115],{"type":46,"tag":314,"props":2102,"children":2104},{"className":2103},[],[2105],{"type":52,"value":2106},"react",{"type":52,"value":337},{"type":46,"tag":314,"props":2109,"children":2111},{"className":2110},[],[2112],{"type":52,"value":2113},"react-dom",{"type":52,"value":329},{"type":46,"tag":314,"props":2116,"children":2118},{"className":2117},[],[2119],{"type":52,"value":2120},"*.tsx",{"type":46,"tag":1130,"props":2122,"children":2123},{},[2124,2126,2132],{"type":52,"value":2125},"dedicated ",{"type":46,"tag":314,"props":2127,"children":2129},{"className":2128},[],[2130],{"type":52,"value":2131},"@datadog\u002Fbrowser-rum-react",{"type":52,"value":2133}," plugin",{"type":46,"tag":1108,"props":2135,"children":2136},{},[2137,2142,2158],{"type":46,"tag":1130,"props":2138,"children":2139},{},[2140],{"type":52,"value":2141},"Vue",{"type":46,"tag":1130,"props":2143,"children":2144},{},[2145,2151,2152],{"type":46,"tag":314,"props":2146,"children":2148},{"className":2147},[],[2149],{"type":52,"value":2150},"vue",{"type":52,"value":329},{"type":46,"tag":314,"props":2153,"children":2155},{"className":2154},[],[2156],{"type":52,"value":2157},"*.vue",{"type":46,"tag":1130,"props":2159,"children":2160},{},[2161,2162,2168],{"type":52,"value":2125},{"type":46,"tag":314,"props":2163,"children":2165},{"className":2164},[],[2166],{"type":52,"value":2167},"browser-rum-vue",{"type":52,"value":2169}," plugin (3.5+)",{"type":46,"tag":1108,"props":2171,"children":2172},{},[2173,2178,2202],{"type":46,"tag":1130,"props":2174,"children":2175},{},[2176],{"type":52,"value":2177},"Next.js (client)",{"type":46,"tag":1130,"props":2179,"children":2180},{},[2181,2187,2188,2194,2196],{"type":46,"tag":314,"props":2182,"children":2184},{"className":2183},[],[2185],{"type":52,"value":2186},"next",{"type":52,"value":329},{"type":46,"tag":314,"props":2189,"children":2191},{"className":2190},[],[2192],{"type":52,"value":2193},"app\u002F",{"type":52,"value":2195}," or ",{"type":46,"tag":314,"props":2197,"children":2199},{"className":2198},[],[2200],{"type":52,"value":2201},"pages\u002F",{"type":46,"tag":1130,"props":2203,"children":2204},{},[2205,2206,2212],{"type":52,"value":2125},{"type":46,"tag":314,"props":2207,"children":2209},{"className":2208},[],[2210],{"type":52,"value":2211},"browser-rum-nextjs",{"type":52,"value":2133},{"type":46,"tag":1108,"props":2214,"children":2215},{},[2216,2221,2237],{"type":46,"tag":1130,"props":2217,"children":2218},{},[2219],{"type":52,"value":2220},"Angular",{"type":46,"tag":1130,"props":2222,"children":2223},{},[2224,2230,2231],{"type":46,"tag":314,"props":2225,"children":2227},{"className":2226},[],[2228],{"type":52,"value":2229},"@angular\u002Fcore",{"type":52,"value":329},{"type":46,"tag":314,"props":2232,"children":2234},{"className":2233},[],[2235],{"type":52,"value":2236},"angular.json",{"type":46,"tag":1130,"props":2238,"children":2239},{},[2240,2242],{"type":52,"value":2241},"core SDK + manual ",{"type":46,"tag":314,"props":2243,"children":2245},{"className":2244},[],[2246],{"type":52,"value":2247},"startView",{"type":46,"tag":1108,"props":2249,"children":2250},{},[2251,2256,2272],{"type":46,"tag":1130,"props":2252,"children":2253},{},[2254],{"type":52,"value":2255},"Svelte\u002FSvelteKit",{"type":46,"tag":1130,"props":2257,"children":2258},{},[2259,2265,2266],{"type":46,"tag":314,"props":2260,"children":2262},{"className":2261},[],[2263],{"type":52,"value":2264},"svelte",{"type":52,"value":329},{"type":46,"tag":314,"props":2267,"children":2269},{"className":2268},[],[2270],{"type":52,"value":2271},"svelte.config.js",{"type":46,"tag":1130,"props":2273,"children":2274},{},[2275,2277],{"type":52,"value":2276},"core SDK, init in ",{"type":46,"tag":314,"props":2278,"children":2280},{"className":2279},[],[2281],{"type":52,"value":2282},"hooks.client.ts",{"type":46,"tag":1108,"props":2284,"children":2285},{},[2286,2291,2307],{"type":46,"tag":1130,"props":2287,"children":2288},{},[2289],{"type":52,"value":2290},"Vanilla JS",{"type":46,"tag":1130,"props":2292,"children":2293},{},[2294,2300,2301],{"type":46,"tag":314,"props":2295,"children":2297},{"className":2296},[],[2298],{"type":52,"value":2299},"index.html",{"type":52,"value":1408},{"type":46,"tag":314,"props":2302,"children":2304},{"className":2303},[],[2305],{"type":52,"value":2306},"\u003Cscript>",{"type":46,"tag":1130,"props":2308,"children":2309},{},[2310],{"type":52,"value":2311},"core SDK via npm or CDN",{"type":46,"tag":1108,"props":2313,"children":2314},{},[2315,2323,2360],{"type":46,"tag":1130,"props":2316,"children":2317},{},[2318],{"type":46,"tag":61,"props":2319,"children":2320},{},[2321],{"type":52,"value":2322},"Bundler\u002Fminifier",{"type":46,"tag":1130,"props":2324,"children":2325},{},[2326,2332,2333,2339,2340,2346,2347,2353,2354],{"type":46,"tag":314,"props":2327,"children":2329},{"className":2328},[],[2330],{"type":52,"value":2331},"vite.config.*",{"type":52,"value":329},{"type":46,"tag":314,"props":2334,"children":2336},{"className":2335},[],[2337],{"type":52,"value":2338},"webpack.config.js",{"type":52,"value":329},{"type":46,"tag":314,"props":2341,"children":2343},{"className":2342},[],[2344],{"type":52,"value":2345},"esbuild",{"type":52,"value":329},{"type":46,"tag":314,"props":2348,"children":2350},{"className":2349},[],[2351],{"type":52,"value":2352},"rollup",{"type":52,"value":329},{"type":46,"tag":314,"props":2355,"children":2357},{"className":2356},[],[2358],{"type":52,"value":2359},"rspack",{"type":46,"tag":1130,"props":2361,"children":2362},{},[2363,2365,2369],{"type":52,"value":2364},"→ ",{"type":46,"tag":61,"props":2366,"children":2367},{},[2368],{"type":52,"value":1147},{"type":52,"value":2370}," (foundational alongside any frontend)",{"type":46,"tag":274,"props":2372,"children":2374},{"id":2373},"mobile-real-user-monitoring-rum-error-tracking-foundational",[2375],{"type":52,"value":2376},"Mobile → Real User Monitoring (RUM) + Error Tracking (Foundational)",{"type":46,"tag":55,"props":2378,"children":2379},{},[2380,2382,2388,2389,2395,2396,2402,2404,2409,2410,2416,2417,2423,2425,2431,2432,2438,2440,2446,2448,2454,2455,2461,2463,2469,2470,2476],{"type":52,"value":2381},"iOS (",{"type":46,"tag":314,"props":2383,"children":2385},{"className":2384},[],[2386],{"type":52,"value":2387},"*.xcodeproj",{"type":52,"value":329},{"type":46,"tag":314,"props":2390,"children":2392},{"className":2391},[],[2393],{"type":52,"value":2394},"Podfile",{"type":52,"value":329},{"type":46,"tag":314,"props":2397,"children":2399},{"className":2398},[],[2400],{"type":52,"value":2401},"*.swift",{"type":52,"value":2403},") · Android (",{"type":46,"tag":314,"props":2405,"children":2407},{"className":2406},[],[2408],{"type":52,"value":357},{"type":52,"value":1408},{"type":46,"tag":314,"props":2411,"children":2413},{"className":2412},[],[2414],{"type":52,"value":2415},"AndroidManifest.xml",{"type":52,"value":329},{"type":46,"tag":314,"props":2418,"children":2420},{"className":2419},[],[2421],{"type":52,"value":2422},"*.kt",{"type":52,"value":2424},") ·\nReact Native (",{"type":46,"tag":314,"props":2426,"children":2428},{"className":2427},[],[2429],{"type":52,"value":2430},"react-native",{"type":52,"value":1408},{"type":46,"tag":314,"props":2433,"children":2435},{"className":2434},[],[2436],{"type":52,"value":2437},"android\u002F",{"type":52,"value":2439},"+",{"type":46,"tag":314,"props":2441,"children":2443},{"className":2442},[],[2444],{"type":52,"value":2445},"ios\u002F",{"type":52,"value":2447},") · Flutter (",{"type":46,"tag":314,"props":2449,"children":2451},{"className":2450},[],[2452],{"type":52,"value":2453},"pubspec.yaml",{"type":52,"value":329},{"type":46,"tag":314,"props":2456,"children":2458},{"className":2457},[],[2459],{"type":52,"value":2460},"*.dart",{"type":52,"value":2462},") ·\nUnity (",{"type":46,"tag":314,"props":2464,"children":2466},{"className":2465},[],[2467],{"type":52,"value":2468},"Assets\u002F",{"type":52,"value":329},{"type":46,"tag":314,"props":2471,"children":2473},{"className":2472},[],[2474],{"type":52,"value":2475},"*.unity",{"type":52,"value":2477},") · Kotlin Multiplatform · Roku.",{"type":46,"tag":274,"props":2479,"children":2481},{"id":2480},"databases-database-monitoring-situational-apm-db-spans-foundational-free-with-apm",[2482],{"type":52,"value":2483},"Databases → Database Monitoring (Situational); APM DB spans (Foundational, free with APM)",{"type":46,"tag":55,"props":2485,"children":2486},{},[2487,2492,2494,2499,2501,2506,2508,2513,2515,2520],{"type":46,"tag":61,"props":2488,"children":2489},{},[2490],{"type":52,"value":2491},"DBM officially supports: PostgreSQL, MySQL\u002FMariaDB, SQL Server, Oracle, MongoDB",{"type":52,"value":2493}," (+ DocumentDB,\nClickHouse). ",{"type":46,"tag":61,"props":2495,"children":2496},{},[2497],{"type":52,"value":2498},"Key distinction:",{"type":52,"value":2500}," a DB client library alone gives you ",{"type":46,"tag":61,"props":2502,"children":2503},{},[2504],{"type":52,"value":2505},"APM client-side DB spans",{"type":52,"value":2507},"\nfor free (the query as the app sees it). ",{"type":46,"tag":61,"props":2509,"children":2510},{},[2511],{"type":52,"value":2512},"DBM",{"type":52,"value":2514}," is the deep, opt-in product (explain plans, query\nsamples, locks, engine metrics) — recommend it ",{"type":46,"tag":61,"props":2516,"children":2517},{},[2518],{"type":52,"value":2519},"when DB\u002Fquery performance is a concern",{"type":52,"value":2521},", not as\npart of every-service baseline.",{"type":46,"tag":55,"props":2523,"children":2524},{},[2525,2527,2533,2534,2540,2541,2547,2548,2554,2556,2562,2563,2569,2570,2576,2578,2584,2585,2591,2593,2599,2600,2606,2608,2614,2615,2621,2622,2628,2629,2634,2635,2641,2642,2647,2648,2654],{"type":52,"value":2526},"Detection hints: ",{"type":46,"tag":314,"props":2528,"children":2530},{"className":2529},[],[2531],{"type":52,"value":2532},"pg",{"type":52,"value":337},{"type":46,"tag":314,"props":2535,"children":2537},{"className":2536},[],[2538],{"type":52,"value":2539},"psycopg2",{"type":52,"value":337},{"type":46,"tag":314,"props":2542,"children":2544},{"className":2543},[],[2545],{"type":52,"value":2546},"lib\u002Fpq",{"type":52,"value":337},{"type":46,"tag":314,"props":2549,"children":2551},{"className":2550},[],[2552],{"type":52,"value":2553},"pgx",{"type":52,"value":2555}," (Postgres) · ",{"type":46,"tag":314,"props":2557,"children":2559},{"className":2558},[],[2560],{"type":52,"value":2561},"mysql",{"type":52,"value":337},{"type":46,"tag":314,"props":2564,"children":2566},{"className":2565},[],[2567],{"type":52,"value":2568},"mysql2",{"type":52,"value":337},{"type":46,"tag":314,"props":2571,"children":2573},{"className":2572},[],[2574],{"type":52,"value":2575},"go-sql-driver",{"type":52,"value":2577}," ·\n",{"type":46,"tag":314,"props":2579,"children":2581},{"className":2580},[],[2582],{"type":52,"value":2583},"pyodbc",{"type":52,"value":337},{"type":46,"tag":314,"props":2586,"children":2588},{"className":2587},[],[2589],{"type":52,"value":2590},"Microsoft.Data.SqlClient",{"type":52,"value":2592}," (SQL Server) · ",{"type":46,"tag":314,"props":2594,"children":2596},{"className":2595},[],[2597],{"type":52,"value":2598},"cx_Oracle",{"type":52,"value":337},{"type":46,"tag":314,"props":2601,"children":2603},{"className":2602},[],[2604],{"type":52,"value":2605},"ojdbc",{"type":52,"value":2607}," · ",{"type":46,"tag":314,"props":2609,"children":2611},{"className":2610},[],[2612],{"type":52,"value":2613},"mongoose",{"type":52,"value":337},{"type":46,"tag":314,"props":2616,"children":2618},{"className":2617},[],[2619],{"type":52,"value":2620},"pymongo",{"type":52,"value":337},{"type":46,"tag":314,"props":2623,"children":2625},{"className":2624},[],[2626],{"type":52,"value":2627},"mongo-go-driver",{"type":52,"value":2577},{"type":46,"tag":314,"props":2630,"children":2632},{"className":2631},[],[2633],{"type":52,"value":690},{"type":52,"value":329},{"type":46,"tag":314,"props":2636,"children":2638},{"className":2637},[],[2639],{"type":52,"value":2640},"postgres",{"type":52,"value":337},{"type":46,"tag":314,"props":2643,"children":2645},{"className":2644},[],[2646],{"type":52,"value":2561},{"type":52,"value":337},{"type":46,"tag":314,"props":2649,"children":2651},{"className":2650},[],[2652],{"type":52,"value":2653},"mongo",{"type":52,"value":2655}," service in compose.",{"type":46,"tag":274,"props":2657,"children":2659},{"id":2658},"datastores-messaging-integration-apm-spans-dsm-for-queues-situational",[2660],{"type":52,"value":2661},"Datastores \u002F messaging → integration + APM spans; DSM for queues (Situational)",{"type":46,"tag":55,"props":2663,"children":2664},{},[2665,2667,2672,2674,2679],{"type":52,"value":2666},"Redis · Memcached · Elasticsearch\u002FOpenSearch → APM cache\u002Fquery spans (foundational) + Agent integration (situational).\n",{"type":46,"tag":61,"props":2668,"children":2669},{},[2670],{"type":52,"value":2671},"Kafka · RabbitMQ · SQS · SNS",{"type":52,"value":2673}," → ",{"type":46,"tag":61,"props":2675,"children":2676},{},[2677],{"type":52,"value":2678},"Data Streams Monitoring",{"type":52,"value":2680}," (Situational) for end-to-end\nqueue lag\u002Flatency. DSM SDKs: Java, Node, Python, .NET.",{"type":46,"tag":274,"props":2682,"children":2684},{"id":2683},"deployment-platform-infrastructure-serverless-foundational",[2685],{"type":52,"value":2686},"Deployment \u002F platform → Infrastructure \u002F Serverless (Foundational)",{"type":46,"tag":1100,"props":2688,"children":2689},{},[2690,2708],{"type":46,"tag":1104,"props":2691,"children":2692},{},[2693],{"type":46,"tag":1108,"props":2694,"children":2695},{},[2696,2700,2704],{"type":46,"tag":1112,"props":2697,"children":2698},{},[2699],{"type":52,"value":1603},{"type":46,"tag":1112,"props":2701,"children":2702},{},[2703],{"type":52,"value":1608},{"type":46,"tag":1112,"props":2705,"children":2706},{},[2707],{"type":52,"value":1613},{"type":46,"tag":1123,"props":2709,"children":2710},{},[2711,2740,2783,2812,2860,2889,2920,2956],{"type":46,"tag":1108,"props":2712,"children":2713},{},[2714,2719,2735],{"type":46,"tag":1130,"props":2715,"children":2716},{},[2717],{"type":52,"value":2718},"Docker",{"type":46,"tag":1130,"props":2720,"children":2721},{},[2722,2728,2729],{"type":46,"tag":314,"props":2723,"children":2725},{"className":2724},[],[2726],{"type":52,"value":2727},"Dockerfile",{"type":52,"value":329},{"type":46,"tag":314,"props":2730,"children":2732},{"className":2731},[],[2733],{"type":52,"value":2734},"docker-compose.yml",{"type":46,"tag":1130,"props":2736,"children":2737},{},[2738],{"type":52,"value":2739},"Infrastructure Monitoring + Container Monitoring (+ Logs\u002FAPM via agent)",{"type":46,"tag":1108,"props":2741,"children":2742},{},[2743,2748,2771],{"type":46,"tag":1130,"props":2744,"children":2745},{},[2746],{"type":52,"value":2747},"Kubernetes (EKS\u002FGKE\u002FAKS)",{"type":46,"tag":1130,"props":2749,"children":2750},{},[2751,2757,2758,2764,2765],{"type":46,"tag":314,"props":2752,"children":2754},{"className":2753},[],[2755],{"type":52,"value":2756},"kind: Deployment",{"type":52,"value":329},{"type":46,"tag":314,"props":2759,"children":2761},{"className":2760},[],[2762],{"type":52,"value":2763},"Chart.yaml",{"type":52,"value":329},{"type":46,"tag":314,"props":2766,"children":2768},{"className":2767},[],[2769],{"type":52,"value":2770},"k8s\u002F",{"type":46,"tag":1130,"props":2772,"children":2773},{},[2774,2776,2781],{"type":52,"value":2775},"Infra + Container + Logs + APM; ",{"type":46,"tag":61,"props":2777,"children":2778},{},[2779],{"type":52,"value":2780},"USM",{"type":52,"value":2782}," situational",{"type":46,"tag":1108,"props":2784,"children":2785},{},[2786,2791,2807],{"type":46,"tag":1130,"props":2787,"children":2788},{},[2789],{"type":52,"value":2790},"AWS ECS \u002F Fargate",{"type":46,"tag":1130,"props":2792,"children":2793},{},[2794,2800,2801],{"type":46,"tag":314,"props":2795,"children":2797},{"className":2796},[],[2798],{"type":52,"value":2799},"task-definition.json",{"type":52,"value":329},{"type":46,"tag":314,"props":2802,"children":2804},{"className":2803},[],[2805],{"type":52,"value":2806},"launchType",{"type":46,"tag":1130,"props":2808,"children":2809},{},[2810],{"type":52,"value":2811},"Infra + Container + APM + Logs (agent sidecar)",{"type":46,"tag":1108,"props":2813,"children":2814},{},[2815,2820,2851],{"type":46,"tag":1130,"props":2816,"children":2817},{},[2818],{"type":52,"value":2819},"AWS Lambda",{"type":46,"tag":1130,"props":2821,"children":2822},{},[2823,2829,2830,2836,2838,2844,2845],{"type":46,"tag":314,"props":2824,"children":2826},{"className":2825},[],[2827],{"type":52,"value":2828},"serverless.yml",{"type":52,"value":329},{"type":46,"tag":314,"props":2831,"children":2833},{"className":2832},[],[2834],{"type":52,"value":2835},"template.yaml",{"type":52,"value":2837}," (SAM), ",{"type":46,"tag":314,"props":2839,"children":2841},{"className":2840},[],[2842],{"type":52,"value":2843},"cdk.json",{"type":52,"value":329},{"type":46,"tag":314,"props":2846,"children":2848},{"className":2847},[],[2849],{"type":52,"value":2850},"AWS::Lambda::Function",{"type":46,"tag":1130,"props":2852,"children":2853},{},[2854,2858],{"type":46,"tag":61,"props":2855,"children":2856},{},[2857],{"type":52,"value":1199},{"type":52,"value":2859}," (+ APM, enhanced metrics, logs)",{"type":46,"tag":1108,"props":2861,"children":2862},{},[2863,2868,2884],{"type":46,"tag":1130,"props":2864,"children":2865},{},[2866],{"type":52,"value":2867},"Vercel",{"type":46,"tag":1130,"props":2869,"children":2870},{},[2871,2877,2878],{"type":46,"tag":314,"props":2872,"children":2874},{"className":2873},[],[2875],{"type":52,"value":2876},"vercel.json",{"type":52,"value":329},{"type":46,"tag":314,"props":2879,"children":2881},{"className":2880},[],[2882],{"type":52,"value":2883},".vercel\u002F",{"type":46,"tag":1130,"props":2885,"children":2886},{},[2887],{"type":52,"value":2888},"Serverless Monitoring (Vercel integration)",{"type":46,"tag":1108,"props":2890,"children":2891},{},[2892,2897,2915],{"type":46,"tag":1130,"props":2893,"children":2894},{},[2895],{"type":52,"value":2896},"GCP Cloud Run",{"type":46,"tag":1130,"props":2898,"children":2899},{},[2900,2902,2908,2909],{"type":52,"value":2901},"Cloud Run ",{"type":46,"tag":314,"props":2903,"children":2905},{"className":2904},[],[2906],{"type":52,"value":2907},"service.yaml",{"type":52,"value":329},{"type":46,"tag":314,"props":2910,"children":2912},{"className":2911},[],[2913],{"type":52,"value":2914},"gcloud run",{"type":46,"tag":1130,"props":2916,"children":2917},{},[2918],{"type":52,"value":2919},"Serverless Monitoring (serverless\u002Fsidecar agent)",{"type":46,"tag":1108,"props":2921,"children":2922},{},[2923,2928,2951],{"type":46,"tag":1130,"props":2924,"children":2925},{},[2926],{"type":52,"value":2927},"Azure App Service \u002F Functions",{"type":46,"tag":1130,"props":2929,"children":2930},{},[2931,2937,2938,2944,2945],{"type":46,"tag":314,"props":2932,"children":2934},{"className":2933},[],[2935],{"type":52,"value":2936},"host.json",{"type":52,"value":329},{"type":46,"tag":314,"props":2939,"children":2941},{"className":2940},[],[2942],{"type":52,"value":2943},"function.json",{"type":52,"value":329},{"type":46,"tag":314,"props":2946,"children":2948},{"className":2947},[],[2949],{"type":52,"value":2950},"*.azurewebsites",{"type":46,"tag":1130,"props":2952,"children":2953},{},[2954],{"type":52,"value":2955},"Serverless Monitoring (extension \u002F compatibility layer)",{"type":46,"tag":1108,"props":2957,"children":2958},{},[2959,2964,2969],{"type":46,"tag":1130,"props":2960,"children":2961},{},[2962],{"type":52,"value":2963},"Bare VM \u002F host",{"type":46,"tag":1130,"props":2965,"children":2966},{},[2967],{"type":52,"value":2968},"no Dockerfile\u002Fk8s; systemd, cloud-init, Ansible",{"type":46,"tag":1130,"props":2970,"children":2971},{},[2972],{"type":52,"value":2973},"Infrastructure Monitoring + Logs + APM (host agent)",{"type":46,"tag":274,"props":2975,"children":2977},{"id":2976},"cloud-providers-integration-foundational-ccm-csm-situational",[2978],{"type":52,"value":2979},"Cloud providers → integration (Foundational); CCM + CSM (Situational)",{"type":46,"tag":55,"props":2981,"children":2982},{},[2983,2985,2991,2992,2998,2999,3005,3007,3013,3014,3020,3022,3028,3029,3035,3037,3042,3044,3049,3050,3055],{"type":52,"value":2984},"AWS (",{"type":46,"tag":314,"props":2986,"children":2988},{"className":2987},[],[2989],{"type":52,"value":2990},"boto3",{"type":52,"value":329},{"type":46,"tag":314,"props":2993,"children":2995},{"className":2994},[],[2996],{"type":52,"value":2997},"~\u002F.aws",{"type":52,"value":329},{"type":46,"tag":314,"props":3000,"children":3002},{"className":3001},[],[3003],{"type":52,"value":3004},"provider \"aws\"",{"type":52,"value":3006},") · GCP (",{"type":46,"tag":314,"props":3008,"children":3010},{"className":3009},[],[3011],{"type":52,"value":3012},"google-cloud-*",{"type":52,"value":329},{"type":46,"tag":314,"props":3015,"children":3017},{"className":3016},[],[3018],{"type":52,"value":3019},"provider \"google\"",{"type":52,"value":3021},") ·\nAzure (",{"type":46,"tag":314,"props":3023,"children":3025},{"className":3024},[],[3026],{"type":52,"value":3027},"azure-*",{"type":52,"value":329},{"type":46,"tag":314,"props":3030,"children":3032},{"className":3031},[],[3033],{"type":52,"value":3034},"provider \"azurerm\"",{"type":52,"value":3036},"). The cloud ",{"type":46,"tag":61,"props":3038,"children":3039},{},[3040],{"type":52,"value":3041},"integration",{"type":52,"value":3043}," (metrics\u002Flogs\u002Finventory) is\nfoundational; ",{"type":46,"tag":61,"props":3045,"children":3046},{},[3047],{"type":52,"value":3048},"Cloud Cost Management",{"type":52,"value":873},{"type":46,"tag":61,"props":3051,"children":3052},{},[3053],{"type":52,"value":3054},"Cloud Security Management (CSPM\u002FCIEM)",{"type":52,"value":3056}," are situational\n(recommend on cost \u002F security intent).",{"type":46,"tag":274,"props":3058,"children":3060},{"id":3059},"iac-iac-security-code-security-situational-security-gated",[3061],{"type":52,"value":3062},"IaC → IaC Security \u002F Code Security (Situational, security-gated)",{"type":46,"tag":55,"props":3064,"children":3065},{},[3066,3068,3073,3075,3081,3083,3088,3089,3094,3096,3102,3103,3108,3109,3114],{"type":52,"value":3067},"Officially scans ",{"type":46,"tag":61,"props":3069,"children":3070},{},[3071],{"type":52,"value":3072},"Terraform",{"type":52,"value":3074}," (",{"type":46,"tag":314,"props":3076,"children":3078},{"className":3077},[],[3079],{"type":52,"value":3080},"*.tf",{"type":52,"value":3082},"), ",{"type":46,"tag":61,"props":3084,"children":3085},{},[3086],{"type":52,"value":3087},"CloudFormation",{"type":52,"value":3074},{"type":46,"tag":314,"props":3090,"children":3092},{"className":3091},[],[3093],{"type":52,"value":2835},{"type":52,"value":3095}," w\u002F ",{"type":46,"tag":314,"props":3097,"children":3099},{"className":3098},[],[3100],{"type":52,"value":3101},"AWS::",{"type":52,"value":3082},{"type":46,"tag":61,"props":3104,"children":3105},{},[3106],{"type":52,"value":3107},"Kubernetes\nmanifests",{"type":52,"value":329},{"type":46,"tag":61,"props":3110,"children":3111},{},[3112],{"type":52,"value":3113},"Helm",{"type":52,"value":3115}," (renders to K8s). CDK\u002FPulumi synthesize to CFN\u002FTF → scan the synthesized output.",{"type":46,"tag":274,"props":3117,"children":3119},{"id":3118},"ci-providers-ci-visibility-situational",[3120],{"type":52,"value":3121},"CI providers → CI Visibility (Situational)",{"type":46,"tag":55,"props":3123,"children":3124},{},[3125,3127,3133,3135,3140,3142,3147,3149,3155],{"type":52,"value":3126},"GitHub Actions (",{"type":46,"tag":314,"props":3128,"children":3130},{"className":3129},[],[3131],{"type":52,"value":3132},".github\u002Fworkflows\u002F",{"type":52,"value":3134},") · GitLab CI (",{"type":46,"tag":314,"props":3136,"children":3138},{"className":3137},[],[3139],{"type":52,"value":752},{"type":52,"value":3141},") · Jenkins (",{"type":46,"tag":314,"props":3143,"children":3145},{"className":3144},[],[3146],{"type":52,"value":759},{"type":52,"value":3148},") ·\nCircleCI (",{"type":46,"tag":314,"props":3150,"children":3152},{"className":3151},[],[3153],{"type":52,"value":3154},".circleci\u002F",{"type":52,"value":3156},") · Buildkite · Azure Pipelines. Cloud CIs use Agentless mode.",{"type":46,"tag":274,"props":3158,"children":3160},{"id":3159},"test-frameworks-test-optimization-situational",[3161],{"type":52,"value":3162},"Test frameworks → Test Optimization (Situational)",{"type":46,"tag":55,"props":3164,"children":3165},{},[3166,3168,3173,3175,3180],{"type":52,"value":3167},"pytest · jest (jest-circus) · mocha · vitest · junit\u002Ftestng\u002Fspock · playwright (links to RUM) ·\n",{"type":46,"tag":61,"props":3169,"children":3170},{},[3171],{"type":52,"value":3172},"cypress (manual instrumentation only)",{"type":52,"value":3174}," · rspec\u002Fminitest · ",{"type":46,"tag":61,"props":3176,"children":3177},{},[3178],{"type":52,"value":3179},"go test (via Orchestrion)",{"type":52,"value":3181}," ·\n.NET xUnit\u002FNUnit\u002FMSTest · Swift XCTest.",{"type":46,"tag":274,"props":3183,"children":3185},{"id":3184},"llm-ai-libraries-llm-observability-foundational-for-an-llm-app-the-headline-product",[3186],{"type":52,"value":3187},"LLM \u002F AI libraries → LLM Observability (Foundational for an LLM app — the headline product)",{"type":46,"tag":55,"props":3189,"children":3190},{},[3191],{"type":52,"value":3192},"Auto-instrumentation matrix (Python unless noted):",{"type":46,"tag":1100,"props":3194,"children":3195},{},[3196,3216],{"type":46,"tag":1104,"props":3197,"children":3198},{},[3199],{"type":46,"tag":1108,"props":3200,"children":3201},{},[3202,3207,3212],{"type":46,"tag":1112,"props":3203,"children":3204},{},[3205],{"type":52,"value":3206},"Library",{"type":46,"tag":1112,"props":3208,"children":3209},{},[3210],{"type":52,"value":3211},"Auto-support",{"type":46,"tag":1112,"props":3213,"children":3214},{},[3215],{"type":52,"value":1608},{"type":46,"tag":1123,"props":3217,"children":3218},{},[3219,3247,3268,3295,3316,3345,3373,3408,3425],{"type":46,"tag":1108,"props":3220,"children":3221},{},[3222,3227,3232],{"type":46,"tag":1130,"props":3223,"children":3224},{},[3225],{"type":52,"value":3226},"anthropic",{"type":46,"tag":1130,"props":3228,"children":3229},{},[3230],{"type":52,"value":3231},"Python ✅, Node ✅",{"type":46,"tag":1130,"props":3233,"children":3234},{},[3235,3240,3241],{"type":46,"tag":314,"props":3236,"children":3238},{"className":3237},[],[3239],{"type":52,"value":3226},{"type":52,"value":329},{"type":46,"tag":314,"props":3242,"children":3244},{"className":3243},[],[3245],{"type":52,"value":3246},"@anthropic-ai\u002Fsdk",{"type":46,"tag":1108,"props":3248,"children":3249},{},[3250,3255,3260],{"type":46,"tag":1130,"props":3251,"children":3252},{},[3253],{"type":52,"value":3254},"openai",{"type":46,"tag":1130,"props":3256,"children":3257},{},[3258],{"type":52,"value":3259},"Python ✅, Node ✅, Java ✅",{"type":46,"tag":1130,"props":3261,"children":3262},{},[3263],{"type":46,"tag":314,"props":3264,"children":3266},{"className":3265},[],[3267],{"type":52,"value":3254},{"type":46,"tag":1108,"props":3269,"children":3270},{},[3271,3276,3280],{"type":46,"tag":1130,"props":3272,"children":3273},{},[3274],{"type":52,"value":3275},"langchain",{"type":46,"tag":1130,"props":3277,"children":3278},{},[3279],{"type":52,"value":3231},{"type":46,"tag":1130,"props":3281,"children":3282},{},[3283,3288,3289],{"type":46,"tag":314,"props":3284,"children":3286},{"className":3285},[],[3287],{"type":52,"value":3275},{"type":52,"value":329},{"type":46,"tag":314,"props":3290,"children":3292},{"className":3291},[],[3293],{"type":52,"value":3294},"@langchain\u002F*",{"type":46,"tag":1108,"props":3296,"children":3297},{},[3298,3303,3308],{"type":46,"tag":1130,"props":3299,"children":3300},{},[3301],{"type":52,"value":3302},"langgraph",{"type":46,"tag":1130,"props":3304,"children":3305},{},[3306],{"type":52,"value":3307},"Python ✅",{"type":46,"tag":1130,"props":3309,"children":3310},{},[3311],{"type":46,"tag":314,"props":3312,"children":3314},{"className":3313},[],[3315],{"type":52,"value":3302},{"type":46,"tag":1108,"props":3317,"children":3318},{},[3319,3324,3329],{"type":46,"tag":1130,"props":3320,"children":3321},{},[3322],{"type":52,"value":3323},"vercel-ai",{"type":46,"tag":1130,"props":3325,"children":3326},{},[3327],{"type":52,"value":3328},"Node ✅",{"type":46,"tag":1130,"props":3330,"children":3331},{},[3332,3338,3339],{"type":46,"tag":314,"props":3333,"children":3335},{"className":3334},[],[3336],{"type":52,"value":3337},"ai",{"type":52,"value":1408},{"type":46,"tag":314,"props":3340,"children":3342},{"className":3341},[],[3343],{"type":52,"value":3344},"@ai-sdk\u002F*",{"type":46,"tag":1108,"props":3346,"children":3347},{},[3348,3353,3357],{"type":46,"tag":1130,"props":3349,"children":3350},{},[3351],{"type":52,"value":3352},"amazon-bedrock",{"type":46,"tag":1130,"props":3354,"children":3355},{},[3356],{"type":52,"value":3231},{"type":46,"tag":1130,"props":3358,"children":3359},{},[3360,3366,3367],{"type":46,"tag":314,"props":3361,"children":3363},{"className":3362},[],[3364],{"type":52,"value":3365},"bedrock-runtime",{"type":52,"value":329},{"type":46,"tag":314,"props":3368,"children":3370},{"className":3369},[],[3371],{"type":52,"value":3372},"@aws-sdk\u002Fclient-bedrock-runtime",{"type":46,"tag":1108,"props":3374,"children":3375},{},[3376,3381,3385],{"type":46,"tag":1130,"props":3377,"children":3378},{},[3379],{"type":52,"value":3380},"vertexai \u002F google-genai",{"type":46,"tag":1130,"props":3382,"children":3383},{},[3384],{"type":52,"value":3231},{"type":46,"tag":1130,"props":3386,"children":3387},{},[3388,3394,3395,3401,3402],{"type":46,"tag":314,"props":3389,"children":3391},{"className":3390},[],[3392],{"type":52,"value":3393},"vertexai",{"type":52,"value":329},{"type":46,"tag":314,"props":3396,"children":3398},{"className":3397},[],[3399],{"type":52,"value":3400},"google-genai",{"type":52,"value":329},{"type":46,"tag":314,"props":3403,"children":3405},{"className":3404},[],[3406],{"type":52,"value":3407},"@google\u002Fgenai",{"type":46,"tag":1108,"props":3409,"children":3410},{},[3411,3416,3420],{"type":46,"tag":1130,"props":3412,"children":3413},{},[3414],{"type":52,"value":3415},"crewai \u002F openai-agents \u002F litellm \u002F pydantic-ai \u002F google-adk \u002F mcp",{"type":46,"tag":1130,"props":3417,"children":3418},{},[3419],{"type":52,"value":3307},{"type":46,"tag":1130,"props":3421,"children":3422},{},[3423],{"type":52,"value":3424},"resp. package name",{"type":46,"tag":1108,"props":3426,"children":3427},{},[3428,3433,3438],{"type":46,"tag":1130,"props":3429,"children":3430},{},[3431],{"type":52,"value":3432},"llamaindex",{"type":46,"tag":1130,"props":3434,"children":3435},{},[3436],{"type":52,"value":3437},"✗ not auto (manual SDK \u002F OTel)",{"type":46,"tag":1130,"props":3439,"children":3440},{},[3441,3447,3448],{"type":46,"tag":314,"props":3442,"children":3444},{"className":3443},[],[3445],{"type":52,"value":3446},"llama-index",{"type":52,"value":329},{"type":46,"tag":314,"props":3449,"children":3451},{"className":3450},[],[3452],{"type":52,"value":3432},{"type":46,"tag":55,"props":3454,"children":3455},{},[3456],{"type":52,"value":3457},"Also auto-supported (Python): Claude Agent SDK, Strands Agents, vLLM.",{"type":46,"tag":274,"props":3459,"children":3461},{"id":3460},"networking-ndm-vs-cnm-situational",[3462],{"type":52,"value":3463},"Networking → NDM vs CNM (Situational)",{"type":46,"tag":154,"props":3465,"children":3466},{},[3467,3500],{"type":46,"tag":73,"props":3468,"children":3469},{},[3470,3475,3477,3482,3484,3490,3492,3498],{"type":46,"tag":61,"props":3471,"children":3472},{},[3473],{"type":52,"value":3474},"SNMP \u002F physical or virtual network devices",{"type":52,"value":3476}," (routers, switches, firewalls) → ",{"type":46,"tag":61,"props":3478,"children":3479},{},[3480],{"type":52,"value":3481},"Network Device\nMonitoring",{"type":52,"value":3483},". Hints: ",{"type":46,"tag":314,"props":3485,"children":3487},{"className":3486},[],[3488],{"type":52,"value":3489},"snmp.d\u002Fconf.yaml",{"type":52,"value":3491},", device IPs\u002FOIDs, ",{"type":46,"tag":314,"props":3493,"children":3495},{"className":3494},[],[3496],{"type":52,"value":3497},"community_string",{"type":52,"value":3499},", NetFlow config.",{"type":46,"tag":73,"props":3501,"children":3502},{},[3503,3508,3509,3514,3516,3522,3524,3530,3531,3537,3539,3545,3547,3551],{"type":46,"tag":61,"props":3504,"children":3505},{},[3506],{"type":52,"value":3507},"Service mesh \u002F Istio \u002F Envoy",{"type":52,"value":2673},{"type":46,"tag":61,"props":3510,"children":3511},{},[3512],{"type":52,"value":3513},"Cloud Network Monitoring",{"type":52,"value":3515}," (+ USM). Hints: ",{"type":46,"tag":314,"props":3517,"children":3519},{"className":3518},[],[3520],{"type":52,"value":3521},"istio-proxy",{"type":52,"value":3523},"\nsidecars, ",{"type":46,"tag":314,"props":3525,"children":3527},{"className":3526},[],[3528],{"type":52,"value":3529},"VirtualService",{"type":52,"value":337},{"type":46,"tag":314,"props":3532,"children":3534},{"className":3533},[],[3535],{"type":52,"value":3536},"DestinationRule",{"type":52,"value":3538}," CRDs, ",{"type":46,"tag":314,"props":3540,"children":3542},{"className":3541},[],[3543],{"type":52,"value":3544},"envoy.yaml",{"type":52,"value":3546},". (This is CNM, ",{"type":46,"tag":61,"props":3548,"children":3549},{},[3550],{"type":52,"value":393},{"type":52,"value":3552}," NDM.)",{"type":46,"tag":274,"props":3554,"children":3556},{"id":3555},"existing-datadog-suppress-recommend-only-gaps",[3557],{"type":52,"value":3558},"Existing Datadog → suppress, recommend only gaps",{"type":46,"tag":1100,"props":3560,"children":3561},{},[3562,3582],{"type":46,"tag":1104,"props":3563,"children":3564},{},[3565],{"type":46,"tag":1108,"props":3566,"children":3567},{},[3568,3572,3577],{"type":46,"tag":1112,"props":3569,"children":3570},{},[3571],{"type":52,"value":1603},{"type":46,"tag":1112,"props":3573,"children":3574},{},[3575],{"type":52,"value":3576},"Already set up",{"type":46,"tag":1112,"props":3578,"children":3579},{},[3580],{"type":52,"value":3581},"Recommend instead",{"type":46,"tag":1123,"props":3583,"children":3584},{},[3585,3622,3657,3696,3718,3747],{"type":46,"tag":1108,"props":3586,"children":3587},{},[3588,3604,3609],{"type":46,"tag":1130,"props":3589,"children":3590},{},[3591,3596,3598],{"type":46,"tag":314,"props":3592,"children":3594},{"className":3593},[],[3595],{"type":52,"value":786},{"type":52,"value":3597}," \u002F ",{"type":46,"tag":314,"props":3599,"children":3601},{"className":3600},[],[3602],{"type":52,"value":3603},"datadog-values.yaml",{"type":46,"tag":1130,"props":3605,"children":3606},{},[3607],{"type":52,"value":3608},"Agent installed",{"type":46,"tag":1130,"props":3610,"children":3611},{},[3612,3614,3620],{"type":52,"value":3613},"Disabled sub-features (",{"type":46,"tag":314,"props":3615,"children":3617},{"className":3616},[],[3618],{"type":52,"value":3619},"logs_enabled: false",{"type":52,"value":3621}," → Logs)",{"type":46,"tag":1108,"props":3623,"children":3624},{},[3625,3647,3652],{"type":46,"tag":1130,"props":3626,"children":3627},{},[3628,3633,3634,3639,3640,3645],{"type":46,"tag":314,"props":3629,"children":3631},{"className":3630},[],[3632],{"type":52,"value":793},{"type":52,"value":337},{"type":46,"tag":314,"props":3635,"children":3637},{"className":3636},[],[3638],{"type":52,"value":800},{"type":52,"value":337},{"type":46,"tag":314,"props":3641,"children":3643},{"className":3642},[],[3644],{"type":52,"value":24},{"type":52,"value":3646}," tracer dep",{"type":46,"tag":1130,"props":3648,"children":3649},{},[3650],{"type":52,"value":3651},"APM present",{"type":46,"tag":1130,"props":3653,"children":3654},{},[3655],{"type":52,"value":3656},"Adjacent gaps: Profiler, DBM, AAP",{"type":46,"tag":1108,"props":3658,"children":3659},{},[3660,3670,3675],{"type":46,"tag":1130,"props":3661,"children":3662},{},[3663,3668],{"type":46,"tag":314,"props":3664,"children":3666},{"className":3665},[],[3667],{"type":52,"value":808},{"type":52,"value":3669}," env vars",{"type":46,"tag":1130,"props":3671,"children":3672},{},[3673],{"type":52,"value":3674},"Unified tagging \u002F partial config",{"type":46,"tag":1130,"props":3676,"children":3677},{},[3678,3680,3686,3688,3694],{"type":52,"value":3679},"The missing vars (",{"type":46,"tag":314,"props":3681,"children":3683},{"className":3682},[],[3684],{"type":52,"value":3685},"DD_SERVICE",{"type":52,"value":3687}," set, no ",{"type":46,"tag":314,"props":3689,"children":3691},{"className":3690},[],[3692],{"type":52,"value":3693},"DD_PROFILING_ENABLED",{"type":52,"value":3695}," → Profiler)",{"type":46,"tag":1108,"props":3697,"children":3698},{},[3699,3708,3713],{"type":46,"tag":1130,"props":3700,"children":3701},{},[3702],{"type":46,"tag":314,"props":3703,"children":3705},{"className":3704},[],[3706],{"type":52,"value":3707},"@datadog\u002Fbrowser-rum*",{"type":46,"tag":1130,"props":3709,"children":3710},{},[3711],{"type":52,"value":3712},"Browser RUM live",{"type":46,"tag":1130,"props":3714,"children":3715},{},[3716],{"type":52,"value":3717},"Source Map Uploads, Session Replay rate, Error Tracking",{"type":46,"tag":1108,"props":3719,"children":3720},{},[3721,3737,3742],{"type":46,"tag":1130,"props":3722,"children":3723},{},[3724,3730,3731],{"type":46,"tag":314,"props":3725,"children":3727},{"className":3726},[],[3728],{"type":52,"value":3729},"@datadog\u002Fmobile-*",{"type":52,"value":329},{"type":46,"tag":314,"props":3732,"children":3734},{"className":3733},[],[3735],{"type":52,"value":3736},"dd-sdk-android*",{"type":46,"tag":1130,"props":3738,"children":3739},{},[3740],{"type":52,"value":3741},"Real User Monitoring (RUM) live",{"type":46,"tag":1130,"props":3743,"children":3744},{},[3745],{"type":52,"value":3746},"Error Tracking + symbol upload",{"type":46,"tag":1108,"props":3748,"children":3749},{},[3750,3766,3771],{"type":46,"tag":1130,"props":3751,"children":3752},{},[3753,3759,3760],{"type":46,"tag":314,"props":3754,"children":3756},{"className":3755},[],[3757],{"type":52,"value":3758},"ddtrace[llmobs]",{"type":52,"value":329},{"type":46,"tag":314,"props":3761,"children":3763},{"className":3762},[],[3764],{"type":52,"value":3765},"DD_LLMOBS_ENABLED",{"type":46,"tag":1130,"props":3767,"children":3768},{},[3769],{"type":52,"value":3770},"LLM Obs live",{"type":46,"tag":1130,"props":3772,"children":3773},{},[3774],{"type":52,"value":3775},"verify framework integration captured",{"type":46,"tag":274,"props":3777,"children":3779},{"id":3778},"foundational-baseline-the-floor-before-use-case-tailoring",[3780],{"type":52,"value":3781},"Foundational baseline (the floor, before use-case tailoring)",{"type":46,"tag":1100,"props":3783,"children":3784},{},[3785,3801],{"type":46,"tag":1104,"props":3786,"children":3787},{},[3788],{"type":46,"tag":1108,"props":3789,"children":3790},{},[3791,3796],{"type":46,"tag":1112,"props":3792,"children":3793},{},[3794],{"type":52,"value":3795},"If the codebase has…",{"type":46,"tag":1112,"props":3797,"children":3798},{},[3799],{"type":52,"value":3800},"Always recommend",{"type":46,"tag":1123,"props":3802,"children":3803},{},[3804,3822,3847,3863,3881,3897,3912,3929],{"type":46,"tag":1108,"props":3805,"children":3806},{},[3807,3812],{"type":46,"tag":1130,"props":3808,"children":3809},{},[3810],{"type":52,"value":3811},"Any backend service",{"type":46,"tag":1130,"props":3813,"children":3814},{},[3815,3820],{"type":46,"tag":61,"props":3816,"children":3817},{},[3818],{"type":52,"value":3819},"APM + Log Management + Continuous Profiler",{"type":52,"value":3821}," (Rust\u002FC\u002FC++ excepted — tracing Preview\u002Fmanual)",{"type":46,"tag":1108,"props":3823,"children":3824},{},[3825,3830],{"type":46,"tag":1130,"props":3826,"children":3827},{},[3828],{"type":52,"value":3829},"Any web frontend",{"type":46,"tag":1130,"props":3831,"children":3832},{},[3833,3838,3840,3845],{"type":46,"tag":61,"props":3834,"children":3835},{},[3836],{"type":52,"value":3837},"RUM + Error Tracking + Session Replay",{"type":52,"value":3839},"; ",{"type":46,"tag":61,"props":3841,"children":3842},{},[3843],{"type":52,"value":3844},"Source Maps",{"type":52,"value":3846}," if bundled (Product Analytics only on explicit match)",{"type":46,"tag":1108,"props":3848,"children":3849},{},[3850,3855],{"type":46,"tag":1130,"props":3851,"children":3852},{},[3853],{"type":52,"value":3854},"Any mobile app",{"type":46,"tag":1130,"props":3856,"children":3857},{},[3858],{"type":46,"tag":61,"props":3859,"children":3860},{},[3861],{"type":52,"value":3862},"Real User Monitoring (RUM) + Error Tracking",{"type":46,"tag":1108,"props":3864,"children":3865},{},[3866,3871],{"type":46,"tag":1130,"props":3867,"children":3868},{},[3869],{"type":52,"value":3870},"Any container \u002F Docker",{"type":46,"tag":1130,"props":3872,"children":3873},{},[3874,3879],{"type":46,"tag":61,"props":3875,"children":3876},{},[3877],{"type":52,"value":3878},"Infrastructure Monitoring",{"type":52,"value":3880}," (+ Container Monitoring)",{"type":46,"tag":1108,"props":3882,"children":3883},{},[3884,3889],{"type":46,"tag":1130,"props":3885,"children":3886},{},[3887],{"type":52,"value":3888},"Any Kubernetes",{"type":46,"tag":1130,"props":3890,"children":3891},{},[3892],{"type":46,"tag":61,"props":3893,"children":3894},{},[3895],{"type":52,"value":3896},"Infrastructure + Container + Logs + APM",{"type":46,"tag":1108,"props":3898,"children":3899},{},[3900,3905],{"type":46,"tag":1130,"props":3901,"children":3902},{},[3903],{"type":52,"value":3904},"Any serverless function",{"type":46,"tag":1130,"props":3906,"children":3907},{},[3908],{"type":46,"tag":61,"props":3909,"children":3910},{},[3911],{"type":52,"value":1199},{"type":46,"tag":1108,"props":3913,"children":3914},{},[3915,3920],{"type":46,"tag":1130,"props":3916,"children":3917},{},[3918],{"type":52,"value":3919},"Any LLM\u002FAI app",{"type":46,"tag":1130,"props":3921,"children":3922},{},[3923,3927],{"type":46,"tag":61,"props":3924,"children":3925},{},[3926],{"type":52,"value":1173},{"type":52,"value":3928}," as the headline (+ APM + Logs)",{"type":46,"tag":1108,"props":3930,"children":3931},{},[3932,3937],{"type":46,"tag":1130,"props":3933,"children":3934},{},[3935],{"type":52,"value":3936},"Any cloud account",{"type":46,"tag":1130,"props":3938,"children":3939},{},[3940,3942],{"type":52,"value":3941},"the matching ",{"type":46,"tag":61,"props":3943,"children":3944},{},[3945],{"type":52,"value":3946},"cloud integration",{"type":46,"tag":111,"props":3948,"children":3949},{},[3950],{"type":46,"tag":55,"props":3951,"children":3952},{},[3953,3955,3960,3962,3966,3968,3972,3974,3979],{"type":52,"value":3954},"Foundation ≠ headline. These are the assumed floor. When the user states a goal, lead with a\n",{"type":46,"tag":61,"props":3956,"children":3957},{},[3958],{"type":52,"value":3959},"differentiator",{"type":52,"value":3961}," from the Use Case section — a product with ",{"type":46,"tag":61,"props":3963,"children":3964},{},[3965],{"type":52,"value":1406},{"type":52,"value":3967}," (or ",{"type":46,"tag":61,"props":3969,"children":3970},{},[3971],{"type":52,"value":61},{"type":52,"value":3973},")\ndifferentiation for that intent — ",{"type":46,"tag":61,"props":3975,"children":3976},{},[3977],{"type":52,"value":3978},"when a well-supported one exists",{"type":52,"value":3980},", and present the foundation\nbeneath it. When no well-supported differentiator applies, leading with the foundation is the\ncorrect answer; don't manufacture a fake headline to crowd it out.",{"type":46,"tag":1502,"props":3982,"children":3983},{},[],{"type":46,"tag":104,"props":3985,"children":3987},{"id":3986},"reference-use-case-products",[3988],{"type":52,"value":3989},"Reference: Use Case → Products",{"type":46,"tag":55,"props":3991,"children":3992},{},[3993,3995,4000],{"type":52,"value":3994},"This section turns a ",{"type":46,"tag":61,"props":3996,"children":3997},{},[3998],{"type":52,"value":3999},"stated goal or business intent",{"type":52,"value":4001}," into the Datadog products that fit it.\nIts companion (Stack → Products above) maps the codebase; read both and reconcile — intent sets the\nheadline, the stack confirms what's actually buildable.",{"type":46,"tag":55,"props":4003,"children":4004},{},[4005],{"type":46,"tag":1012,"props":4006,"children":4007},{},[4008],{"type":52,"value":4009},"Built from Datadog product capabilities and common technology patterns — pairing a stated goal\nwith the products whose capabilities fit it.",{"type":46,"tag":274,"props":4011,"children":4013},{"id":4012},"the-one-principle-that-makes-this-better-than-a-generic-list",[4014],{"type":52,"value":4015},"The one principle that makes this better than a generic list",{"type":46,"tag":111,"props":4017,"children":4018},{},[4019],{"type":46,"tag":55,"props":4020,"children":4021},{},[4022],{"type":46,"tag":61,"props":4023,"children":4024},{},[4025],{"type":52,"value":4026},"Foundation is assumed. Lead with differentiation.",{"type":46,"tag":154,"props":4028,"children":4029},{},[4030,4055,4065],{"type":46,"tag":73,"props":4031,"children":4032},{},[4033,4035,4040,4042,4046,4048,4053],{"type":52,"value":4034},"A handful of products fit ",{"type":46,"tag":61,"props":4036,"children":4037},{},[4038],{"type":52,"value":4039},"almost every backend service",{"type":52,"value":4041}," — Infrastructure Monitoring, Log\nManagement, APM. They are the ",{"type":46,"tag":61,"props":4043,"children":4044},{},[4045],{"type":52,"value":138},{"type":52,"value":4047},": the assumed baseline beneath nearly any answer.\nPresenting them ",{"type":46,"tag":1012,"props":4049,"children":4050},{},[4051],{"type":52,"value":4052},"as the headline",{"type":52,"value":4054}," is technically correct but unhelpful.",{"type":46,"tag":73,"props":4056,"children":4057},{},[4058,4063],{"type":46,"tag":61,"props":4059,"children":4060},{},[4061],{"type":52,"value":4062},"Differentiators",{"type":52,"value":4064}," are selective. They show up when an intent specifically calls for them —\nand surfacing the differentiator a generic answer would miss is the whole value of this map.",{"type":46,"tag":73,"props":4066,"children":4067},{},[4068,4070,4075],{"type":52,"value":4069},"So: name the foundation briefly beneath, and ",{"type":46,"tag":61,"props":4071,"children":4072},{},[4073],{"type":52,"value":4074},"lead with the product that is characteristic of\nthe user's intent",{"type":52,"value":4076}," — when a well-supported one exists.",{"type":46,"tag":274,"props":4078,"children":4080},{"id":4079},"guardrails-read-before-recommending",[4081],{"type":52,"value":4082},"Guardrails (read before recommending)",{"type":46,"tag":69,"props":4084,"children":4085},{},[4086,4098,4117,4127,4137,4149,4154],{"type":46,"tag":73,"props":4087,"children":4088},{},[4089,4091,4096],{"type":52,"value":4090},"Encode rank\u002Ftier, not magnitude. Output ",{"type":46,"tag":61,"props":4092,"children":4093},{},[4094],{"type":52,"value":4095},"defining \u002F strong \u002F weak-or-none",{"type":52,"value":4097},", never a multiplier.",{"type":46,"tag":73,"props":4099,"children":4100},{},[4101,4103,4108,4110,4115],{"type":52,"value":4102},"Every intent→product mapping must be explainable from product ",{"type":46,"tag":61,"props":4104,"children":4105},{},[4106],{"type":52,"value":4107},"capability",{"type":52,"value":4109},". If you can't say\n",{"type":46,"tag":1012,"props":4111,"children":4112},{},[4113],{"type":52,"value":4114},"why",{"type":52,"value":4116}," it serves the intent, don't lead with it.",{"type":46,"tag":73,"props":4118,"children":4119},{},[4120,4125],{"type":46,"tag":61,"props":4121,"children":4122},{},[4123],{"type":52,"value":4124},"Capability is the basis; defer to stack evidence.",{"type":52,"value":4126}," A capability-obvious pick is never vetoed;\nthe tiers below inform ordering, not inclusion.",{"type":46,"tag":73,"props":4128,"children":4129},{},[4130,4135],{"type":46,"tag":61,"props":4131,"children":4132},{},[4133],{"type":52,"value":4134},"Absence is not evidence.",{"type":52,"value":4136}," This map lists characteristic fits, not an exhaustive ranking — a\nproduct's absence from a theme is not a reason against it.",{"type":46,"tag":73,"props":4138,"children":4139},{},[4140,4142,4147],{"type":52,"value":4141},"Coarse confidence only — ",{"type":46,"tag":61,"props":4143,"children":4144},{},[4145],{"type":52,"value":4146},"well-established \u002F emerging \u002F anecdotal",{"type":52,"value":4148}," — a stability judgment,\nnever a count.",{"type":46,"tag":73,"props":4150,"children":4151},{},[4152],{"type":52,"value":4153},"No numbers, names, or quotes — ever.",{"type":46,"tag":73,"props":4155,"children":4156},{},[4157,4159,4163],{"type":52,"value":4158},"Foundation is assumed; lead with a differentiator ",{"type":46,"tag":61,"props":4160,"children":4161},{},[4162],{"type":52,"value":3978},{"type":52,"value":4164},", else\nleading with foundation is correct. Keep the bundle tight (3 products maximum), but it may be 0–1 when\nlittle or nothing applies.",{"type":46,"tag":274,"props":4166,"children":4168},{"id":4167},"the-lead-rule-this-gates-everything-below-do-not-skim-past-it",[4169],{"type":52,"value":4170},"The lead rule (this gates everything below — do not skim past it)",{"type":46,"tag":55,"props":4172,"children":4173},{},[4174,4179],{"type":46,"tag":61,"props":4175,"children":4176},{},[4177],{"type":52,"value":4178},"Confidence and tier together decide what may be the headline.",{"type":52,"value":4180}," Apply this before naming any lead:",{"type":46,"tag":154,"props":4182,"children":4183},{},[4184,4200,4215,4235],{"type":46,"tag":73,"props":4185,"children":4186},{},[4187,4191,4193,4198],{"type":46,"tag":61,"props":4188,"children":4189},{},[4190],{"type":52,"value":896},{"type":52,"value":4192}," (or capability-obvious) → ",{"type":46,"tag":61,"props":4194,"children":4195},{},[4196],{"type":52,"value":4197},"may LEAD.",{"type":52,"value":4199}," This is the headline.",{"type":46,"tag":73,"props":4201,"children":4202},{},[4203,4207,4208,4213],{"type":46,"tag":61,"props":4204,"children":4205},{},[4206],{"type":52,"value":911},{"type":52,"value":2673},{"type":46,"tag":61,"props":4209,"children":4210},{},[4211],{"type":52,"value":4212},"supporting add only.",{"type":52,"value":4214}," Include it, but do not anchor the recommendation on it.",{"type":46,"tag":73,"props":4216,"children":4217},{},[4218,4222,4223,4228,4230],{"type":46,"tag":61,"props":4219,"children":4220},{},[4221],{"type":52,"value":928},{"type":52,"value":2673},{"type":46,"tag":61,"props":4224,"children":4225},{},[4226],{"type":52,"value":4227},"explicit-match-only.",{"type":52,"value":4229}," Mention it solely when the user's language is an\nunambiguous match for it; ",{"type":46,"tag":61,"props":4231,"children":4232},{},[4233],{"type":52,"value":4234},"never make it the headline.",{"type":46,"tag":73,"props":4236,"children":4237},{},[4238,4243],{"type":46,"tag":61,"props":4239,"children":4240},{},[4241],{"type":52,"value":4242},"weak-or-none",{"type":52,"value":4244}," → foundation or noise. Name it beneath; never lead.",{"type":46,"tag":55,"props":4246,"children":4247},{},[4248],{"type":52,"value":4249},"When no anchor clears the bar, leading with foundation is the correct, honest answer — do not\nmanufacture a differentiated headline to fill the slot.",{"type":46,"tag":274,"props":4251,"children":4253},{"id":4252},"sharp-signal-anchors-lead-when-intent-matches-and-the-code-corroborates",[4254],{"type":52,"value":4255},"Sharp-signal anchors — LEAD when intent matches and the code corroborates",{"type":46,"tag":55,"props":4257,"children":4258},{},[4259,4261,4266,4268,4272,4274,4278,4280,4284],{"type":52,"value":4260},"These are the most characteristic intent→product signals. An anchor becomes the headline only when\n",{"type":46,"tag":61,"props":4262,"children":4263},{},[4264],{"type":52,"value":4265},"both",{"type":52,"value":4267}," hold: (1) the user's language matches and the tier\u002Fconfidence clears the lead rule above,\n",{"type":46,"tag":61,"props":4269,"children":4270},{},[4271],{"type":52,"value":1580},{"type":52,"value":4273}," (2) the codebase actually corroborates it — the relevant SDK \u002F IaC \u002F library \u002F config is\npresent. Language alone is ",{"type":46,"tag":61,"props":4275,"children":4276},{},[4277],{"type":52,"value":393},{"type":52,"value":4279}," enough: a security or cost goal on a repo with no cloud\u002FIaC\nsurface, or an LLM goal with no LLM library, must ",{"type":46,"tag":61,"props":4281,"children":4282},{},[4283],{"type":52,"value":393},{"type":52,"value":4285}," lead with the cloud\u002FLLM anchor.",{"type":46,"tag":1100,"props":4287,"children":4288},{},[4289,4315],{"type":46,"tag":1104,"props":4290,"children":4291},{},[4292],{"type":46,"tag":1108,"props":4293,"children":4294},{},[4295,4300,4305,4310],{"type":46,"tag":1112,"props":4296,"children":4297},{},[4298],{"type":52,"value":4299},"Intent signal in user language",{"type":46,"tag":1112,"props":4301,"children":4302},{},[4303],{"type":52,"value":4304},"Anchor product",{"type":46,"tag":1112,"props":4306,"children":4307},{},[4308],{"type":52,"value":4309},"Tier",{"type":46,"tag":1112,"props":4311,"children":4312},{},[4313],{"type":52,"value":4314},"Confidence",{"type":46,"tag":1123,"props":4316,"children":4317},{},[4318,4341,4365,4389,4412,4436,4460,4483,4507,4530],{"type":46,"tag":1108,"props":4319,"children":4320},{},[4321,4326,4333,4337],{"type":46,"tag":1130,"props":4322,"children":4323},{},[4324],{"type":52,"value":4325},"AI \u002F LLM \u002F GenAI \u002F prompts \u002F agents \u002F tokens",{"type":46,"tag":1130,"props":4327,"children":4328},{},[4329],{"type":46,"tag":61,"props":4330,"children":4331},{},[4332],{"type":52,"value":1173},{"type":46,"tag":1130,"props":4334,"children":4335},{},[4336],{"type":52,"value":1406},{"type":46,"tag":1130,"props":4338,"children":4339},{},[4340],{"type":52,"value":1414},{"type":46,"tag":1108,"props":4342,"children":4343},{},[4344,4349,4357,4361],{"type":46,"tag":1130,"props":4345,"children":4346},{},[4347],{"type":52,"value":4348},"security \u002F SIEM \u002F threat detection \u002F compliance",{"type":46,"tag":1130,"props":4350,"children":4351},{},[4352],{"type":46,"tag":61,"props":4353,"children":4354},{},[4355],{"type":52,"value":4356},"Cloud SIEM",{"type":46,"tag":1130,"props":4358,"children":4359},{},[4360],{"type":52,"value":1406},{"type":46,"tag":1130,"props":4362,"children":4363},{},[4364],{"type":52,"value":1414},{"type":46,"tag":1108,"props":4366,"children":4367},{},[4368,4373,4381,4385],{"type":46,"tag":1130,"props":4369,"children":4370},{},[4371],{"type":52,"value":4372},"cloud posture \u002F misconfig \u002F CSPM \u002F DevSecOps",{"type":46,"tag":1130,"props":4374,"children":4375},{},[4376],{"type":46,"tag":61,"props":4377,"children":4378},{},[4379],{"type":52,"value":4380},"Cloud Security Management",{"type":46,"tag":1130,"props":4382,"children":4383},{},[4384],{"type":52,"value":1406},{"type":46,"tag":1130,"props":4386,"children":4387},{},[4388],{"type":52,"value":1414},{"type":46,"tag":1108,"props":4390,"children":4391},{},[4392,4397,4404,4408],{"type":46,"tag":1130,"props":4393,"children":4394},{},[4395],{"type":52,"value":4396},"network devices \u002F SNMP \u002F switches \u002F routers \u002F NetFlow",{"type":46,"tag":1130,"props":4398,"children":4399},{},[4400],{"type":46,"tag":61,"props":4401,"children":4402},{},[4403],{"type":52,"value":1212},{"type":46,"tag":1130,"props":4405,"children":4406},{},[4407],{"type":52,"value":1406},{"type":46,"tag":1130,"props":4409,"children":4410},{},[4411],{"type":52,"value":1414},{"type":46,"tag":1108,"props":4413,"children":4414},{},[4415,4420,4428,4432],{"type":46,"tag":1130,"props":4416,"children":4417},{},[4418],{"type":52,"value":4419},"code \u002F supply-chain \u002F SAST \u002F SCA \u002F vulnerabilities",{"type":46,"tag":1130,"props":4421,"children":4422},{},[4423],{"type":46,"tag":61,"props":4424,"children":4425},{},[4426],{"type":52,"value":4427},"Code Security",{"type":46,"tag":1130,"props":4429,"children":4430},{},[4431],{"type":52,"value":61},{"type":46,"tag":1130,"props":4433,"children":4434},{},[4435],{"type":52,"value":1414},{"type":46,"tag":1108,"props":4437,"children":4438},{},[4439,4444,4452,4456],{"type":46,"tag":1130,"props":4440,"children":4441},{},[4442],{"type":52,"value":4443},"runtime threat \u002F workload \u002F container security",{"type":46,"tag":1130,"props":4445,"children":4446},{},[4447],{"type":46,"tag":61,"props":4448,"children":4449},{},[4450],{"type":52,"value":4451},"Workload Protection",{"type":46,"tag":1130,"props":4453,"children":4454},{},[4455],{"type":52,"value":61},{"type":46,"tag":1130,"props":4457,"children":4458},{},[4459],{"type":52,"value":911},{"type":46,"tag":1108,"props":4461,"children":4462},{},[4463,4468,4475,4479],{"type":46,"tag":1130,"props":4464,"children":4465},{},[4466],{"type":52,"value":4467},"cloud cost \u002F spend \u002F bill \u002F FinOps",{"type":46,"tag":1130,"props":4469,"children":4470},{},[4471],{"type":46,"tag":61,"props":4472,"children":4473},{},[4474],{"type":52,"value":3048},{"type":46,"tag":1130,"props":4476,"children":4477},{},[4478],{"type":52,"value":1406},{"type":46,"tag":1130,"props":4480,"children":4481},{},[4482],{"type":52,"value":911},{"type":46,"tag":1108,"props":4484,"children":4485},{},[4486,4491,4499,4503],{"type":46,"tag":1130,"props":4487,"children":4488},{},[4489],{"type":52,"value":4490},"customer-facing \u002F frontend \u002F UX \u002F web vitals",{"type":46,"tag":1130,"props":4492,"children":4493},{},[4494],{"type":46,"tag":61,"props":4495,"children":4496},{},[4497],{"type":52,"value":4498},"Real User Monitoring",{"type":46,"tag":1130,"props":4500,"children":4501},{},[4502],{"type":52,"value":1406},{"type":46,"tag":1130,"props":4504,"children":4505},{},[4506],{"type":52,"value":1414},{"type":46,"tag":1108,"props":4508,"children":4509},{},[4510,4515,4522,4526],{"type":46,"tag":1130,"props":4511,"children":4512},{},[4513],{"type":52,"value":4514},"slow queries \u002F database \u002F query performance",{"type":46,"tag":1130,"props":4516,"children":4517},{},[4518],{"type":46,"tag":61,"props":4519,"children":4520},{},[4521],{"type":52,"value":1186},{"type":46,"tag":1130,"props":4523,"children":4524},{},[4525],{"type":52,"value":1406},{"type":46,"tag":1130,"props":4527,"children":4528},{},[4529],{"type":52,"value":1414},{"type":46,"tag":1108,"props":4531,"children":4532},{},[4533,4538,4545,4549],{"type":46,"tag":1130,"props":4534,"children":4535},{},[4536],{"type":52,"value":4537},"AWS-native \u002F CloudWatch \u002F serverless \u002F Lambda \u002F ECS",{"type":46,"tag":1130,"props":4539,"children":4540},{},[4541],{"type":46,"tag":61,"props":4542,"children":4543},{},[4544],{"type":52,"value":1199},{"type":46,"tag":1130,"props":4546,"children":4547},{},[4548],{"type":52,"value":1406},{"type":46,"tag":1130,"props":4550,"children":4551},{},[4552],{"type":52,"value":1414},{"type":46,"tag":55,"props":4554,"children":4555},{},[4556,4558,4563,4564,4569,4571,4576,4578,4583,4585,4589,4591,4596],{"type":52,"value":4557},"When the user's language is ",{"type":46,"tag":61,"props":4559,"children":4560},{},[4561],{"type":52,"value":4562},"security-coded",{"type":52,"value":1264},{"type":46,"tag":1012,"props":4565,"children":4566},{},[4567],{"type":52,"value":4568},"and the codebase has a cloud\u002Flog surface to act on",{"type":52,"value":4570},",\nshift decisively to the security suite: lead with Cloud SIEM + Cloud Security Management and bring in\nCode Security \u002F App & API Protection \u002F Workload Protection per the specific signal. If there is ",{"type":46,"tag":61,"props":4572,"children":4573},{},[4574],{"type":52,"value":4575},"no\ncloud SDK \u002F IaC \u002F centralized-log surface",{"type":52,"value":4577}," in the code, do not lead with SIEM\u002FCSPM; lead with the\n",{"type":46,"tag":1012,"props":4579,"children":4580},{},[4581],{"type":52,"value":4582},"code-level",{"type":52,"value":4584}," security products that are supported (",{"type":46,"tag":61,"props":4586,"children":4587},{},[4588],{"type":52,"value":4427},{"type":52,"value":4590}," for SAST\u002FSCA, ",{"type":46,"tag":61,"props":4592,"children":4593},{},[4594],{"type":52,"value":4595},"App & API\nProtection",{"type":52,"value":4597}," for a public API), and name SIEM\u002FCSPM only as conditional adds.",{"type":46,"tag":274,"props":4599,"children":4601},{"id":4600},"intent-without-a-supporting-stack-the-mismatch-rule",[4602],{"type":52,"value":4603},"Intent without a supporting stack (the mismatch rule)",{"type":46,"tag":55,"props":4605,"children":4606},{},[4607,4609,4614,4616,4621,4623,4627],{"type":52,"value":4608},"The intent map sets a ",{"type":46,"tag":1012,"props":4610,"children":4611},{},[4612],{"type":52,"value":4613},"candidate",{"type":52,"value":4615}," headline; the ",{"type":46,"tag":61,"props":4617,"children":4618},{},[4619],{"type":52,"value":4620},"stack confirms what is actually buildable",{"type":52,"value":4622},". When\nthe goal points at an anchor the codebase does not corroborate, the anchor must ",{"type":46,"tag":61,"props":4624,"children":4625},{},[4626],{"type":52,"value":393},{"type":52,"value":4628}," lead:",{"type":46,"tag":154,"props":4630,"children":4631},{},[4632,4640,4669],{"type":46,"tag":73,"props":4633,"children":4634},{},[4635],{"type":46,"tag":61,"props":4636,"children":4637},{},[4638],{"type":52,"value":4639},"Pure absence → name the gap, lead with what's supported.",{"type":46,"tag":73,"props":4641,"children":4642},{},[4643,4648,4650,4654,4656,4660,4662,4667],{"type":46,"tag":61,"props":4644,"children":4645},{},[4646],{"type":52,"value":4647},"User asserts an out-of-repo resource → conditional, never a lead, never \"detected.\"",{"type":52,"value":4649}," A goal that\n",{"type":46,"tag":1012,"props":4651,"children":4652},{},[4653],{"type":52,"value":1057},{"type":52,"value":4655}," \"our AWS bill\" or \"our LLM service\" is ",{"type":46,"tag":61,"props":4657,"children":4658},{},[4659],{"type":52,"value":393},{"type":52,"value":4661}," codebase evidence. Offer the anchor as a\n",{"type":46,"tag":61,"props":4663,"children":4664},{},[4665],{"type":52,"value":4666},"Medium\u002FLow conditional",{"type":52,"value":4668},"; never mark it High and never write a detected-stack line for it.",{"type":46,"tag":73,"props":4670,"children":4671},{},[4672,4677],{"type":46,"tag":61,"props":4673,"children":4674},{},[4675],{"type":52,"value":4676},"Partial → scope per product.",{"type":52,"value":4678}," Recommend supported sub-products and explicitly decline unsupported\nsiblings.",{"type":46,"tag":274,"props":4680,"children":4682},{"id":4681},"intent-products-by-theme",[4683],{"type":52,"value":4684},"Intent → products, by theme",{"type":46,"tag":55,"props":4686,"children":4687},{},[4688],{"type":52,"value":4689},"Match the user's stated goal\u002Fpain to a theme, then recommend the anchor(s) + supporting products.\nFoundation (Infra \u002F Logs \u002F APM) is assumed beneath all of these — name it briefly, don't lead with it.",{"type":46,"tag":55,"props":4691,"children":4692},{},[4693,4698],{"type":46,"tag":61,"props":4694,"children":4695},{},[4696],{"type":52,"value":4697},"Security · SIEM · compliance",{"type":52,"value":4699}," — confidence: well-established",{"type":46,"tag":154,"props":4701,"children":4702},{},[4703,4708,4735,4751],{"type":46,"tag":73,"props":4704,"children":4705},{},[4706],{"type":52,"value":4707},"Triggers: security, SIEM, threat detection, compliance, SOC 2, FedRAMP, HIPAA, PCI, audit,\nvulnerability, posture, misconfiguration, DevSecOps, PII.",{"type":46,"tag":73,"props":4709,"children":4710},{},[4711,4713,4717,4718,4722,4724,4728,4729,4733],{"type":52,"value":4712},"Lead (only if the code has a cloud\u002Flog surface): ",{"type":46,"tag":61,"props":4714,"children":4715},{},[4716],{"type":52,"value":4356},{"type":52,"value":1408},{"type":46,"tag":61,"props":4719,"children":4720},{},[4721],{"type":52,"value":4380},{"type":52,"value":4723},".\nOn a repo with no cloud SDK \u002F IaC \u002F centralized logging, lead with ",{"type":46,"tag":61,"props":4725,"children":4726},{},[4727],{"type":52,"value":4427},{"type":52,"value":1408},{"type":46,"tag":61,"props":4730,"children":4731},{},[4732],{"type":52,"value":4595},{"type":52,"value":4734}," instead, and name SIEM\u002FCSPM as conditional adds.",{"type":46,"tag":73,"props":4736,"children":4737},{},[4738,4740,4744,4745,4750],{"type":52,"value":4739},"Strong adds: ",{"type":46,"tag":61,"props":4741,"children":4742},{},[4743],{"type":52,"value":4451},{"type":52,"value":2607},{"type":46,"tag":61,"props":4746,"children":4747},{},[4748],{"type":52,"value":4749},"Sensitive Data Scanner",{"type":52,"value":986},{"type":46,"tag":73,"props":4752,"children":4753},{},[4754],{"type":52,"value":4755},"Foundation beneath: Log Management; Infra + APM round out.",{"type":46,"tag":55,"props":4757,"children":4758},{},[4759,4764],{"type":46,"tag":61,"props":4760,"children":4761},{},[4762],{"type":52,"value":4763},"AI \u002F LLM observability",{"type":52,"value":4699},{"type":46,"tag":154,"props":4766,"children":4767},{},[4768,4773,4783,4798],{"type":46,"tag":73,"props":4769,"children":4770},{},[4771],{"type":52,"value":4772},"Triggers: LLM, GenAI, AI app, chatbot, agent, RAG, prompt, token usage, model latency\u002Fcost; an LLM\nclient library in the stack.",{"type":46,"tag":73,"props":4774,"children":4775},{},[4776,4778,4782],{"type":52,"value":4777},"Lead (defining): ",{"type":46,"tag":61,"props":4779,"children":4780},{},[4781],{"type":52,"value":1173},{"type":52,"value":986},{"type":46,"tag":73,"props":4784,"children":4785},{},[4786,4787,4791,4792,4797],{"type":52,"value":4739},{"type":46,"tag":61,"props":4788,"children":4789},{},[4790],{"type":52,"value":2023},{"type":52,"value":1408},{"type":46,"tag":61,"props":4793,"children":4794},{},[4795],{"type":52,"value":4796},"Log Management",{"type":52,"value":986},{"type":46,"tag":73,"props":4799,"children":4800},{},[4801],{"type":52,"value":4802},"Do NOT add RUM \u002F DBM \u002F Source Maps unless independently signaled.",{"type":46,"tag":55,"props":4804,"children":4805},{},[4806,4811],{"type":46,"tag":61,"props":4807,"children":4808},{},[4809],{"type":52,"value":4810},"Network",{"type":52,"value":4699},{"type":46,"tag":154,"props":4813,"children":4814},{},[4815,4825,4835],{"type":46,"tag":73,"props":4816,"children":4817},{},[4818,4820,4824],{"type":52,"value":4819},"Triggers (devices): SNMP, routers, switches, firewalls, NetFlow → Lead: ",{"type":46,"tag":61,"props":4821,"children":4822},{},[4823],{"type":52,"value":1212},{"type":52,"value":986},{"type":46,"tag":73,"props":4826,"children":4827},{},[4828,4830,4834],{"type":52,"value":4829},"Triggers (traffic): service-to-service connectivity, mesh, Istio\u002FEnvoy → Strong: ",{"type":46,"tag":61,"props":4831,"children":4832},{},[4833],{"type":52,"value":3513},{"type":52,"value":986},{"type":46,"tag":73,"props":4836,"children":4837},{},[4838],{"type":52,"value":4839},"Foundation beneath: Infra + Logs.",{"type":46,"tag":55,"props":4841,"children":4842},{},[4843,4848],{"type":46,"tag":61,"props":4844,"children":4845},{},[4846],{"type":52,"value":4847},"Cloud cost \u002F FinOps",{"type":52,"value":4849}," — confidence: emerging",{"type":46,"tag":154,"props":4851,"children":4852},{},[4853,4858,4869],{"type":46,"tag":73,"props":4854,"children":4855},{},[4856],{"type":52,"value":4857},"Triggers: reduce cloud spend, cost visibility, cost allocation, FinOps, \"bill is too high.\"",{"type":46,"tag":73,"props":4859,"children":4860},{},[4861,4863,4867],{"type":52,"value":4862},"Lead with ",{"type":46,"tag":61,"props":4864,"children":4865},{},[4866],{"type":52,"value":3048},{"type":52,"value":4868}," only when cloud infra\u002FIaC is detected. On a repo with no cloud\nSDK and no IaC, name CCM as a conditional add and lead with foundation.",{"type":46,"tag":73,"props":4870,"children":4871},{},[4872,4874,4878],{"type":52,"value":4873},"Strong add: ",{"type":46,"tag":61,"props":4875,"children":4876},{},[4877],{"type":52,"value":3878},{"type":52,"value":4879}," (right-sizing from utilization).",{"type":46,"tag":55,"props":4881,"children":4882},{},[4883,4888],{"type":46,"tag":61,"props":4884,"children":4885},{},[4886],{"type":52,"value":4887},"Digital experience · frontend · customer-facing",{"type":52,"value":4699},{"type":46,"tag":154,"props":4890,"children":4891},{},[4892,4897,4912,4941],{"type":46,"tag":73,"props":4893,"children":4894},{},[4895],{"type":52,"value":4896},"Triggers: end-user experience, frontend performance, UX, web vitals, conversion, session,\n\"customers are complaining.\"",{"type":46,"tag":73,"props":4898,"children":4899},{},[4900,4901,4905,4906,4911],{"type":52,"value":4777},{"type":46,"tag":61,"props":4902,"children":4903},{},[4904],{"type":52,"value":4498},{"type":52,"value":1408},{"type":46,"tag":61,"props":4907,"children":4908},{},[4909],{"type":52,"value":4910},"Session Replay",{"type":52,"value":986},{"type":46,"tag":73,"props":4913,"children":4914},{},[4915,4916,4921,4922,4927,4929,4934,4935,4939],{"type":52,"value":4739},{"type":46,"tag":61,"props":4917,"children":4918},{},[4919],{"type":52,"value":4920},"Error Tracking",{"type":52,"value":2607},{"type":46,"tag":61,"props":4923,"children":4924},{},[4925],{"type":52,"value":4926},"Product Analytics",{"type":52,"value":4928}," (emerging) · ",{"type":46,"tag":61,"props":4930,"children":4931},{},[4932],{"type":52,"value":4933},"Synthetics",{"type":52,"value":2607},{"type":46,"tag":61,"props":4936,"children":4937},{},[4938],{"type":52,"value":3844},{"type":52,"value":4940},"\nwhen JS is bundled.",{"type":46,"tag":73,"props":4942,"children":4943},{},[4944],{"type":52,"value":4945},"Foundation beneath: APM + Logs.",{"type":46,"tag":55,"props":4947,"children":4948},{},[4949,4954],{"type":46,"tag":61,"props":4950,"children":4951},{},[4952],{"type":52,"value":4953},"Cloud migration (Azure \u002F hybrid \u002F on-prem→cloud)",{"type":52,"value":4699},{"type":46,"tag":154,"props":4956,"children":4957},{},[4958,4989],{"type":46,"tag":73,"props":4959,"children":4960},{},[4961,4963,4967,4968,4972,4973,4977,4978,4982,4983,4988],{"type":52,"value":4962},"No single defining anchor. Strong adds: ",{"type":46,"tag":61,"props":4964,"children":4965},{},[4966],{"type":52,"value":1212},{"type":52,"value":2607},{"type":46,"tag":61,"props":4969,"children":4970},{},[4971],{"type":52,"value":3048},{"type":52,"value":2577},{"type":46,"tag":61,"props":4974,"children":4975},{},[4976],{"type":52,"value":3513},{"type":52,"value":2607},{"type":46,"tag":61,"props":4979,"children":4980},{},[4981],{"type":52,"value":4933},{"type":52,"value":2607},{"type":46,"tag":61,"props":4984,"children":4985},{},[4986],{"type":52,"value":4987},"On-Call",{"type":52,"value":986},{"type":46,"tag":73,"props":4990,"children":4991},{},[4992],{"type":52,"value":4993},"Foundation beneath: matching cloud integration + Infra + Logs + APM.",{"type":46,"tag":55,"props":4995,"children":4996},{},[4997,5002],{"type":46,"tag":61,"props":4998,"children":4999},{},[5000],{"type":52,"value":5001},"AWS-native \u002F serverless \u002F ECS · CloudWatch displacement",{"type":52,"value":4699},{"type":46,"tag":154,"props":5004,"children":5005},{},[5006,5011,5020,5035],{"type":46,"tag":73,"props":5007,"children":5008},{},[5009],{"type":52,"value":5010},"Triggers: cloudwatch \u002F lambda \u002F ecs \u002F fargate language; replacing CloudWatch.",{"type":46,"tag":73,"props":5012,"children":5013},{},[5014,5015,5019],{"type":52,"value":4777},{"type":46,"tag":61,"props":5016,"children":5017},{},[5018],{"type":52,"value":1199},{"type":52,"value":986},{"type":46,"tag":73,"props":5021,"children":5022},{},[5023,5024,5029,5030,5034],{"type":52,"value":4739},{"type":46,"tag":61,"props":5025,"children":5026},{},[5027],{"type":52,"value":5028},"Custom Metrics",{"type":52,"value":2607},{"type":46,"tag":61,"props":5031,"children":5032},{},[5033],{"type":52,"value":3048},{"type":52,"value":986},{"type":46,"tag":73,"props":5036,"children":5037},{},[5038],{"type":52,"value":5039},"Foundation beneath: AWS integration + APM + Logs.",{"type":46,"tag":55,"props":5041,"children":5042},{},[5043,5048],{"type":46,"tag":61,"props":5044,"children":5045},{},[5046],{"type":52,"value":5047},"Incident response \u002F MTTR",{"type":52,"value":4849},{"type":46,"tag":154,"props":5050,"children":5051},{},[5052,5057,5078],{"type":46,"tag":73,"props":5053,"children":5054},{},[5055],{"type":52,"value":5056},"Triggers: MTTR, MTTD, reduce downtime, on-call, paging, alert fatigue, faster resolution.",{"type":46,"tag":73,"props":5058,"children":5059},{},[5060,5062,5067,5068,5072,5073,5077],{"type":52,"value":5061},"No defining anchor. Strong adds: ",{"type":46,"tag":61,"props":5063,"children":5064},{},[5065],{"type":52,"value":5066},"Incident Management",{"type":52,"value":2607},{"type":46,"tag":61,"props":5069,"children":5070},{},[5071],{"type":52,"value":4987},{"type":52,"value":2607},{"type":46,"tag":61,"props":5074,"children":5075},{},[5076],{"type":52,"value":4920},{"type":52,"value":986},{"type":46,"tag":73,"props":5079,"children":5080},{},[5081,5085],{"type":46,"tag":61,"props":5082,"children":5083},{},[5084],{"type":52,"value":2023},{"type":52,"value":5086}," does real work here (root-cause traces) — name it as doing work, not just baseline.",{"type":46,"tag":55,"props":5088,"children":5089},{},[5090,5095],{"type":46,"tag":61,"props":5091,"children":5092},{},[5093],{"type":52,"value":5094},"Tool consolidation \u002F platform unification",{"type":52,"value":4699},{"type":46,"tag":154,"props":5097,"children":5098},{},[5099,5104],{"type":46,"tag":73,"props":5100,"children":5101},{},[5102],{"type":52,"value":5103},"Triggers: consolidate, \"single pane of glass,\" fragmented tooling, too many tools, unify monitoring.",{"type":46,"tag":73,"props":5105,"children":5106},{},[5107,5109,5114,5115,5120,5121,5125,5126,5131,5132,5137],{"type":52,"value":5108},"No anchor — it's the breadth play. Foundation + long-tail: ",{"type":46,"tag":61,"props":5110,"children":5111},{},[5112],{"type":52,"value":5113},"CI Visibility",{"type":52,"value":329},{"type":46,"tag":61,"props":5116,"children":5117},{},[5118],{"type":52,"value":5119},"Continuous Profiler",{"type":52,"value":321},{"type":46,"tag":61,"props":5122,"children":5123},{},[5124],{"type":52,"value":1173},{"type":52,"value":329},{"type":46,"tag":61,"props":5127,"children":5128},{},[5129],{"type":52,"value":5130},"Universal Service Monitoring",{"type":52,"value":329},{"type":46,"tag":61,"props":5133,"children":5134},{},[5135],{"type":52,"value":5136},"Data Observability",{"type":52,"value":986},{"type":46,"tag":55,"props":5139,"children":5140},{},[5141,5146],{"type":46,"tag":61,"props":5142,"children":5143},{},[5144],{"type":52,"value":5145},"Database \u002F query performance",{"type":52,"value":4699},{"type":46,"tag":154,"props":5148,"children":5149},{},[5150,5155,5164],{"type":46,"tag":73,"props":5151,"children":5152},{},[5153],{"type":52,"value":5154},"Triggers: slow queries, database performance, query latency, explain plans, engine performance.",{"type":46,"tag":73,"props":5156,"children":5157},{},[5158,5159,5163],{"type":52,"value":4777},{"type":46,"tag":61,"props":5160,"children":5161},{},[5162],{"type":52,"value":1186},{"type":52,"value":986},{"type":46,"tag":73,"props":5165,"children":5166},{},[5167,5168,5172],{"type":52,"value":4873},{"type":46,"tag":61,"props":5169,"children":5170},{},[5171],{"type":52,"value":2023},{"type":52,"value":5173}," — DB spans tie each query back to the calling service.",{"type":46,"tag":55,"props":5175,"children":5176},{},[5177,5182],{"type":46,"tag":61,"props":5178,"children":5179},{},[5180],{"type":52,"value":5181},"Greenfield \u002F new launch",{"type":52,"value":4849},{"type":46,"tag":154,"props":5184,"children":5185},{},[5186,5191,5206,5216],{"type":46,"tag":73,"props":5187,"children":5188},{},[5189],{"type":52,"value":5190},"Triggers: new product, launching, greenfield, MVP, \"before users hit it.\"",{"type":46,"tag":73,"props":5192,"children":5193},{},[5194,5195,5199,5200,5205],{"type":52,"value":5061},{"type":46,"tag":61,"props":5196,"children":5197},{},[5198],{"type":52,"value":4933},{"type":52,"value":2607},{"type":46,"tag":61,"props":5201,"children":5202},{},[5203],{"type":52,"value":5204},"RUM",{"type":52,"value":986},{"type":46,"tag":73,"props":5207,"children":5208},{},[5209,5211,5215],{"type":52,"value":5210},"Anecdotal (explicit-match-only): ",{"type":46,"tag":61,"props":5212,"children":5213},{},[5214],{"type":52,"value":4926},{"type":52,"value":986},{"type":46,"tag":73,"props":5217,"children":5218},{},[5219],{"type":52,"value":5220},"Foundation beneath: APM + Logs + Infra.",{"type":46,"tag":55,"props":5222,"children":5223},{},[5224,5229],{"type":46,"tag":61,"props":5225,"children":5226},{},[5227],{"type":52,"value":5228},"Infra \u002F Kubernetes performance",{"type":52,"value":5230}," — confidence: well-established (flat \u002F all-foundation)",{"type":46,"tag":154,"props":5232,"children":5233},{},[5234,5239],{"type":46,"tag":73,"props":5235,"children":5236},{},[5237],{"type":52,"value":5238},"Triggers: infrastructure performance, resource utilization, capacity, k8s health.",{"type":46,"tag":73,"props":5240,"children":5241},{},[5242,5244,5248,5250,5254,5256,5260],{"type":52,"value":5243},"No exotic differentiator. ",{"type":46,"tag":61,"props":5245,"children":5246},{},[5247],{"type":52,"value":3878},{"type":52,"value":5249}," leads, with ",{"type":46,"tag":61,"props":5251,"children":5252},{},[5253],{"type":52,"value":3513},{"type":52,"value":5255}," and\n",{"type":46,"tag":61,"props":5257,"children":5258},{},[5259],{"type":52,"value":1186},{"type":52,"value":5261}," as modest adds where those signals appear.",{"type":46,"tag":55,"props":5263,"children":5264},{},[5265,5270],{"type":46,"tag":61,"props":5266,"children":5267},{},[5268],{"type":52,"value":5269},"Alerting \u002F \"know when\" \u002F notification",{"type":52,"value":5271}," — intent-driven",{"type":46,"tag":154,"props":5273,"children":5274},{},[5275,5280,5291],{"type":46,"tag":73,"props":5276,"children":5277},{},[5278],{"type":52,"value":5279},"Triggers: \"know when,\" \"alert me when,\" \"notify me,\" \"get paged when,\" \"detect when X happens.\"",{"type":46,"tag":73,"props":5281,"children":5282},{},[5283,5285,5289],{"type":52,"value":5284},"Lead with capability: ",{"type":46,"tag":61,"props":5286,"children":5287},{},[5288],{"type":52,"value":970},{"type":52,"value":5290}," — the direct answer to \"know when.\"",{"type":46,"tag":73,"props":5292,"children":5293},{},[5294,5296,5300,5301,5305,5307,5311,5313,5317],{"type":52,"value":5295},"Add: ",{"type":46,"tag":61,"props":5297,"children":5298},{},[5299],{"type":52,"value":4920},{"type":52,"value":1408},{"type":46,"tag":61,"props":5302,"children":5303},{},[5304],{"type":52,"value":4796},{"type":52,"value":5306},". \"Single pane\" → ",{"type":46,"tag":61,"props":5308,"children":5309},{},[5310],{"type":52,"value":977},{"type":52,"value":5312},"; \"SLOs\" → ",{"type":46,"tag":61,"props":5314,"children":5315},{},[5316],{"type":52,"value":984},{"type":52,"value":986},{"type":46,"tag":55,"props":5319,"children":5320},{},[5321,5326],{"type":46,"tag":61,"props":5322,"children":5323},{},[5324],{"type":52,"value":5325},"Full-stack \u002F frontend↔backend correlation",{"type":52,"value":5327}," — confidence: well-established (mostly foundation)",{"type":46,"tag":154,"props":5329,"children":5330},{},[5331,5336],{"type":46,"tag":73,"props":5332,"children":5333},{},[5334],{"type":52,"value":5335},"Triggers: correlate frontend and backend, end-to-end visibility, distributed tracing.",{"type":46,"tag":73,"props":5337,"children":5338},{},[5339,5341,5345,5346,5350,5351,5355,5357,5361,5362,5366],{"type":52,"value":5340},"Lead with the assembly: ",{"type":46,"tag":61,"props":5342,"children":5343},{},[5344],{"type":52,"value":2023},{"type":52,"value":1408},{"type":46,"tag":61,"props":5347,"children":5348},{},[5349],{"type":52,"value":5204},{"type":52,"value":1408},{"type":46,"tag":61,"props":5352,"children":5353},{},[5354],{"type":52,"value":4796},{"type":52,"value":5356},", plus ",{"type":46,"tag":61,"props":5358,"children":5359},{},[5360],{"type":52,"value":4920},{"type":52,"value":5255},{"type":46,"tag":61,"props":5363,"children":5364},{},[5365],{"type":52,"value":5066},{"type":52,"value":5367},". This is the foundation, well-assembled — say so rather than inventing a\ndifferentiator.",{"type":46,"tag":274,"props":5369,"children":5371},{"id":5370},"intent-phrasings-products-identity-free-cues",[5372],{"type":52,"value":5373},"Intent phrasings → products (identity-free cues)",{"type":46,"tag":154,"props":5375,"children":5376},{},[5377,5382,5387,5392,5397,5402,5407,5412,5417,5422],{"type":46,"tag":73,"props":5378,"children":5379},{},[5380],{"type":52,"value":5381},"\"nothing in place for security logging \u002F SIEM; needs to meet a compliance standard\"\n→ Cloud SIEM (+ Workload Protection for stricter regimes).",{"type":46,"tag":73,"props":5383,"children":5384},{},[5385],{"type":52,"value":5386},"\"manages many external APIs and faces an audit requiring stronger API security\"\n→ Code Security + App & API Protection.",{"type":46,"tag":73,"props":5388,"children":5389},{},[5390],{"type":52,"value":5391},"\"lacks visibility at the container level and wants stronger security posture\"\n→ Cloud Security Management.",{"type":46,"tag":73,"props":5393,"children":5394},{},[5395],{"type":52,"value":5396},"\"recently migrated to a cloud provider and lacks visibility into the new environment\"\n→ Network Device Monitoring + Cloud Cost Management + Cloud Network Monitoring.",{"type":46,"tag":73,"props":5398,"children":5399},{},[5400],{"type":52,"value":5401},"\"running on CloudWatch which isn't ideal; disconnected tooling over a serverless stack\"\n→ Serverless Monitoring (+ Custom Metrics, Cloud Cost Management).",{"type":46,"tag":73,"props":5403,"children":5404},{},[5405],{"type":52,"value":5406},"\"no insight into end-user behavior; wants to see user sessions and identify friction\"\n→ RUM + Session Replay + Product Analytics.",{"type":46,"tag":73,"props":5408,"children":5409},{},[5410],{"type":52,"value":5411},"\"siloed monitoring causing slow detection\u002Fresolution; no visibility front-end to back-end\"\n→ RUM + APM + Incident Management.",{"type":46,"tag":73,"props":5413,"children":5414},{},[5415],{"type":52,"value":5416},"\"consolidating a patchwork of monitoring tools to reduce cost and overhead\"\n→ consolidation play (foundation + long-tail).",{"type":46,"tag":73,"props":5418,"children":5419},{},[5420],{"type":52,"value":5421},"\"wants observability into an LLM\u002FAI application\"\n→ LLM Observability (+ APM + Logs).",{"type":46,"tag":73,"props":5423,"children":5424},{},[5425],{"type":52,"value":5426},"\"wants to proactively monitor uptime and key user flows \u002F core web vitals\"\n→ Synthetics + RUM.",{"type":46,"tag":1502,"props":5428,"children":5429},{},[],{"type":46,"tag":104,"props":5431,"children":5433},{"id":5432},"reference-product-catalog",[5434],{"type":52,"value":5435},"Reference: Product Catalog",{"type":46,"tag":55,"props":5437,"children":5438},{},[5439,5441,5446,5448,5453,5455,5460],{"type":52,"value":5440},"This is the ",{"type":46,"tag":61,"props":5442,"children":5443},{},[5444],{"type":52,"value":5445},"controlled vocabulary",{"type":52,"value":5447}," for recommendations. Always name products using the\n",{"type":46,"tag":61,"props":5449,"children":5450},{},[5451],{"type":52,"value":5452},"Canonical name",{"type":52,"value":5454}," column. Use the ",{"type":46,"tag":61,"props":5456,"children":5457},{},[5458],{"type":52,"value":5459},"Aliases",{"type":52,"value":5461}," to recognize a product when the user or the codebase\nrefers to it by another name.",{"type":46,"tag":111,"props":5463,"children":5464},{},[5465],{"type":46,"tag":55,"props":5466,"children":5467},{},[5468,5473,5475,5479,5481,5485,5487,5492,5494,5499],{"type":46,"tag":61,"props":5469,"children":5470},{},[5471],{"type":52,"value":5472},"Commonality",{"type":52,"value":5474}," is a coarse mainstream-vs-niche marker, ",{"type":46,"tag":61,"props":5476,"children":5477},{},[5478],{"type":52,"value":393},{"type":52,"value":5480}," a ranking weight and ",{"type":46,"tag":61,"props":5482,"children":5483},{},[5484],{"type":52,"value":393},{"type":52,"value":5486}," a\nfitness score. A ",{"type":46,"tag":61,"props":5488,"children":5489},{},[5490],{"type":52,"value":5491},"niche",{"type":52,"value":5493}," product can be exactly the right call; a ",{"type":46,"tag":61,"props":5495,"children":5496},{},[5497],{"type":52,"value":5498},"mainstream",{"type":52,"value":5500}," product is\nnever auto-recommended just because it's common. Use Commonality only to gauge how confidently a\nmatch can be inferred, never to order or weight a recommendation.",{"type":46,"tag":154,"props":5502,"children":5503},{},[5504,5513],{"type":46,"tag":73,"props":5505,"children":5506},{},[5507,5511],{"type":46,"tag":61,"props":5508,"children":5509},{},[5510],{"type":52,"value":5498},{"type":52,"value":5512}," — broadly adopted; safe to recommend on a clear match.",{"type":46,"tag":73,"props":5514,"children":5515},{},[5516,5520,5522,5526],{"type":46,"tag":61,"props":5517,"children":5518},{},[5519],{"type":52,"value":5491},{"type":52,"value":5521}," — appears rarely; recommend ",{"type":46,"tag":61,"props":5523,"children":5524},{},[5525],{"type":52,"value":935},{"type":52,"value":5527}," on an explicit, unambiguous match, never as a guess.",{"type":46,"tag":274,"props":5529,"children":5531},{"id":5530},"recommendable-products-by-category",[5532],{"type":52,"value":5533},"Recommendable products by category",{"type":46,"tag":55,"props":5535,"children":5536},{},[5537],{"type":46,"tag":61,"props":5538,"children":5539},{},[5540],{"type":52,"value":5541},"Core observability (foundation)",{"type":46,"tag":1100,"props":5543,"children":5544},{},[5545,5564],{"type":46,"tag":1104,"props":5546,"children":5547},{},[5548],{"type":46,"tag":1108,"props":5549,"children":5550},{},[5551,5555,5559],{"type":46,"tag":1112,"props":5552,"children":5553},{},[5554],{"type":52,"value":5452},{"type":46,"tag":1112,"props":5556,"children":5557},{},[5558],{"type":52,"value":5472},{"type":46,"tag":1112,"props":5560,"children":5561},{},[5562],{"type":52,"value":5563},"Aliases \u002F how it shows up",{"type":46,"tag":1123,"props":5565,"children":5566},{},[5567,5586,5605,5624],{"type":46,"tag":1108,"props":5568,"children":5569},{},[5570,5577,5581],{"type":46,"tag":1130,"props":5571,"children":5572},{},[5573],{"type":46,"tag":61,"props":5574,"children":5575},{},[5576],{"type":52,"value":3878},{"type":46,"tag":1130,"props":5578,"children":5579},{},[5580],{"type":52,"value":5498},{"type":46,"tag":1130,"props":5582,"children":5583},{},[5584],{"type":52,"value":5585},"Infra, host monitoring, container monitoring, server monitoring, Orchestrator Explorer",{"type":46,"tag":1108,"props":5587,"children":5588},{},[5589,5596,5600],{"type":46,"tag":1130,"props":5590,"children":5591},{},[5592],{"type":46,"tag":61,"props":5593,"children":5594},{},[5595],{"type":52,"value":4796},{"type":46,"tag":1130,"props":5597,"children":5598},{},[5599],{"type":52,"value":5498},{"type":46,"tag":1130,"props":5601,"children":5602},{},[5603],{"type":52,"value":5604},"Logs, logging, log analytics, log ingestion\u002Findexing, Flex Logs, Observability Pipelines",{"type":46,"tag":1108,"props":5606,"children":5607},{},[5608,5615,5619],{"type":46,"tag":1130,"props":5609,"children":5610},{},[5611],{"type":46,"tag":61,"props":5612,"children":5613},{},[5614],{"type":52,"value":2023},{"type":46,"tag":1130,"props":5616,"children":5617},{},[5618],{"type":52,"value":5498},{"type":46,"tag":1130,"props":5620,"children":5621},{},[5622],{"type":52,"value":5623},"Application Performance Monitoring, distributed tracing, tracing, traces, spans, ddtrace\u002Fdd-trace",{"type":46,"tag":1108,"props":5625,"children":5626},{},[5627,5634,5638],{"type":46,"tag":1130,"props":5628,"children":5629},{},[5630],{"type":46,"tag":61,"props":5631,"children":5632},{},[5633],{"type":52,"value":5119},{"type":46,"tag":1130,"props":5635,"children":5636},{},[5637],{"type":52,"value":5491},{"type":46,"tag":1130,"props":5639,"children":5640},{},[5641,5643],{"type":52,"value":5642},"Profiler, profiling, code profiling, flame graphs, ",{"type":46,"tag":314,"props":5644,"children":5646},{"className":5645},[],[5647],{"type":52,"value":3693},{"type":46,"tag":55,"props":5649,"children":5650},{},[5651],{"type":46,"tag":61,"props":5652,"children":5653},{},[5654],{"type":52,"value":5655},"Digital experience (frontend \u002F mobile \u002F end-user)",{"type":46,"tag":1100,"props":5657,"children":5658},{},[5659,5677],{"type":46,"tag":1104,"props":5660,"children":5661},{},[5662],{"type":46,"tag":1108,"props":5663,"children":5664},{},[5665,5669,5673],{"type":46,"tag":1112,"props":5666,"children":5667},{},[5668],{"type":52,"value":5452},{"type":46,"tag":1112,"props":5670,"children":5671},{},[5672],{"type":52,"value":5472},{"type":46,"tag":1112,"props":5674,"children":5675},{},[5676],{"type":52,"value":5563},{"type":46,"tag":1123,"props":5678,"children":5679},{},[5680,5706,5726,5745,5764,5784],{"type":46,"tag":1108,"props":5681,"children":5682},{},[5683,5691,5695],{"type":46,"tag":1130,"props":5684,"children":5685},{},[5686],{"type":46,"tag":61,"props":5687,"children":5688},{},[5689],{"type":52,"value":5690},"Real User Monitoring (RUM)",{"type":46,"tag":1130,"props":5692,"children":5693},{},[5694],{"type":52,"value":5498},{"type":46,"tag":1130,"props":5696,"children":5697},{},[5698,5700],{"type":52,"value":5699},"RUM, browser monitoring, frontend\u002Fclient-side monitoring, mobile RUM, ",{"type":46,"tag":314,"props":5701,"children":5703},{"className":5702},[],[5704],{"type":52,"value":5705},"@datadog\u002Fbrowser-rum",{"type":46,"tag":1108,"props":5707,"children":5708},{},[5709,5716,5721],{"type":46,"tag":1130,"props":5710,"children":5711},{},[5712],{"type":46,"tag":61,"props":5713,"children":5714},{},[5715],{"type":52,"value":4910},{"type":46,"tag":1130,"props":5717,"children":5718},{},[5719],{"type":52,"value":5720},"RUM add-on",{"type":46,"tag":1130,"props":5722,"children":5723},{},[5724],{"type":52,"value":5725},"session replay, replay; capability of the RUM SDK",{"type":46,"tag":1108,"props":5727,"children":5728},{},[5729,5736,5740],{"type":46,"tag":1130,"props":5730,"children":5731},{},[5732],{"type":46,"tag":61,"props":5733,"children":5734},{},[5735],{"type":52,"value":4920},{"type":46,"tag":1130,"props":5737,"children":5738},{},[5739],{"type":52,"value":5491},{"type":46,"tag":1130,"props":5741,"children":5742},{},[5743],{"type":52,"value":5744},"error grouping, exception tracking, crash reporting (mobile)",{"type":46,"tag":1108,"props":5746,"children":5747},{},[5748,5755,5759],{"type":46,"tag":1130,"props":5749,"children":5750},{},[5751],{"type":46,"tag":61,"props":5752,"children":5753},{},[5754],{"type":52,"value":4926},{"type":46,"tag":1130,"props":5756,"children":5757},{},[5758],{"type":52,"value":5491},{"type":46,"tag":1130,"props":5760,"children":5761},{},[5762],{"type":52,"value":5763},"PA, funnels, retention analysis, user-behavior analytics, experimentation",{"type":46,"tag":1108,"props":5765,"children":5766},{},[5767,5775,5779],{"type":46,"tag":1130,"props":5768,"children":5769},{},[5770],{"type":46,"tag":61,"props":5771,"children":5772},{},[5773],{"type":52,"value":5774},"Synthetic Monitoring",{"type":46,"tag":1130,"props":5776,"children":5777},{},[5778],{"type":52,"value":5498},{"type":46,"tag":1130,"props":5780,"children":5781},{},[5782],{"type":52,"value":5783},"Synthetics, synthetic tests, API tests, browser tests, uptime checks, multistep API tests",{"type":46,"tag":1108,"props":5785,"children":5786},{},[5787,5794,5799],{"type":46,"tag":1130,"props":5788,"children":5789},{},[5790],{"type":46,"tag":61,"props":5791,"children":5792},{},[5793],{"type":52,"value":1147},{"type":46,"tag":1130,"props":5795,"children":5796},{},[5797],{"type":52,"value":5798},"RUM\u002FET enabler",{"type":46,"tag":1130,"props":5800,"children":5801},{},[5802],{"type":52,"value":5803},"source maps, sourcemaps, symbolication (needed when JS is minified\u002Fbundled)",{"type":46,"tag":55,"props":5805,"children":5806},{},[5807],{"type":46,"tag":61,"props":5808,"children":5809},{},[5810],{"type":52,"value":5811},"Data layer",{"type":46,"tag":1100,"props":5813,"children":5814},{},[5815,5833],{"type":46,"tag":1104,"props":5816,"children":5817},{},[5818],{"type":46,"tag":1108,"props":5819,"children":5820},{},[5821,5825,5829],{"type":46,"tag":1112,"props":5822,"children":5823},{},[5824],{"type":52,"value":5452},{"type":46,"tag":1112,"props":5826,"children":5827},{},[5828],{"type":52,"value":5472},{"type":46,"tag":1112,"props":5830,"children":5831},{},[5832],{"type":52,"value":5563},{"type":46,"tag":1123,"props":5834,"children":5835},{},[5836,5856,5876],{"type":46,"tag":1108,"props":5837,"children":5838},{},[5839,5847,5851],{"type":46,"tag":1130,"props":5840,"children":5841},{},[5842],{"type":46,"tag":61,"props":5843,"children":5844},{},[5845],{"type":52,"value":5846},"Database Monitoring (DBM)",{"type":46,"tag":1130,"props":5848,"children":5849},{},[5850],{"type":52,"value":5498},{"type":46,"tag":1130,"props":5852,"children":5853},{},[5854],{"type":52,"value":5855},"query monitoring, slow queries, explain plans, query performance, Postgres\u002FMySQL\u002FSQL Server\u002FOracle\u002FMongo monitoring",{"type":46,"tag":1108,"props":5857,"children":5858},{},[5859,5867,5871],{"type":46,"tag":1130,"props":5860,"children":5861},{},[5862],{"type":46,"tag":61,"props":5863,"children":5864},{},[5865],{"type":52,"value":5866},"Data Streams Monitoring (DSM)",{"type":46,"tag":1130,"props":5868,"children":5869},{},[5870],{"type":52,"value":5491},{"type":46,"tag":1130,"props":5872,"children":5873},{},[5874],{"type":52,"value":5875},"Kafka\u002FRabbitMQ\u002FSQS\u002FSNS monitoring, queue lag, pipeline latency, streaming monitoring",{"type":46,"tag":1108,"props":5877,"children":5878},{},[5879,5886,5890],{"type":46,"tag":1130,"props":5880,"children":5881},{},[5882],{"type":46,"tag":61,"props":5883,"children":5884},{},[5885],{"type":52,"value":5136},{"type":46,"tag":1130,"props":5887,"children":5888},{},[5889],{"type":52,"value":5491},{"type":46,"tag":1130,"props":5891,"children":5892},{},[5893],{"type":52,"value":5894},"Data Jobs Monitoring (DJM), Spark\u002FDatabricks monitoring, data quality monitoring",{"type":46,"tag":55,"props":5896,"children":5897},{},[5898],{"type":46,"tag":61,"props":5899,"children":5900},{},[5901],{"type":52,"value":4810},{"type":46,"tag":1100,"props":5903,"children":5904},{},[5905,5923],{"type":46,"tag":1104,"props":5906,"children":5907},{},[5908],{"type":46,"tag":1108,"props":5909,"children":5910},{},[5911,5915,5919],{"type":46,"tag":1112,"props":5912,"children":5913},{},[5914],{"type":52,"value":5452},{"type":46,"tag":1112,"props":5916,"children":5917},{},[5918],{"type":52,"value":5472},{"type":46,"tag":1112,"props":5920,"children":5921},{},[5922],{"type":52,"value":5563},{"type":46,"tag":1123,"props":5924,"children":5925},{},[5926,5946,5966],{"type":46,"tag":1108,"props":5927,"children":5928},{},[5929,5937,5941],{"type":46,"tag":1130,"props":5930,"children":5931},{},[5932],{"type":46,"tag":61,"props":5933,"children":5934},{},[5935],{"type":52,"value":5936},"Network Device Monitoring (NDM)",{"type":46,"tag":1130,"props":5938,"children":5939},{},[5940],{"type":52,"value":5498},{"type":46,"tag":1130,"props":5942,"children":5943},{},[5944],{"type":52,"value":5945},"SNMP monitoring, NetFlow, switch\u002Frouter\u002Ffirewall monitoring, network devices, Network Path",{"type":46,"tag":1108,"props":5947,"children":5948},{},[5949,5957,5961],{"type":46,"tag":1130,"props":5950,"children":5951},{},[5952],{"type":46,"tag":61,"props":5953,"children":5954},{},[5955],{"type":52,"value":5956},"Cloud Network Monitoring (CNM)",{"type":46,"tag":1130,"props":5958,"children":5959},{},[5960],{"type":52,"value":5498},{"type":46,"tag":1130,"props":5962,"children":5963},{},[5964],{"type":52,"value":5965},"NPM, Network Performance Monitoring, network flows, service-to-service traffic, service mesh traffic",{"type":46,"tag":1108,"props":5967,"children":5968},{},[5969,5977,5981],{"type":46,"tag":1130,"props":5970,"children":5971},{},[5972],{"type":46,"tag":61,"props":5973,"children":5974},{},[5975],{"type":52,"value":5976},"Universal Service Monitoring (USM)",{"type":46,"tag":1130,"props":5978,"children":5979},{},[5980],{"type":52,"value":5491},{"type":46,"tag":1130,"props":5982,"children":5983},{},[5984],{"type":52,"value":5985},"service monitoring without code, eBPF service map, instant service catalog telemetry",{"type":46,"tag":55,"props":5987,"children":5988},{},[5989],{"type":46,"tag":61,"props":5990,"children":5991},{},[5992],{"type":52,"value":5993},"Cloud & cost",{"type":46,"tag":1100,"props":5995,"children":5996},{},[5997,6015],{"type":46,"tag":1104,"props":5998,"children":5999},{},[6000],{"type":46,"tag":1108,"props":6001,"children":6002},{},[6003,6007,6011],{"type":46,"tag":1112,"props":6004,"children":6005},{},[6006],{"type":52,"value":5452},{"type":46,"tag":1112,"props":6008,"children":6009},{},[6010],{"type":52,"value":5472},{"type":46,"tag":1112,"props":6012,"children":6013},{},[6014],{"type":52,"value":5563},{"type":46,"tag":1123,"props":6016,"children":6017},{},[6018,6037],{"type":46,"tag":1108,"props":6019,"children":6020},{},[6021,6028,6032],{"type":46,"tag":1130,"props":6022,"children":6023},{},[6024],{"type":46,"tag":61,"props":6025,"children":6026},{},[6027],{"type":52,"value":1199},{"type":46,"tag":1130,"props":6029,"children":6030},{},[6031],{"type":52,"value":5498},{"type":46,"tag":1130,"props":6033,"children":6034},{},[6035],{"type":52,"value":6036},"Lambda monitoring, Fargate tasks, serverless functions\u002Fapps, FaaS, Cloud Run \u002F Azure Functions monitoring",{"type":46,"tag":1108,"props":6038,"children":6039},{},[6040,6048,6052],{"type":46,"tag":1130,"props":6041,"children":6042},{},[6043],{"type":46,"tag":61,"props":6044,"children":6045},{},[6046],{"type":52,"value":6047},"Cloud Cost Management (CCM)",{"type":46,"tag":1130,"props":6049,"children":6050},{},[6051],{"type":52,"value":5498},{"type":46,"tag":1130,"props":6053,"children":6054},{},[6055],{"type":52,"value":6056},"cost monitoring, cloud spend, cost optimization, FinOps, Cloudcraft, cost allocation",{"type":46,"tag":55,"props":6058,"children":6059},{},[6060],{"type":46,"tag":61,"props":6061,"children":6062},{},[6063],{"type":52,"value":6064},"Security",{"type":46,"tag":1100,"props":6066,"children":6067},{},[6068,6086],{"type":46,"tag":1104,"props":6069,"children":6070},{},[6071],{"type":46,"tag":1108,"props":6072,"children":6073},{},[6074,6078,6082],{"type":46,"tag":1112,"props":6075,"children":6076},{},[6077],{"type":52,"value":5452},{"type":46,"tag":1112,"props":6079,"children":6080},{},[6081],{"type":52,"value":5472},{"type":46,"tag":1112,"props":6083,"children":6084},{},[6085],{"type":52,"value":5563},{"type":46,"tag":1123,"props":6087,"children":6088},{},[6089,6108,6128,6147,6167,6186],{"type":46,"tag":1108,"props":6090,"children":6091},{},[6092,6099,6103],{"type":46,"tag":1130,"props":6093,"children":6094},{},[6095],{"type":46,"tag":61,"props":6096,"children":6097},{},[6098],{"type":52,"value":4356},{"type":46,"tag":1130,"props":6100,"children":6101},{},[6102],{"type":52,"value":5498},{"type":46,"tag":1130,"props":6104,"children":6105},{},[6106],{"type":52,"value":6107},"SIEM, security monitoring, threat detection, security logs, security analytics",{"type":46,"tag":1108,"props":6109,"children":6110},{},[6111,6119,6123],{"type":46,"tag":1130,"props":6112,"children":6113},{},[6114],{"type":46,"tag":61,"props":6115,"children":6116},{},[6117],{"type":52,"value":6118},"Cloud Security Management (CSM)",{"type":46,"tag":1130,"props":6120,"children":6121},{},[6122],{"type":52,"value":5498},{"type":46,"tag":1130,"props":6124,"children":6125},{},[6126],{"type":52,"value":6127},"CSPM, Cloud Security Posture Management, CIEM, misconfigurations, DevSecOps, posture management",{"type":46,"tag":1108,"props":6129,"children":6130},{},[6131,6138,6142],{"type":46,"tag":1130,"props":6132,"children":6133},{},[6134],{"type":46,"tag":61,"props":6135,"children":6136},{},[6137],{"type":52,"value":4451},{"type":46,"tag":1130,"props":6139,"children":6140},{},[6141],{"type":52,"value":5491},{"type":46,"tag":1130,"props":6143,"children":6144},{},[6145],{"type":52,"value":6146},"CWS, Cloud Workload Security, runtime threat detection, container runtime security",{"type":46,"tag":1108,"props":6148,"children":6149},{},[6150,6158,6162],{"type":46,"tag":1130,"props":6151,"children":6152},{},[6153],{"type":46,"tag":61,"props":6154,"children":6155},{},[6156],{"type":52,"value":6157},"App and API Protection (AAP)",{"type":46,"tag":1130,"props":6159,"children":6160},{},[6161],{"type":52,"value":5491},{"type":46,"tag":1130,"props":6163,"children":6164},{},[6165],{"type":52,"value":6166},"ASM, Application Security Management, WAF, RASP, API security, app-layer threat protection",{"type":46,"tag":1108,"props":6168,"children":6169},{},[6170,6177,6181],{"type":46,"tag":1130,"props":6171,"children":6172},{},[6173],{"type":46,"tag":61,"props":6174,"children":6175},{},[6176],{"type":52,"value":4427},{"type":46,"tag":1130,"props":6178,"children":6179},{},[6180],{"type":52,"value":5498},{"type":46,"tag":1130,"props":6182,"children":6183},{},[6184],{"type":52,"value":6185},"SAST, IAST, SCA, secret scanning, IaC Security, supply-chain security, app sec testing",{"type":46,"tag":1108,"props":6187,"children":6188},{},[6189,6197,6201],{"type":46,"tag":1130,"props":6190,"children":6191},{},[6192],{"type":46,"tag":61,"props":6193,"children":6194},{},[6195],{"type":52,"value":6196},"Sensitive Data Scanner (SDS)",{"type":46,"tag":1130,"props":6198,"children":6199},{},[6200],{"type":52,"value":5491},{"type":46,"tag":1130,"props":6202,"children":6203},{},[6204],{"type":52,"value":6205},"SDS, PII scanning, data redaction, sensitive-data detection",{"type":46,"tag":55,"props":6207,"children":6208},{},[6209],{"type":46,"tag":61,"props":6210,"children":6211},{},[6212],{"type":52,"value":6213},"Software delivery",{"type":46,"tag":1100,"props":6215,"children":6216},{},[6217,6235],{"type":46,"tag":1104,"props":6218,"children":6219},{},[6220],{"type":46,"tag":1108,"props":6221,"children":6222},{},[6223,6227,6231],{"type":46,"tag":1112,"props":6224,"children":6225},{},[6226],{"type":52,"value":5452},{"type":46,"tag":1112,"props":6228,"children":6229},{},[6230],{"type":52,"value":5472},{"type":46,"tag":1112,"props":6232,"children":6233},{},[6234],{"type":52,"value":5563},{"type":46,"tag":1123,"props":6236,"children":6237},{},[6238,6257],{"type":46,"tag":1108,"props":6239,"children":6240},{},[6241,6248,6252],{"type":46,"tag":1130,"props":6242,"children":6243},{},[6244],{"type":46,"tag":61,"props":6245,"children":6246},{},[6247],{"type":52,"value":5113},{"type":46,"tag":1130,"props":6249,"children":6250},{},[6251],{"type":52,"value":5491},{"type":46,"tag":1130,"props":6253,"children":6254},{},[6255],{"type":52,"value":6256},"CI\u002FCD Visibility, Pipeline Visibility, CI pipeline monitoring",{"type":46,"tag":1108,"props":6258,"children":6259},{},[6260,6268,6272],{"type":46,"tag":1130,"props":6261,"children":6262},{},[6263],{"type":46,"tag":61,"props":6264,"children":6265},{},[6266],{"type":52,"value":6267},"Test Optimization",{"type":46,"tag":1130,"props":6269,"children":6270},{},[6271],{"type":52,"value":5491},{"type":46,"tag":1130,"props":6273,"children":6274},{},[6275],{"type":52,"value":6276},"Test Visibility, flaky-test detection, test analytics, Test Impact Analysis",{"type":46,"tag":55,"props":6278,"children":6279},{},[6280],{"type":46,"tag":61,"props":6281,"children":6282},{},[6283],{"type":52,"value":6284},"LLM \u002F AI",{"type":46,"tag":1100,"props":6286,"children":6287},{},[6288,6306],{"type":46,"tag":1104,"props":6289,"children":6290},{},[6291],{"type":46,"tag":1108,"props":6292,"children":6293},{},[6294,6298,6302],{"type":46,"tag":1112,"props":6295,"children":6296},{},[6297],{"type":52,"value":5452},{"type":46,"tag":1112,"props":6299,"children":6300},{},[6301],{"type":52,"value":5472},{"type":46,"tag":1112,"props":6303,"children":6304},{},[6305],{"type":52,"value":5563},{"type":46,"tag":1123,"props":6307,"children":6308},{},[6309],{"type":46,"tag":1108,"props":6310,"children":6311},{},[6312,6319,6323],{"type":46,"tag":1130,"props":6313,"children":6314},{},[6315],{"type":46,"tag":61,"props":6316,"children":6317},{},[6318],{"type":52,"value":1173},{"type":46,"tag":1130,"props":6320,"children":6321},{},[6322],{"type":52,"value":5491},{"type":46,"tag":1130,"props":6324,"children":6325},{},[6326],{"type":52,"value":6327},"LLM Obs, LLMObs, AI\u002FGenAI observability, prompt\u002Fmodel monitoring, token & cost tracking",{"type":46,"tag":55,"props":6329,"children":6330},{},[6331],{"type":46,"tag":61,"props":6332,"children":6333},{},[6334],{"type":52,"value":6335},"Service management",{"type":46,"tag":1100,"props":6337,"children":6338},{},[6339,6357],{"type":46,"tag":1104,"props":6340,"children":6341},{},[6342],{"type":46,"tag":1108,"props":6343,"children":6344},{},[6345,6349,6353],{"type":46,"tag":1112,"props":6346,"children":6347},{},[6348],{"type":52,"value":5452},{"type":46,"tag":1112,"props":6350,"children":6351},{},[6352],{"type":52,"value":5472},{"type":46,"tag":1112,"props":6354,"children":6355},{},[6356],{"type":52,"value":5563},{"type":46,"tag":1123,"props":6358,"children":6359},{},[6360,6379,6398,6418],{"type":46,"tag":1108,"props":6361,"children":6362},{},[6363,6370,6374],{"type":46,"tag":1130,"props":6364,"children":6365},{},[6366],{"type":46,"tag":61,"props":6367,"children":6368},{},[6369],{"type":52,"value":5066},{"type":46,"tag":1130,"props":6371,"children":6372},{},[6373],{"type":52,"value":5491},{"type":46,"tag":1130,"props":6375,"children":6376},{},[6377],{"type":52,"value":6378},"IM, incident response, postmortems, Enterprise Incident Response",{"type":46,"tag":1108,"props":6380,"children":6381},{},[6382,6389,6393],{"type":46,"tag":1130,"props":6383,"children":6384},{},[6385],{"type":46,"tag":61,"props":6386,"children":6387},{},[6388],{"type":52,"value":4987},{"type":46,"tag":1130,"props":6390,"children":6391},{},[6392],{"type":52,"value":5491},{"type":46,"tag":1130,"props":6394,"children":6395},{},[6396],{"type":52,"value":6397},"paging, on-call scheduling, alert escalation",{"type":46,"tag":1108,"props":6399,"children":6400},{},[6401,6409,6413],{"type":46,"tag":1130,"props":6402,"children":6403},{},[6404],{"type":46,"tag":61,"props":6405,"children":6406},{},[6407],{"type":52,"value":6408},"Workflow Automation",{"type":46,"tag":1130,"props":6410,"children":6411},{},[6412],{"type":52,"value":5491},{"type":46,"tag":1130,"props":6414,"children":6415},{},[6416],{"type":52,"value":6417},"workflows, runbook automation, automated remediation",{"type":46,"tag":1108,"props":6419,"children":6420},{},[6421,6429,6433],{"type":46,"tag":1130,"props":6422,"children":6423},{},[6424],{"type":46,"tag":61,"props":6425,"children":6426},{},[6427],{"type":52,"value":6428},"Event Management",{"type":46,"tag":1130,"props":6430,"children":6431},{},[6432],{"type":52,"value":5491},{"type":46,"tag":1130,"props":6434,"children":6435},{},[6436],{"type":52,"value":6437},"event correlation, alert correlation, event pipeline",{"type":46,"tag":55,"props":6439,"children":6440},{},[6441],{"type":46,"tag":61,"props":6442,"children":6443},{},[6444],{"type":52,"value":6445},"Other (niche — match explicitly only)",{"type":46,"tag":1100,"props":6447,"children":6448},{},[6449,6467],{"type":46,"tag":1104,"props":6450,"children":6451},{},[6452],{"type":46,"tag":1108,"props":6453,"children":6454},{},[6455,6459,6463],{"type":46,"tag":1112,"props":6456,"children":6457},{},[6458],{"type":52,"value":5452},{"type":46,"tag":1112,"props":6460,"children":6461},{},[6462],{"type":52,"value":5472},{"type":46,"tag":1112,"props":6464,"children":6465},{},[6466],{"type":52,"value":5563},{"type":46,"tag":1123,"props":6468,"children":6469},{},[6470,6489,6509,6529,6549,6569,6589],{"type":46,"tag":1108,"props":6471,"children":6472},{},[6473,6480,6484],{"type":46,"tag":1130,"props":6474,"children":6475},{},[6476],{"type":46,"tag":61,"props":6477,"children":6478},{},[6479],{"type":52,"value":5028},{"type":46,"tag":1130,"props":6481,"children":6482},{},[6483],{"type":52,"value":5491},{"type":46,"tag":1130,"props":6485,"children":6486},{},[6487],{"type":52,"value":6488},"custom metrics\u002Fevents, DogStatsD metrics, MetricsWithoutLimits",{"type":46,"tag":1108,"props":6490,"children":6491},{},[6492,6500,6504],{"type":46,"tag":1130,"props":6493,"children":6494},{},[6495],{"type":46,"tag":61,"props":6496,"children":6497},{},[6498],{"type":52,"value":6499},"GPU Monitoring",{"type":46,"tag":1130,"props":6501,"children":6502},{},[6503],{"type":52,"value":5491},{"type":46,"tag":1130,"props":6505,"children":6506},{},[6507],{"type":52,"value":6508},"NVIDIA\u002FGPU metrics",{"type":46,"tag":1108,"props":6510,"children":6511},{},[6512,6520,6524],{"type":46,"tag":1130,"props":6513,"children":6514},{},[6515],{"type":46,"tag":61,"props":6516,"children":6517},{},[6518],{"type":52,"value":6519},"IoT Monitoring",{"type":46,"tag":1130,"props":6521,"children":6522},{},[6523],{"type":52,"value":5491},{"type":46,"tag":1130,"props":6525,"children":6526},{},[6527],{"type":52,"value":6528},"device\u002Fedge monitoring",{"type":46,"tag":1108,"props":6530,"children":6531},{},[6532,6540,6544],{"type":46,"tag":1130,"props":6533,"children":6534},{},[6535],{"type":46,"tag":61,"props":6536,"children":6537},{},[6538],{"type":52,"value":6539},"Feature Flags",{"type":46,"tag":1130,"props":6541,"children":6542},{},[6543],{"type":52,"value":5491},{"type":46,"tag":1130,"props":6545,"children":6546},{},[6547],{"type":52,"value":6548},"feature flagging, feature toggles",{"type":46,"tag":1108,"props":6550,"children":6551},{},[6552,6560,6564],{"type":46,"tag":1130,"props":6553,"children":6554},{},[6555],{"type":46,"tag":61,"props":6556,"children":6557},{},[6558],{"type":52,"value":6559},"App Builder",{"type":46,"tag":1130,"props":6561,"children":6562},{},[6563],{"type":52,"value":5491},{"type":46,"tag":1130,"props":6565,"children":6566},{},[6567],{"type":52,"value":6568},"low-code internal apps",{"type":46,"tag":1108,"props":6570,"children":6571},{},[6572,6580,6584],{"type":46,"tag":1130,"props":6573,"children":6574},{},[6575],{"type":46,"tag":61,"props":6576,"children":6577},{},[6578],{"type":52,"value":6579},"Bits AI",{"type":46,"tag":1130,"props":6581,"children":6582},{},[6583],{"type":52,"value":5491},{"type":46,"tag":1130,"props":6585,"children":6586},{},[6587],{"type":52,"value":6588},"AI SRE, AI incident investigations",{"type":46,"tag":1108,"props":6590,"children":6591},{},[6592,6600,6604],{"type":46,"tag":1130,"props":6593,"children":6594},{},[6595],{"type":46,"tag":61,"props":6596,"children":6597},{},[6598],{"type":52,"value":6599},"CoScreen",{"type":46,"tag":1130,"props":6601,"children":6602},{},[6603],{"type":52,"value":5491},{"type":46,"tag":1130,"props":6605,"children":6606},{},[6607],{"type":52,"value":6608},"collaborative screen sharing, pair debugging",{"type":46,"tag":55,"props":6610,"children":6611},{},[6612,6617,6619,6624],{"type":46,"tag":61,"props":6613,"children":6614},{},[6615],{"type":52,"value":6616},"Platform capabilities (Monitors & Alerting \u002F Dashboards \u002F SLOs — recommend by intent)",{"type":52,"value":6618},"\nThese are core Datadog capabilities available across the platform; recommend them ",{"type":46,"tag":61,"props":6620,"children":6621},{},[6622],{"type":52,"value":6623},"by intent",{"type":52,"value":564},{"type":46,"tag":1100,"props":6626,"children":6627},{},[6628,6644],{"type":46,"tag":1104,"props":6629,"children":6630},{},[6631],{"type":46,"tag":1108,"props":6632,"children":6633},{},[6634,6639],{"type":46,"tag":1112,"props":6635,"children":6636},{},[6637],{"type":52,"value":6638},"Capability",{"type":46,"tag":1112,"props":6640,"children":6641},{},[6642],{"type":52,"value":6643},"Recommend when the goal is…",{"type":46,"tag":1123,"props":6645,"children":6646},{},[6647,6662,6677],{"type":46,"tag":1108,"props":6648,"children":6649},{},[6650,6657],{"type":46,"tag":1130,"props":6651,"children":6652},{},[6653],{"type":46,"tag":61,"props":6654,"children":6655},{},[6656],{"type":52,"value":970},{"type":46,"tag":1130,"props":6658,"children":6659},{},[6660],{"type":52,"value":6661},"\"know when\", \"alert me\", \"notify me\", \"get paged when\", \"detect when X happens\"",{"type":46,"tag":1108,"props":6663,"children":6664},{},[6665,6672],{"type":46,"tag":1130,"props":6666,"children":6667},{},[6668],{"type":46,"tag":61,"props":6669,"children":6670},{},[6671],{"type":52,"value":977},{"type":46,"tag":1130,"props":6673,"children":6674},{},[6675],{"type":52,"value":6676},"\"see it all in one view\", \"single pane of glass\", \"visualize\", \"build a dashboard\"",{"type":46,"tag":1108,"props":6678,"children":6679},{},[6680,6687],{"type":46,"tag":1130,"props":6681,"children":6682},{},[6683],{"type":46,"tag":61,"props":6684,"children":6685},{},[6686],{"type":52,"value":984},{"type":46,"tag":1130,"props":6688,"children":6689},{},[6690],{"type":52,"value":6691},"\"track SLAs \u002F SLOs\", \"error budget\", \"reliability targets\", \"uptime guarantee\"",{"type":46,"tag":274,"props":6693,"children":6695},{"id":6694},"never-recommend-services-enablement-sku-pricing-strings",[6696],{"type":52,"value":6697},"Never recommend (services \u002F enablement \u002F SKU \u002F pricing strings)",{"type":46,"tag":55,"props":6699,"children":6700},{},[6701,6703,6707],{"type":52,"value":6702},"These are professional services \u002F enablement \u002F training \u002F events — ",{"type":46,"tag":61,"props":6704,"children":6705},{},[6706],{"type":52,"value":393},{"type":52,"value":6708}," Datadog products:",{"type":46,"tag":154,"props":6710,"children":6711},{},[6712,6721,6774],{"type":46,"tag":73,"props":6713,"children":6714},{},[6715,6719],{"type":46,"tag":61,"props":6716,"children":6717},{},[6718],{"type":52,"value":1234},{"type":52,"value":6720}," bucket: DASH Tickets, Implementation Services (any package),\nPremium Enablement, TEM Bootcamp.",{"type":46,"tag":73,"props":6722,"children":6723},{},[6724,6729,6731,6736,6737,6742,6743,6748,6749,6754,6755,6760,6761,6766,6767,6772],{"type":46,"tag":61,"props":6725,"children":6726},{},[6727],{"type":52,"value":6728},"Rule:",{"type":52,"value":6730}," treat any item whose name contains ",{"type":46,"tag":1012,"props":6732,"children":6733},{},[6734],{"type":52,"value":6735},"Bootcamp",{"type":52,"value":329},{"type":46,"tag":1012,"props":6738,"children":6739},{},[6740],{"type":52,"value":6741},"Enablement",{"type":52,"value":329},{"type":46,"tag":1012,"props":6744,"children":6745},{},[6746],{"type":52,"value":6747},"Implementation Services",{"type":52,"value":321},{"type":46,"tag":1012,"props":6750,"children":6751},{},[6752],{"type":52,"value":6753},"Tickets",{"type":52,"value":329},{"type":46,"tag":1012,"props":6756,"children":6757},{},[6758],{"type":52,"value":6759},"Training",{"type":52,"value":329},{"type":46,"tag":1012,"props":6762,"children":6763},{},[6764],{"type":52,"value":6765},"Onboarding Services",{"type":52,"value":380},{"type":46,"tag":1012,"props":6768,"children":6769},{},[6770],{"type":52,"value":6771},"Support Package",{"type":52,"value":6773}," as non-recommendable.",{"type":46,"tag":73,"props":6775,"children":6776},{},[6777,6779,6784,6786,6791,6793,6798],{"type":52,"value":6778},"Also do not surface internal SKU \u002F pricing-tier names or anything prefixed ",{"type":46,"tag":1012,"props":6780,"children":6781},{},[6782],{"type":52,"value":6783},"Deprecated –",{"type":52,"value":6785}," \u002F\n",{"type":46,"tag":1012,"props":6787,"children":6788},{},[6789],{"type":52,"value":6790},"Legacy –",{"type":52,"value":6792},". Always recommend the ",{"type":46,"tag":61,"props":6794,"children":6795},{},[6796],{"type":52,"value":6797},"Canonical product name",{"type":52,"value":6799}," instead.",{"items":6801,"total":6971},[6802,6817,6835,6846,6862,6876,6891,6905,6917,6929,6939,6956],{"slug":6803,"name":6803,"fn":6804,"description":6805,"org":6806,"tags":6807,"stars":25,"repoUrl":26,"updatedAt":6816},"agent-install","install Datadog Agent on Kubernetes","Install the Datadog Agent on Kubernetes using the Datadog Operator — required before enabling Single Step Instrumentation (SSI), which automatically instruments applications for APM without code changes. Only use if no Datadog Agent is deployed on the cluster yet.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6808,6809,6812,6815],{"name":23,"slug":24,"type":15},{"name":6810,"slug":6811,"type":15},"Deployment","deployment",{"name":6813,"slug":6814,"type":15},"Kubernetes","kubernetes",{"name":13,"slug":14,"type":15},"2026-04-15T04:57:27.489805",{"slug":6818,"name":6818,"fn":6819,"description":6820,"org":6821,"tags":6822,"stars":25,"repoUrl":26,"updatedAt":6834},"agent-observability-auto-experiment","run iterative code improvements using Datadog data","Run an iterative code-improvement hill-climb against real Datadog LLM-Obs data, locally, with Claude Code as the agent. Establishes a baseline eval, makes one focused change, re-scores with the same harness, keeps the change if it improves the score in the goal's direction (labeling within-noise gains tentative), and repeats. Use when the user says \"run an auto experiment\", \"hill-climb this code\", \"iteratively improve X and measure the delta\", \"optimize this prompt\u002Ffile against my traces\", \"auto-optimize against LLM-Obs\", or wants the local equivalent of the auto_experiments worker. Works from a local dataset file, an ml_app, a dataset_id, or a list of trace_ids.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6823,6824,6827,6830,6833],{"name":23,"slug":24,"type":15},{"name":6825,"slug":6826,"type":15},"Debugging","debugging",{"name":6828,"slug":6829,"type":15},"Evals","evals",{"name":6831,"slug":6832,"type":15},"LLM","llm",{"name":13,"slug":14,"type":15},"2026-07-31T05:52:13.711906",{"slug":6836,"name":6836,"fn":6837,"description":6838,"org":6839,"tags":6840,"stars":25,"repoUrl":26,"updatedAt":6845},"agent-observability-eval-bootstrap","bootstrap evaluators from production traces","Bootstrap evaluators from production traces — by default propose online LLM-judge evaluators and, after you confirm, create them in Datadog as disabled drafts (never auto-enabled); on request emit Python SDK code or a framework-agnostic JSON spec instead. Use when user says \"bootstrap evaluators\", \"generate evaluators\", \"create evals from traces\", \"eval bootstrap\", \"write evaluators\", \"build eval suite\", \"publish evaluators\", or wants to generate BaseEvaluator\u002FLLMJudge code or online judge configs from production LLM trace data. Works with ml_app and optional RCA report or failure hypothesis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6841,6842,6843,6844],{"name":23,"slug":24,"type":15},{"name":6828,"slug":6829,"type":15},{"name":6831,"slug":6832,"type":15},{"name":13,"slug":14,"type":15},"2026-06-19T09:04:19.259734",{"slug":6847,"name":6847,"fn":6848,"description":6849,"org":6850,"tags":6851,"stars":25,"repoUrl":26,"updatedAt":6861},"agent-observability-eval-pipeline","run agent observability and evaluation pipelines","End-to-end Agent Observability pipeline for an instrumented ml_app — classify production traces, root-cause failures, bootstrap evaluators, then (optionally) sample + publish a dataset, generate + run an experiment, and analyze results. Six narrated phases with a standardized banner and a \"continue\" checkpoint between each. Pure orchestration over the agent-observability sub-skills (`agent-observability-session-classify`, `agent-observability-trace-rca`, `agent-observability-eval-bootstrap`, `agent-observability-experiment-py-bootstrap`, `agent-observability-experiment-analyzer`). Use when user says \"run the eval pipeline\", \"go from traces to evals\", \"bootstrap evals end to end\", \"classify then RCA then bootstrap\", \"build an eval set from scratch\", \"onboard me to datasets and experiments\", \"walk me through experiments\", \"I have an ml_app, now what\", \"Agent Observability onboarding\", \"guided experiment setup\", \"from traces to experiments\", or wants a deterministic, narrated tour from production data through evaluators, datasets, and experiments. Stop early with `--stop-after \u003Cphase>` to short-circuit at evaluators or dataset, or resume mid-flow with `--start-at \u003Cphase>`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6852,6855,6858,6859,6860],{"name":6853,"slug":6854,"type":15},"Agents","agents",{"name":6856,"slug":6857,"type":15},"Data Pipeline","data-pipeline",{"name":23,"slug":24,"type":15},{"name":6828,"slug":6829,"type":15},{"name":13,"slug":14,"type":15},"2026-06-19T09:04:17.231423",{"slug":6863,"name":6863,"fn":6864,"description":6865,"org":6866,"tags":6867,"stars":25,"repoUrl":26,"updatedAt":6875},"agent-observability-experiment-analyzer","analyze LLM experiment results","Analyze LLM experiment results. Handles single or comparative experiments, exploratory or Q&A modes. Use when user says \"analyze experiment\", \"compare experiments\", \"analyze against baseline\", or provides one or two experiment IDs for analysis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6868,6871,6872,6873,6874],{"name":6869,"slug":6870,"type":15},"Analytics","analytics",{"name":23,"slug":24,"type":15},{"name":6828,"slug":6829,"type":15},{"name":6831,"slug":6832,"type":15},{"name":13,"slug":14,"type":15},"2026-06-19T09:04:21.212498",{"slug":6877,"name":6877,"fn":6878,"description":6879,"org":6880,"tags":6881,"stars":25,"repoUrl":26,"updatedAt":6890},"agent-observability-experiment-py-bootstrap","generate Python experiment clients for LLM observability","Generates a self-contained Python experiment client that uses the ddtrace.llmobs SDK. Emits either a runnable .py script or a Jupyter .ipynb notebook matching the canonical DataDog reference notebook style. Use when the user says \"generate Python experiment\", \"write an SDK experiment\", \"create a ddtrace experiment\", \"Python notebook experiment\", \"use the Agent Observability SDK\", or has `ddtrace` installed and wants idiomatic SDK code.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6882,6883,6886,6887,6888],{"name":23,"slug":24,"type":15},{"name":6884,"slug":6885,"type":15},"Jupyter","jupyter",{"name":6831,"slug":6832,"type":15},{"name":13,"slug":14,"type":15},{"name":1629,"slug":6889,"type":15},"python","2026-06-19T09:04:22.640384",{"slug":6892,"name":6892,"fn":6893,"description":6894,"org":6895,"tags":6896,"stars":25,"repoUrl":26,"updatedAt":6904},"agent-observability-replay-trace","iterate on LLM traces with local code","Use when a developer wants to iterate on ONE specific Agent Observability \u002F LLM Obs trace whose output they didn't like — re-running that trace against their LOCAL code, seeing a concise diff of the old vs new output, and looping (change code → replay → diff) until satisfied. Invoked as \u002Fagent-observability-replay-trace \u003Ctrace-id> [changes to test]. Signals: \"replay this trace\"; \"iterate on a trace\"; \"this trace's output is wrong, fix it and re-run\"; \"re-run trace \u003Cid> with \u003Cchange>\"; pasting a trace id from the Agent Observability UI with a description of what to fix. It fetches the trace via the datadog-llmo MCP or the pup CLI, edits code, re-runs the app to emit a NEW trace, and diffs the two — no local server, no browser. For agents traced with ddtrace \u002F LLM Obs (Python first-class), with JSON-serializable entry input. Do NOT use for: scored Experiments or the browser \"Replay\" button (that's agent-observability-replay-experiment), building an experiment from a dataset\u002FCSV, writing evaluators, root-causing failed traces, or RUM\u002FHTTP session replay.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6897,6898,6899,6900,6901],{"name":23,"slug":24,"type":15},{"name":6825,"slug":6826,"type":15},{"name":6831,"slug":6832,"type":15},{"name":13,"slug":14,"type":15},{"name":6902,"slug":6903,"type":15},"Tracing","tracing","2026-08-06T05:38:08.57055",{"slug":6906,"name":6906,"fn":6907,"description":6908,"org":6909,"tags":6910,"stars":25,"repoUrl":26,"updatedAt":6916},"agent-observability-session-classify","evaluate user intent satisfaction in sessions","Classify whether user intent was satisfied in a Datadog Agent Observability trace or session. Three modes: (1) session_id — classify a single CMD+I assistant session with RUM; (2) trace_id — classify a single Agent Observability trace without RUM; (3) ml_app — sample and classify multiple sessions or traces from a given LLM app. Output is compact by default (verdict + one-sentence reason). Use when evaluating satisfaction, classifying sessions\u002Ftraces, labeling data, or generating signal for agent-observability-eval-pipeline or agent-observability-trace-rca.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6911,6912,6913,6914,6915],{"name":6869,"slug":6870,"type":15},{"name":23,"slug":24,"type":15},{"name":6828,"slug":6829,"type":15},{"name":6831,"slug":6832,"type":15},{"name":13,"slug":14,"type":15},"2026-06-19T09:04:26.341497",{"slug":6918,"name":6918,"fn":6919,"description":6920,"org":6921,"tags":6922,"stars":25,"repoUrl":26,"updatedAt":6928},"agent-observability-trace-rca","diagnose LLM application failures from traces","Root cause analysis on production LLM traces. Diagnoses why an LLM application is failing — works from eval judge verdicts, runtime errors, or structural anomalies depending on what signals are present. Walks the span tree from symptom to root cause. Use when user says \"what's wrong with my app\", \"why is my eval failing\", \"analyze errors\", \"root cause analysis\", \"diagnose failures\", or wants to understand production failure patterns.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6923,6924,6925,6926,6927],{"name":23,"slug":24,"type":15},{"name":6825,"slug":6826,"type":15},{"name":6828,"slug":6829,"type":15},{"name":6831,"slug":6832,"type":15},{"name":13,"slug":14,"type":15},"2026-06-19T09:04:24.316244",{"slug":6930,"name":6930,"fn":6931,"description":6932,"org":6933,"tags":6934,"stars":25,"repoUrl":26,"updatedAt":6938},"agent-skills","use Datadog observability skills","Datadog skills for AI agents. Essential monitoring, logging, tracing and observability.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6935,6936,6937],{"name":23,"slug":24,"type":15},{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},"2026-08-06T05:38:09.51837",{"slug":6940,"name":6940,"fn":6941,"description":6942,"org":6943,"tags":6944,"stars":25,"repoUrl":26,"updatedAt":6955},"datadog-app","build and manage Datadog applications","Guides developers building Datadog Apps with TypeScript, React, the @datadog\u002Fapps scaffolder, and @datadog\u002Fvite-plugin. Use when a user wants to scaffold, run, debug, upgrade, build, upload, publish, upload without publishing (draft upload), add an upload-no-publish script, set up CI\u002FCD, use OAuth or API\u002Fapplication key auth, trigger\u002Fpoll Workflow Automation, choose DDSQL or Action Catalog for backend data access, or query app datastores with DDSQL, including backend function troubleshooting.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6945,6946,6948,6949,6952],{"name":23,"slug":24,"type":15},{"name":655,"slug":6947,"type":15},"frontend",{"name":2097,"slug":2106,"type":15},{"name":6950,"slug":6951,"type":15},"TypeScript","typescript",{"name":6953,"slug":6954,"type":15},"Vite","vite","2026-06-18T08:01:32.562331",{"slug":6957,"name":6957,"fn":6958,"description":6959,"org":6960,"tags":6961,"stars":25,"repoUrl":26,"updatedAt":6970},"dd-apm","query Datadog APM traces","APM - install, onboard, instrument, enable, set up, configure, traces, services, dependencies, performance analysis. Use for any request involving Datadog APM setup, instrumentation (SSI, ddtrace, agent install), or analysis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6962,6963,6966,6967],{"name":23,"slug":24,"type":15},{"name":6964,"slug":6965,"type":15},"Distributed Tracing","distributed-tracing",{"name":13,"slug":14,"type":15},{"name":6968,"slug":6969,"type":15},"Performance","performance","2026-04-06T18:08:34.575282",37,{"items":6973,"total":7028},[6974,6981,6989,6996,7004,7012,7020],{"slug":6803,"name":6803,"fn":6804,"description":6805,"org":6975,"tags":6976,"stars":25,"repoUrl":26,"updatedAt":6816},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6977,6978,6979,6980],{"name":23,"slug":24,"type":15},{"name":6810,"slug":6811,"type":15},{"name":6813,"slug":6814,"type":15},{"name":13,"slug":14,"type":15},{"slug":6818,"name":6818,"fn":6819,"description":6820,"org":6982,"tags":6983,"stars":25,"repoUrl":26,"updatedAt":6834},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6984,6985,6986,6987,6988],{"name":23,"slug":24,"type":15},{"name":6825,"slug":6826,"type":15},{"name":6828,"slug":6829,"type":15},{"name":6831,"slug":6832,"type":15},{"name":13,"slug":14,"type":15},{"slug":6836,"name":6836,"fn":6837,"description":6838,"org":6990,"tags":6991,"stars":25,"repoUrl":26,"updatedAt":6845},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6992,6993,6994,6995],{"name":23,"slug":24,"type":15},{"name":6828,"slug":6829,"type":15},{"name":6831,"slug":6832,"type":15},{"name":13,"slug":14,"type":15},{"slug":6847,"name":6847,"fn":6848,"description":6849,"org":6997,"tags":6998,"stars":25,"repoUrl":26,"updatedAt":6861},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6999,7000,7001,7002,7003],{"name":6853,"slug":6854,"type":15},{"name":6856,"slug":6857,"type":15},{"name":23,"slug":24,"type":15},{"name":6828,"slug":6829,"type":15},{"name":13,"slug":14,"type":15},{"slug":6863,"name":6863,"fn":6864,"description":6865,"org":7005,"tags":7006,"stars":25,"repoUrl":26,"updatedAt":6875},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[7007,7008,7009,7010,7011],{"name":6869,"slug":6870,"type":15},{"name":23,"slug":24,"type":15},{"name":6828,"slug":6829,"type":15},{"name":6831,"slug":6832,"type":15},{"name":13,"slug":14,"type":15},{"slug":6877,"name":6877,"fn":6878,"description":6879,"org":7013,"tags":7014,"stars":25,"repoUrl":26,"updatedAt":6890},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[7015,7016,7017,7018,7019],{"name":23,"slug":24,"type":15},{"name":6884,"slug":6885,"type":15},{"name":6831,"slug":6832,"type":15},{"name":13,"slug":14,"type":15},{"name":1629,"slug":6889,"type":15},{"slug":6892,"name":6892,"fn":6893,"description":6894,"org":7021,"tags":7022,"stars":25,"repoUrl":26,"updatedAt":6904},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[7023,7024,7025,7026,7027],{"name":23,"slug":24,"type":15},{"name":6825,"slug":6826,"type":15},{"name":6831,"slug":6832,"type":15},{"name":13,"slug":14,"type":15},{"name":6902,"slug":6903,"type":15},35]