Skip to content
Development
Skill

/dd-code-generation

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

From plugin
pup
97511 skills49 agents
Install
$ npx -y skills add DataDog/pup --skill dd-code-generation --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/dd-code-generation

Context preview

The summary Claude sees to decide when to auto-load this skill.

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

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
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).

Get the whole plugin