install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/testing-security/dd-pup" ~/.claude/skills/diegosouzapw-awesome-omni-skill-dd-pup && rm -rf "$T"
manifest:
skills/testing-security/dd-pup/SKILL.mdsource content
pup (Datadog CLI)
Pup CLI for Datadog API operations. Supports OAuth2 and API key auth.
Quick Reference
| Task | Command |
|---|---|
| Search error logs | |
| List monitors | |
| Mute a monitor | |
| Find slow traces | |
| List active incidents | |
| Create incident | |
| Query metrics | |
| List hosts | |
| Check SLOs | |
| Who's on call | |
| Security signals | |
| Check auth | |
| Refresh token | |
Prerequisites
# Install pup go install github.com/datadog-labs/pup@latest export PATH="$HOME/go/bin:$PATH"
Auth
pup auth login # OAuth2 browser flow (recommended) pup auth status # Check token validity pup auth refresh # Refresh expired token (no browser) pup auth logout # Clear credentials
⚠️ Tokens expire (~1 hour). If a command fails with 401/403 mid-conversation:
pup auth refresh # Try refresh first pup auth login # If refresh fails, full re-auth
Headless/CI (no browser)
# Use env vars or: export DD_API_KEY=your-api-key export DD_APP_KEY=your-app-key export DD_SITE=datadoghq.com # or datadoghq.eu, etc.
Command Reference
Monitors
pup monitors list --limit 10 pup monitors list --tags "env:prod" pup monitors get --id 12345 pup monitors mute --id 12345 --duration 1h pup monitors unmute --id 12345 pup monitors create --name "High CPU" --type "metric alert" \ --query "avg(last_5m):avg:system.cpu.user{*} > 80" \ --message "CPU high @slack-ops"
Logs
pup logs search --query "status:error" --duration 1h pup logs search --query "service:payment-api" --duration 1h --limit 100 pup logs search --query "@http.status_code:5*" --duration 24h pup logs search --query "env:prod level:error" --duration 1h --json
Metrics
pup metrics query --query "avg:system.cpu.user{*}" --duration 1h pup metrics query --query "sum:trace.express.request.hits{service:api}" --duration 1h pup metrics list --filter "system.*"
APM / Traces
pup apm services list pup apm traces list --service my-service --duration 1h pup apm traces list --service api --min-duration 500ms --duration 1h pup apm traces list --service api --status error --duration 1h pup apm traces get abc123def456
Incidents
pup incidents list --status active pup incidents list --status resolved --duration 7d pup incidents create --title "API Degradation" --severity SEV-2 pup incidents update --id abc-123 --status stable pup incidents resolve --id abc-123
Dashboards
pup dashboards list pup dashboards list --tags "team:platform" pup dashboards get --id abc-123 pup dashboards create --title "My Dashboard" --description "..." --widgets '[...]'
SLOs
pup slos list pup slos get --id slo-123 pup slos history --id slo-123 --duration 30d
Synthetics
pup synthetics list pup synthetics results --test-id abc-123 pup synthetics trigger --test-id abc-123
On-Call
pup on-call teams list pup on-call schedules list pup on-call who --team platform-team
Hosts / Infrastructure
pup hosts list --limit 50 pup hosts list --filter "env:prod" pup hosts mute --hostname web-01 --duration 1h pup hosts get --hostname web-01
Events
pup events list --duration 24h pup events list --tags "source:deploy" pup events post --title "Deploy started" --text "v1.2.3" --tags "env:prod"
Downtimes
pup downtime list pup downtime create --scope "env:staging" --duration 2h --message "Maintenance" pup downtime cancel --id 12345
Users / Teams
pup users list pup teams list
Security
pup security signals list --duration 24h pup security signals list --severity critical
Service Catalog
pup services list pup services get --name payment-api
Notebooks
pup notebooks list pup notebooks get --id 12345
Workflows
pup workflows list pup workflows trigger --id workflow-123 --input '{"key": "value"}'
Subcommand Discovery
pup --help # List all commands pup <command> --help # Command-specific help
Error Handling
| Error | Cause | Fix |
|---|---|---|
| 401 Unauthorized | Token expired | |
| 403 Forbidden | Missing scope | Check app key permissions |
| 404 Not Found | Wrong ID/resource | Verify resource exists |
| Rate limited | Too many requests | Add delays between calls |
Install
go install github.com/DataDog/pup@latest
Verify Installation
# Check if pup is in PATH which pup # If not found, check if it was installed ls ~/go/bin/pup
PATH Troubleshooting
If
pup is installed but which pup returns nothing, Go's bin directory isn't in your PATH.
Check where pup is:
ls ~/go/bin/pup # Standard location ls $GOPATH/bin/pup # If GOPATH is set ls $GOBIN/pup # If GOBIN is set
Add to PATH (pick your shell):
For zsh (macOS default):
# Add this line to ~/.zshrc export PATH="$HOME/go/bin:$PATH" # Then reload source ~/.zshrc
For bash:
# Add this line to ~/.bashrc or ~/.bash_profile export PATH="$HOME/go/bin:$PATH" # Then reload source ~/.bashrc
For fish:
# Add this line to ~/.config/fish/config.fish fish_add_path $HOME/go/bin # Or set permanently set -Ux fish_user_paths $HOME/go/bin $fish_user_paths # Then reload source ~/.config/fish/config.fish
Verify:
which pup # Should show path pup --version # Should show version
Alternative: Full Path
If you don't want to modify PATH, use the full path:
~/go/bin/pup auth login ~/go/bin/pup monitors list
Or create an alias:
alias pup="$HOME/go/bin/pup"
Sites
| Site | value |
|---|---|
| US1 (default) | |
| US3 | |
| US5 | |
| EU1 | |
| AP1 | |
| US1-FED | |