Skip to content
datadog-entity-generator logo

Datadog Entity Generator

datadog-entity-generator

Generate exhaustively complete and accurate Datadog Software Catalog entity YAML files (v3 schema) by examining project source code and interviewing engineers. Use when engineers need to create or update entity.datadog.yaml files for services, datastores, queues, APIs, or systems. Triggers include: "create entity yaml", "generate service catalog entry", "document this project in datadog", "create service definition", "add to software catalog", or any request involving Datadog entity/service documentation. Supports all v3 entity kinds: service, datastore, queue, api, system. Fetches existing Datadog data via API. Validates against official JSON schema. Merges with existing definitions. Outputs to .datadog/ directory.

SKILL.md

Full skill instructions

Datadog Entity Generator

Generate comprehensive, validated Datadog Software Catalog entity YAML files (v3 schema) through project analysis and engineer interviews.

Workflow Overview

  1. Analyze project - Scan source code for metadata signals
  2. Fetch existing Datadog data - Query API for existing entities, teams, related services
  3. Interview engineer - Fill gaps with targeted questions
  4. Generate YAML - Create complete entity definition(s)
  5. Validate - Check against official JSON schema
  6. Merge/​Output - Handle existing files, write to .datadog/

Step 1: Project Analysis

Run the project analyzer to extract metadata signals:

uv run scripts/​project_analyzer.py /​path/​to/​project

Detected signals:

  • pyproject.toml, package.json, pom.xml, build.gradle → name, description, language, dependencies
  • Dockerfile, docker-compose.yml → service type, dependencies
  • kubernetes/, helm/, terraform/ → infrastructure, dependencies
  • .github/​workflows/, .gitlab-ci.yml → CI/​CD pipelines
  • README.md, CODEOWNERS → description, owners
  • Existing .datadog/​entity.datadog.yaml → merge base
  • openapi.yaml, swagger.json → API definitions

Output: JSON with detected values and confidence levels.

Step 2: Fetch Existing Datadog Data

Query Datadog API for context (requires DD_API_KEY and DD_APP_KEY in environment):

uv run scripts/​datadog_fetcher.py --service-name <name>

Fetches:

  • Existing entity definitions for the service
  • Teams (for owner validation)
  • Related services with dependencies
  • Monitors, SLOs associated with service
  • APM service topology (dependencies)

Step 3: Engineer Interview

Conduct structured interview to fill gaps. See references/​interview-guide.md for complete question bank.

Interview strategy:

  1. Start with auto-detected values for confirmation
  2. Ask only for missing required fields
  3. Negotiate optional fields based on engineer preference
  4. Validate URLs and integration patterns

Core questions by entity kind:

Service

  • Service name (confirm auto-detected or provide)
  • Display name (human-readable)
  • Owner team (validate against Datadog teams or accept new)
  • Tier: critical, high, medium, low
  • Lifecycle: production, experimental, deprecated
  • Type: web, grpc, rest, graphql, worker, custom
  • Languages (confirm from detection)
  • Dependencies (services, datastores, queues)
  • System membership (componentOf)
  • PagerDuty service URL
  • JIRA project
  • Confluence space
  • MS Teams channel
  • Runbook URL
  • Dashboard URL

Datastore

  • Type: postgres, mysql, redis, mongodb, elasticsearch, cassandra, dynamodb, etc.
  • What services depend on this datastore?

Queue

  • Type: kafka, rabbitmq, sqs, kinesis, pubsub, etc.
  • Producer and consumer services?

API

  • Type: openapi, graphql, rest, grpc
  • OpenAPI spec file reference?
  • Implementing service?

System

  • Component services, datastores, queues
  • Domain/​product area

Required tags (HMH standards):

  • env: (production, staging, development)
  • service: (service name)
  • tier: (critical, high, medium, low)

Step 4: Generate YAML

Use the entity generator with collected data:

uv run scripts/​entity_generator.py --input collected_data.json --output .datadog/

Multi-entity support: For monorepos, generate multiple entities separated by --- in single file or separate files.

Step 5: Validate

Validate against official Datadog JSON schema:

uv run scripts/​schema_validator.py .datadog/​entity.datadog.yaml

Validation checks:

  • Required fields present (apiVersion, kind, metadata.name)
  • Valid enum values (lifecycle, tier, kind)
  • URL formats for links and integrations
  • Contact email format
  • Tag format (key:value)

Step 6: Merge & Output

If .datadog/​entity.datadog.yaml exists:

  • Parse existing definitions
  • Deep merge with new data (new values override, arrays extend)
  • Preserve custom extensions
  • Show diff for engineer approval

Output location: .datadog/​entity.datadog.yaml

Entity Schema Quick Reference

See references/​v3-schema.md for complete schema documentation.

Common Structure (all kinds)

apiVersion: v3
kind: service  # service | datastore | queue | api | system
metadata:
  name: my-service              # Required, unique identifier
  displayName: My Service       # Human-readable name
  namespace: default            # Optional, defaults to 'default'
  owner: team-name              # Primary owner team
  additionalOwners:             # Multi-ownership
    - name: sre-team
      type: operator
  description: Short description
  tags:
    - env:production
    - service:my-service
    - tier:critical
  contacts:
    - name: On-Call
      type: email
      contact: [email protected]
    - name: Team Channel
      type: microsoft-teams
      contact: https://teams.microsoft.com/​l/​channel/​...
  links:
    - name: Runbook
      type: runbook
      url: https://confluence.company.com/​runbook
    - name: Dashboard
      type: dashboard
      url: https://app.datadoghq.com/​dashboard/​xxx
    - name: Source Code
      type: repo
      provider: github
      url: https://github.com/​org/​repo
spec:
  lifecycle: production         # production | experimental | deprecated
  tier: critical                # critical | high | medium | low
  # ... kind-specific fields
integrations:
  pagerduty:
    serviceURL: https://company.pagerduty.com/​service-directory/​PXXXXXX
datadog:
  codeLocations:
    - repositoryURL: https://github.com/​org/​repo
      paths:
        - "src/​**"
  logs:
    - name: Error Logs
      query: "service:my-service status:error"
  events:
    - name: Deployments
      query: "source:kubernetes service:my-service"
extensions:
  company.com/​jira-project: PROJ
  company.com/​confluence-space: https://confluence.company.com/​space

Service-specific spec

spec:
  type: web                     # web | grpc | rest | graphql | worker
  languages:
    - python
    - go
  dependsOn:
    - service:auth-service
    - datastore:postgres-main
    - queue:events-kafka
  componentOf:
    - system:platform

Datastore-specific spec

spec:
  type: postgres                # postgres | mysql | redis | mongodb | etc.
  dependencyOf:                 # Services that depend on this
    - service:api-service

Queue-specific spec

spec:
  type: kafka                   # kafka | rabbitmq | sqs | kinesis
  componentOf:
    - system:messaging

System-specific spec

spec:
  components:
    - service:web-frontend
    - service:api-backend
    - datastore:main-db
    - queue:events

Integration URL Patterns

See references/​integration-patterns.md for complete patterns.

PagerDuty: https://<subdomain>.pagerduty.com/​service-directory/​P<alphanumeric>

JIRA: Extension field company.com/​jira-project: <PROJECT_KEY>

Confluence: Link with type: doc, provider: confluence

MS Teams: Contact with type: microsoft-teams, URL format: https://teams.microsoft.com/​l/​channel/​...

Snyk/​SonarQube/​BrowserStack/​Orca: Custom extensions field

Scripts Reference

ScriptPurpose
scripts/​project_analyzer.pyAnalyze project for metadata signals
scripts/​datadog_fetcher.pyFetch existing Datadog entities and context
scripts/​entity_generator.pyGenerate entity YAML from collected data
scripts/​schema_validator.pyValidate YAML against JSON schema

Confidence Thresholds

  • Auto-apply (≥90%): Directly include in YAML without confirmation
  • Confirm (70-89%): Present to engineer for confirmation
  • Ask (< 70%): Ask engineer to provide value

Interview Best Practices

  1. Present all auto-detected values first for batch confirmation
  2. Group related questions (e.g., all contacts together)
  3. Provide examples for complex fields (URLs, queries)
  4. Validate URLs and patterns in real-time
  5. Explain why each field matters for adoption
  6. Offer to skip optional fields with explicit acknowledgment

More DevOps & CI/CD skills

Project scaffolding, deployment configuration, and CI/CD setup for Google ADK agents.

6K 472.6K
View

Set up tracing, logging, and monitoring for deployed ADK agents across Cloud Trace, BigQuery, and third-party platforms.

6K 472.6K
View

Enterprise Azure infrastructure architect generating Bicep or Terraform from workload descriptions.

1.5K 454.3K
View
azure-kubernetes logo
DevOps & CI/CD

azure-kubernetes

Plan and configure production-ready Azure Kubernetes Service clusters with Day-0 and Day-1 best practices.

1.5K 447.1K
View

Raw mechanical interfaces fusing Swiss typographic print with military terminal aesthetics. Rigid grids, extreme type scale contrast, utilitarian color, analog degradation effects. For data-heavy dashboards, portfolios, or editorial sites that need to feel like declassified blueprints.

92.7K 354.9K
View
just-scrape logo
DevOps & CI/CD

just-scrape

Web search, scraping, extraction, crawling, and monitoring via ScrapeGraph AI CLI.

69 245K
View

Skill for working with Firebase Hosting (Classic). Use this when you want to deploy static web apps, Single Page Apps (SPAs), or simple microservices. Do NOT use for Firebase App Hosting.

462 159.7K
View

Deploy and manage web apps with Firebase App Hosting. Use this skill when deploying Next.js/Angular apps with backends.

462 159.1K
View
deploy-to-vercel logo
DevOps & CI/CD

deploy-to-vercel

Deploy applications and websites to Vercel. Use when the user requests deployment actions like "deploy my app", "deploy and give me the link", "push this live", or "create a preview deployment".

31.9K 146.6K
View
programmatic-seo logo
DevOps & CI/CD

programmatic-seo

Build SEO-optimized pages at scale using templates, data, and proven playbook patterns.

53.3K 140.1K
View

Design and build isolated, reusable Convex backend components with clear boundaries and app-facing wrappers.

63 123.5K
View

Deploy and manage projects on Vercel using token-based authentication. Use when working with Vercel CLI using access tokens rather than interactive login — e.g. "deploy to vercel", "set up vercel", "add environment variables to vercel".

31.9K 116.1K
View

Coding & apps AI tools

Opus Clip logo
Coding & apps

Opus Clip

Opus.ai: Revolutionize Your Web Experience

Free
View
I
Coding & apps

Imagica

Build a no-code AI app in minutes.

Freemium
View
E
Coding & apps

Emergent.sh

An IDE for code migration from legacy to modern frameworks through coding agents.

Freemium
View
Wonder Dynamics logo
Coding & apps

Wonder Dynamics

Automate CGI animation in live-action scenes

Paid
View
M
Coding & apps

Mixo

Launch a website in seconds with AI.

Paid
View
AI Code Convert logo
Coding & apps

AI Code Convert

Streamline Your Coding Experience with AI Code Helper

Free
View