# Skin App

> This instance's skin is a Datadog infra-health dashboard (monitors, error-log patterns, per-app CPU/memory) with one-click agent-assisted fixes. Use this to understand what the dashboard shows, which APIs back it, and how "Fix" conversations originate.

- Skill: `openhands/skin-app` (Agent Skill, multi-file: 6 files)
- Install (CLI): `npx skillmds@latest add openhands/skin-app`
- Raw SKILL.md: https://api.skillmd.com/api/skills/openhands/skin-app/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra, AI & ML
- Author: openhands (https://skillmd.com/u/openhands)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/openhands/skin-app

---


# This instance's skin: Datadog Monitor

This Agent Canvas instance exists to watch Datadog infrastructure health.
Its skin (the default UI tab, code at `~/workspace/skin`) is a hash-routed
multi-page dashboard served by `server.js` from `public/index.html`:

- **Overview** (`#/`) — portal landing page, one live headline stat per area.
- **Monitors** (`#/monitors`, green) — alert/warn/healthy counters; alerting
  monitors as prominent cards. **Fix** starts an agent conversation to
  investigate and remediate that alert.
- **Error logs** (`#/errors`, amber) — last 4 hours, two views:
  - **Patterns** — errors clustered by normalized message template
    (ids/numbers/paths masked), with hit counts and a raw sample.
  - **By service** — error volume ranked per service.
- **Memory / CPU** (`#/resources`, blue) — per-app radial gauges of usage vs
  limits, most-constrained first. **Audit** starts a right-sizing agent run.

## Data flow

`server.js` proxies the Datadog v1/v2 APIs — the browser never holds
credentials:

- `GET /skin/api/monitors` — monitor states (v1 monitors API)
- `GET /skin/api/logs` / `GET /skin/api/patterns` — error logs & clusters
  (v2 logs search)
- `GET /skin/api/resources` — CPU/memory metrics vs limits (v1 query)
- `POST /skin/api/agent` — starts an OpenHands conversation for the
  Fix/Investigate/Audit buttons and returns a deep link to its transcript

Secrets are fetched from the host agent server at request time:
`DATADOG_TOKEN` (API key, read access suffices), `DATADOG_APP_KEY`
(application key). The Datadog site may be overridden with a
`DATADOG_SITE` secret (default `datadoghq.com`; ddpat personal tokens
usually mean a regional site like `us5.datadoghq.com`).

## Working on it

When users report Datadog data looking wrong here, check these endpoints
first, then the Datadog API auth (401 with a `ddpat_…` token usually means
wrong site). To change the skin itself, see the `skin` skill: edit
`~/workspace/skin`, then `POST /skin-api/restart`.

