zircote/.claude/datadog-entity-generator

Claude Code and agent skill by zircote/.claude

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

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.

Install

npx vskill@latest install zircote/.claude/datadog-entity-generator

SKILL.md

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:

bash
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):

bash
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:

bash
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:

bash
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)
yaml
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: oncall@company.com
- 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
yaml
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
yaml
spec:
type: postgres # postgres | mysql | redis | mongodb | etc.
dependencyOf: # Services that depend on this
- service:api-service
Queue-specific spec
yaml
spec:
type: kafka # kafka | rabbitmq | sqs | kinesis
componentOf:
- system:messaging
System-specific spec
yaml
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

Security

  • Security scanPassed, 95 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
17
Repository forks
3
7-day trend score
14

Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 29 Mar 2026, 7 months ago.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/zircote/.claude/datadog-entity-generator/badge)](https://verified-skill.com/skills/zircote/.claude/datadog-entity-generator)

Something wrong with this skill or its page? Tell us.