Skip to content

/dd-code-generation

Use pup CLI for immediate Datadog operations or generate code for integration into applications

From plugin
pup
1k12 skills50 agents

Claude Code

$ npx -y skills add DataDog/pup --skill dd-code-generation --agent claude-code

SKILL.md

dd-code-generation.SKILL.md
description: Use pup CLI for immediate Datadog operations or generate code for integration into applications
tags: [pup, cli, code-generation, typescript, python, java, go, rust]

Datadog Integration Skill

This skill helps users interact with Datadog through two complementary approaches: 1. **Immediate execution** using the `pup` CLI tool 2. **Code generation** for application integration using Datadog API clients

When to Use This Skill

Use this skill when the user:

  • Wants to query Datadog data (logs, traces, metrics, etc.)
  • Needs to configure Datadog (monitors, dashboards, SLOs, etc.)
  • Asks to "generate code" for a Datadog operation
  • Wants to integrate Datadog operations into their application
  • Needs examples of using Datadog API clients in a specific language

Pup CLI Tool

The `pup` CLI is a command-line wrapper for Datadog APIs written in Rust. It provides:

  • OAuth2 authentication (preferred) or API key authentication
  • 28 command groups covering 33+ API domains
  • JSON, YAML, and table output formats
  • 200+ subcommands for comprehensive Datadog operations

Pup Authentication

# OAuth2 (preferred)
pup auth login

# API Keys (fallback)
export DD_API_KEY="your-api-key"
export DD_APP_KEY="your-app-key"
export DD_SITE="datadoghq.com"

Pup Command Structure

pup <domain> <action> [options]
pup <domain> <subgroup> <action> [options]

# Examples
pup monitors list --tags="env:prod"
pup logs search --query="status:error" --from="1h"
pup metrics query --query="avg:system.cpu.user{*}" --from="1h"

Supported Operations

Core Observability

  • **Metrics**: Query, list, search, submit metrics
  • **Logs**: Search and aggregate log data
  • **Traces**: Query APM traces and spans
  • **Events**: List and search events
  • **RUM**: Real user monitoring data

Monitoring & Alerting

  • **Monitors**: Full CRUD operations
  • **Dashboards**: Create, list, get, delete
  • **SLOs**: Service level objectives management
  • **Synthetics**: Synthetic test management
  • **Downtimes**: Monitor downtime management
  • **Notebooks**: Investigation notebooks

Security & Compliance

  • **Security Monitoring**: Rules, signals, findings
  • **Vulnerabilities**: Security vulnerability scanning
  • **Static Analysis**: Code security analysis
  • **Audit Logs**: Organizational audit trail
  • **Data Governance**: Sensitive data scanning

Infrastructure & Cloud

  • **Infrastructure**: Host inventory and metrics
  • **Tags**: Resource tagging
  • **Cloud Integrations**: AWS, GCP, Azure

Incident & Operations

  • **Incidents**: Incident management
  • **On-Call**: On-call team management
  • **Error Tracking**: Application error tracking
  • **Service Catalog**: Service registry
  • **Scorecards**: Service quality metrics

Organization & Access

  • **Users**: User and role management
  • **Organizations**: Org settings
  • **API Keys**: API key management

See `pup --help` for complete command reference.

Usage Patterns

Pattern 1: Quick Query (Use Pup Directly)

When users want immediate results, execute pup commands:

# Query metrics
pup metrics query --query="avg:system.cpu.user{*}" --from="1h" --to="now"

# Search logs
pup logs search --query="status:error service:api" --from="30m"

# List monitors
pup monitors list --tags="team:backend"

# Get dashboard
pup dashboards get abc-123-def

Pattern 2: Code Generation (For Application Integration)

When users want to integrate into their application, provide code examples using official Datadog API clients.

TypeScript Example (using @datadog/datadog-api-client)

import { client, v2 } from '@datadog/datadog-api-client';

// Configure authentication
const configuration = client.createConfiguration({
  authMethods: {
    apiKeyAuth: process.env.DD_API_KEY || '',
    appKeyAuth: process.env.DD_APP_KEY || '',
  },
});

// Query metrics
async function queryMetrics() {
  const apiInstance = new v2.MetricsApi(configuration);

  try {
    const params: v2.MetricsApiQueryTimeseriesDataRequest = {
      body: {
        data: {
          type: 'timeseries_request',
          attributes: {
            formulas: [{
              formula: 'query1'
            }],
            queries: [{
              name: 'query1',
              dataSource: 'metrics',
              query: 'avg:system.cpu.user{*}'
            }],
            from: Date.now() - 3600000, // 1 hour ago
            to: Date.now()
          }
        }
      }
    };

    const result = await apiInstance.queryTimeseriesData(params);
    console.log(JSON.stringify(result, null, 2));
  } catch (error) {
    console.error('Error:', error);
  }
}

queryMetrics();

**Installation**: `npm install @datadog/datadog-api-client`

Python Example (using datadog-api-client)

#!/usr/bin/env python3
import os
from datetime import datetime, timedelta
from datadog_api_client import ApiClient, Configuration
from datadog_api_client.v2.api.metrics_api import MetricsApi
from datadog_api_client.v2.model.timeseries_formula_request import TimeseriesFormulaRequest
from datadog_api_client.v2.model.timeseries_formula_query_request import TimeseriesFormulaQueryRequest
from datadog_api_client.v2.model.timeseries_formula_request_attributes import TimeseriesFormulaRequestAttributes
from datadog_api_client.v2.model.timeseries_formula_request_type import TimeseriesFormulaRequestType

def configure_datadog():
    configuration = Configuration()
    configuration.api_key['apiKeyAuth'] = os.getenv('DD_API_KEY')
    configuration.api_key['appKeyAuth'] = os.getenv('DD_APP_KEY')
    configuration.server_variables['site'] = os.getenv('DD_SITE', 'datadoghq.com')
    return configuration

def query_metrics():
    configuration = configure_datadog()

    with ApiClient(configuration) as api_client:
        api_instance = MetricsApi(api_client)

        # Query parameters
        now = int(datetime.now().timestamp())
        one_hour_ago = int((datetime.now() - timedelta(hours=1)).
Read more
@datadog
Ships withpup

Every AI agent needs a loyal companion. Meet Pup — the CLI that gives your agents full access to Datadog's observability platform (because even autonomous agents need good tooling, not just tricks).

Stars on GitHub

Momentum

stars in total
1.0k
Star history of DataDog/pup on GitHub, a chart by star-history.com

Other skills on pup.

dd-apm
Auto-invoked

dd-apm

APM - traces, services, dependencies, performance analysis.

@datadog@datadogInstall Skill
dd-debugger
Auto-invoked

dd-debugger

Live Debugger - inspect runtime argument/variable values in production by placing log probes on methods. Use when asked what…

@datadog@datadogInstall Skill
dd-docs
Auto-invoked

dd-docs

Datadog docs lookup using docs.datadoghq.com/llms.txt and linked Markdown pages.

@datadog@datadogInstall Skill
dd-file-issue
Auto-invoked

dd-file-issue

File GitHub issues to the right repository (pup CLI or plugin)

@datadog@datadogInstall Skill
dd-idp
Auto-invoked

dd-idp

Find, filter, count, and connect software, teams, engineering work and delivery, infrastructure, and operational or security…

@datadog@datadogInstall Skill
dd-logs
Auto-invoked

dd-logs

Log management - search, pipelines, archives, and cost control.

@datadog@datadogInstall Skill

More skills from other plugins.

agentdb-advanced

agentdb-advanced

Master advanced AgentDB features including QUIC synchronization, multi-database management, custom distance metrics, hybrid…

ruview10d102k
@ruvnet@ruvnetInstall Skill
install

install

Kubeshark installation and deployment skill. Use this skill whenever the user wants to install Kubeshark, deploy Kubeshark to a…

@kubeshark@kubesharkInstall Skill
scan

scan

Scan a project with sentrux to get structural health grades (A-F) across 14 dimensions including coupling, cycles, cohesion, dead…

sentrux7mo3.3k
@sentrux@sentruxInstall Skill
phone-input

phone-input

Call the user on the phone for real-time voice conversations. Use this when you need input, want to report on completed work, or…

callme7mo2.7k
@zeframlou@zeframlouInstall Skill

Questions about dd-code-generation.

Which coding agents can use dd-code-generation?
dd-code-generation installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.