Happy Infra Metrics and Grafana
slopus/happy
Queries live Prometheus metrics and manages Grafana dashboards as code for Happy's infrastructure, using the grafanactl CLI and the Grafana datasource proxy API.
Designs and deploys Axiom dashboards through the API, choosing chart types and writing APL or metrics queries, with templates and migration notes for Splunk and Grafana.
$ npx skills add openclaw/clawhub --skill building-dashboards -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install openclaw/clawhub building-dashboards --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/openclaw/clawhub.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/building-dashboards .claude/skills/building-dashboards && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "building-dashboards" agent skill from https://github.com/openclaw/clawhub/tree/main/.agents/skills/building-dashboards into .claude/skills/building-dashboards/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "building-dashboards", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/openclaw/clawhub/tree/main/.agents/skills/building-dashboardsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add openclaw/clawhub --skill building-dashboards -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install openclaw/clawhub building-dashboards --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/openclaw/clawhub.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/building-dashboards .agents/skills/building-dashboards && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "building-dashboards" agent skill from https://github.com/openclaw/clawhub/tree/main/.agents/skills/building-dashboards into .agents/skills/building-dashboards/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "building-dashboards", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add openclaw/clawhub --skill building-dashboards -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install openclaw/clawhub building-dashboards --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/openclaw/clawhub.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/building-dashboards .cursor/skills/building-dashboards && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "building-dashboards" agent skill from https://github.com/openclaw/clawhub/tree/main/.agents/skills/building-dashboards into .cursor/skills/building-dashboards/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "building-dashboards", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/openclaw/clawhub.git --path .agents/skills/building-dashboards--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add openclaw/clawhub --skill building-dashboards -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install openclaw/clawhub building-dashboards --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/openclaw/clawhub.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/building-dashboards .gemini/skills/building-dashboards && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "building-dashboards" agent skill from https://github.com/openclaw/clawhub/tree/main/.agents/skills/building-dashboards into .gemini/skills/building-dashboards/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "building-dashboards", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install openclaw/clawhub building-dashboardsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add openclaw/clawhub --skill building-dashboards -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/openclaw/clawhub.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/building-dashboards .github/skills/building-dashboards && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "building-dashboards" agent skill from https://github.com/openclaw/clawhub/tree/main/.agents/skills/building-dashboards into .github/skills/building-dashboards/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "building-dashboards", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add openclaw/clawhub --skill building-dashboards -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install openclaw/clawhub building-dashboards --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/openclaw/clawhub.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/building-dashboards .opencode/skills/building-dashboards && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "building-dashboards" agent skill from https://github.com/openclaw/clawhub/tree/main/.agents/skills/building-dashboards into .opencode/skills/building-dashboards/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "building-dashboards", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
building-dashboardsDesigns and deploys Axiom dashboards through the API, choosing chart types and writing APL or metrics queries, with templates and migration notes for Splunk and Grafana.
The skill guides an agent through building an Axiom dashboard from a vague request, a template, an existing Splunk or Grafana dashboard, or an exploration of live data. It starts with intake questions about the audience, such as on-call triage, team health or executive reporting, and about scope. It then checks the dataset kind to choose between the APL path for events and logs and the metrics path that uses MPL.
Its design rules favor one question per panel, rates and percentiles over averages, and an overview-to-drilldown-to-evidence flow. Fields have to be discovered from the schema rather than guessed, and a panel that cannot be computed is replaced with a Note explaining the blocker instead of showing a different quantity. The folder includes helper scripts, reference notes on chart config, layout recipes, SmartFilters and PromQL-to-MPL translation, and JSON templates such as api-health and service-overview.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit d044664. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/, which the agent can run.
From the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
axiom.coFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Axiom Dashboard Builder loads about 4.9k tokens when it runs. Until then it costs about 63 tokens; SKILL.md has 2,064 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from openclaw/clawhub at commit d044664, republished under its MIT licence (© openclaw). 2,064 words, ~4,947 tokens.
.claude/skills/building-dashboards/SKILL.md (or your agent's skills folder). This skill also uses 50 other files; get the full folder from GitHub.Note documenting the blocker. Never substitute a different quantity, even disclosed. See Compute or Defer.| Starting from | Workflow |
|---|---|
| Vague description | Intake → check dataset kind → design blueprint (APL or MPL) → queries per panel → deploy |
| Template | Pick template → customize dataset/service/env → deploy |
| Splunk dashboard | Extract SPL → translate via spl-to-apl → map to chart types → deploy |
| Grafana dashboard | Project canonical panel spec (expr, legendFormat, unit, title, description) → translate PromQL → map chart types → deploy. See reference/grafana-migration.md. |
| Exploration | Use axiom-sre to discover schema/signals → productize into panels |
Audience & decision
Scope
Dataset kind. Run scripts/metrics/datasets <deploy> and check kind.
otel:metrics:v1 → metrics dataset, follow the Metrics path.Never run
getschemaon a metrics dataset. It returns 0 rows without error.
APL path: discover fields with ['dataset'] | where _time between (ago(1h) .. now()) | getschema. Continue to steps 4–5.
Metrics path:
scripts/metrics/metrics-spec <deploy> <dataset> — required before any MPL query.scripts/metrics/metrics-info <deploy> <dataset> metrics | tags | tags <tag> values for discovery.--start 7 days ago (sparse metrics).find-metrics <value> searches tag values, not metric names — use it only with a known entity name.Golden signals (APL path)
Drilldown dimensions (APL path)
Pick the blueprint matching the dataset kind.
Single numbers that answer "is it broken right now?"
Time-based patterns that answer "what changed?"
Top-N analysis that answers "where should I look?"
Raw events that answer "what exactly happened?"
Use align to $__interval using … for bucketing — $__interval is supplied by the dashboard runtime. Hard-coded windows over- or under-resolve. Validate every pipeline with scripts/metrics/mpl-validate-chart; both it and chart-add --mpl reject inline time ranges ([1h..]).
Exception: for sparse metrics where $__interval rounds to empty buckets, a fixed wider window (e.g. 1h) is acceptable; document why on the chart.
Current values — "what's the state right now?"
group using avg (gauges) or group using last (counters).unit via metrics-info … metrics <m> info and pass it to chart-add --unit. Ratio metrics (0–1) need | map * 100 in MPL before --unit "%".Trends over time — "what changed?"
align to $__interval using avg|sum|last.--name ("P95 Latency (ms)", "Memory (MiB)"); scale magnitudes in MPL (| map / 1048576 for bytes → MiB).Per-entity detail — "where should I look?"
Boolean/state metrics — answer "what is on/off/active?"
align to $__interval using last.Each chart needs a unique kebab-case id (error-rate, p95-latency); every layout i must match one. Pass the same id to chart-add --id and layout-pack <id>:…. dashboard-assemble cross-checks before emit.
Pass a friendly unit string to chart-add --unit ("%", "s", "ms", "B", "req/s"). The script picks unit enum + customUnits suffix per chart type. customUnits is a label, not a formatter — scale magnitudes in MPL (| map / 1048576 for bytes → MiB, | map / 1000000 for bytes → MB, | map * 100 for 0–1 ratio → percent). For metrics charts, read the source unit from metrics-info … metrics <m> info and pass it through. Internals (advanced options the agent may merge with jq): reference/chart-config.md.
Each panel either computes the requested quantity, or it's replaced by a Note documenting the blocker. Substituting a different quantity is never acceptable — disclaimers don't reach whoever acts on the number.
Defer template (use chart-add --type Note):
**Deferred — blocked by:** <one-line reason>.
**Original spec:** <what the panel should compute, dimensions, unit>.
**To unblock:** <pointer to the fix>.Common blockers: MPL parser limits, missing tag with no reverse-tag equivalent, missing metric with no OTel rename match. Full rationale: reference/design-playbook.md § Substituting a Different Quantity.
| Type | When | Key constraint |
|---|---|---|
| Statistic | Single KPI, current value | Query must return one row. |
| TimeSeries | Trends over time, percentile overlays | bin_auto(_time); percentiles_array() for multi-percentile. |
| Table | Top-N lists, breakdowns | Bound with top N; control columns via project. |
| Pie | Share-of-total for ≤6 categories | Aggregate to ≤6 slices; never high-cardinality. |
| LogStream | Raw event inspection | take 100–500; project-keep to relevant fields; filter hard. |
| Heatmap | Distribution / latency density | summarize histogram(field, buckets) by bin_auto(_time). |
| Scatter Plot | Correlate two metrics per group | summarize avg(x), avg(y) by group. |
| SmartFilter | Interactive filter bar | Each panel query needs declare query_parameters. See reference/smartfilter.md. |
| Monitor List | Monitor status display | No APL — select monitors in UI. |
| Note | Markdown context, headers, runbook links | chart-add --type Note --text "<md>". |
Per-type APL recipes: reference/chart-cookbook.md.
chart-add covers the common path (type, id, name, query, dataset, unit, sparkline). For options it doesn't expose — aggChartOpts variants on TimeSeries, tableSettings.columns on Table/LogStream, hideHeader, etc. — start from a chart-add output and merge the extra fields with jq. See reference/chart-config.md for the full option set, and the rejected-field list before merging anything bespoke.
Dashboard chart queries inherit time from the picker — omit _time filters. Ad-hoc queries (Axiom Query tab, axiom-sre) need an explicit where _time between (ago(1h) .. now()).
Use bin_auto(_time) — it adjusts to the dashboard time window. Manual bin(_time, …) is only justified for non-standard cases (e.g. matching an upstream batch interval); document why.
Bound summarize … by … with top N or a filter. Unbounded grouping on high-cardinality fields (user_id, trace_id) blows up.
| summarize count() by route | top 10 by count_ // bounded
| summarize count() by user_id // unbounded — avoidFields with dots need bracket notation:
| where ['kubernetes.pod.name'] == "frontend"Fields with dots IN the name (not hierarchy) need escaping:
| where ['kubernetes.labels.app\\.kubernetes\\.io/name'] == "frontend"Traffic, error-rate, latency-percentile, and other golden-signal APL recipes: reference/chart-cookbook.md.
layout-pack packs charts row-major into the 12-column grid using per-type defaults (Statistic 3×3, TimeSeries 6×4, Table 6×5, LogStream 12×6, Note 12×2). Override with id:WxH when needed. Section blueprints: reference/layout-recipes.md. Naming and panel-ordering conventions: reference/design-playbook.md.
dashboard-assemble --refresh oncall|team|exec (60/300/900s) or pass an explicit integer (≥60). Short refresh + long time range = expensive queries; pick the longer end for exec/weekly boards.
API tokens create shared dashboards only (owner: "X-AXIOM-EVERYONE"); private dashboards aren't supported. Per-user data visibility is still enforced by dataset permissions.
?t_qr=24h (quick range), ?t_ts=...&t_te=... (custom), ?t_against=-1d (comparison)
Tools, prerequisites, and ~/.axiom.toml configuration: see README.md. Verify with scripts/setup.
| Script | Usage |
|---|---|
scripts/chart-add --type <T> --id <id> --name <n> [--apl <q> | --mpl <q> --dataset <d>] [--unit <u>] | Emit a single chart JSON to stdout. Splits APL vs MPL; MPL queries are checked for inline time ranges; unit fields applied per chart type. |
scripts/layout-pack <id>:<Type|WxH> ... | Emit a layout JSON array to stdout. Row-major into a 12-column grid; type names map to default sizes. |
scripts/dashboard-assemble --name … --datasets … --layout F.json [opts] CHART_FILES… | Compose a complete dashboard JSON from chart files + layout. Owns the envelope (owner, schemaVersion, qr- prefix, refreshTime validation, id cross-checks). |
scripts/dashboard-list <deploy> | List all dashboards |
scripts/dashboard-get <deploy> <id> | Fetch dashboard JSON |
scripts/dashboard-validate <file> | Validate JSON structure |
scripts/dashboard-create <deploy> <file> | Create dashboard |
scripts/dashboard-update <deploy> <id> <file> | Update (needs version) |
scripts/dashboard-chart-patch <deploy> <id> <chart-id> <patch-file> (--version <version> | --overwrite) | Patch one chart |
scripts/dashboard-copy <deploy> <id> | Clone dashboard |
scripts/dashboard-link <deploy> <id> | Get shareable URL |
scripts/dashboard-delete <deploy> <id> | Delete (with confirm) |
scripts/axiom-api <deploy> <method> <path> | Dashboard/app API only (rewrites to app.*). For data/metrics endpoints use scripts/metrics/axiom-api |
scripts/metrics/axiom-api <deploy> <method> <path> | Data/metrics API (supports AXIOM_URL_OVERRIDE for edge routing) |
scripts/metrics/datasets <deploy> | List datasets with kind and edge deployment |
scripts/metrics/metrics-spec <deploy> <dataset> | Fetch MPL query specification |
scripts/metrics/metrics-info <deploy> <dataset> ... | Discover metrics, tags, and values |
scripts/metrics/metrics-query <deploy> <mpl> <start> <end> | Execute a metrics query (raw — no $__interval injection) |
scripts/metrics/mpl-validate-chart <deploy> '<MPL>' [start] [end] [--interval D] | Validate a chart MPL pipeline. Auto-injects param $__interval: Duration; and -p __interval=…; rejects inline time ranges. Use this in place of raw metrics-query when authoring chart queries. |
The two
axiom-apiscripts are not interchangeable.scripts/axiom-apiis for the dashboard app API;scripts/metrics/axiom-apiis for data/metrics endpoints and edge routing. Wrong one → 404.
Use scripts/dashboard-chart-patch when changing one existing chart and the dashboard layout, metadata, and other charts should remain untouched. It calls PATCH /v2/dashboards/uid/{uid}/charts/{chartId} with a JSON Merge Patch under the chart request field.
Patch files contain only the chart fields to change:
{
"name": "Error Rate (5m)",
"query": { "apl": "['logs'] | summarize errors=countif(status >= 500)" },
"config": { "stale": null }
}null removes an existing field. Nested objects merge recursively. If id is present in the patch, it must match the <chart-id> path argument. The server validates the resulting full dashboard before saving.
Use --version <version> for optimistic concurrency after fetching the dashboard with dashboard-get. Use --overwrite only when last-write-wins behavior is intended. Continue using dashboard-update for layout changes, multi-chart edits, dashboard metadata, owner, refresh interval, or time window updates.
chart-add, layout-pack, and dashboard-assemble own the JSON shape. Each chart lives in its own temp file; nothing chart-shaped re-enters the agent's context.
axiom-sre / getschema for events; metrics-spec + metrics-info for metrics).axiom-sre with an explicit time filter; validate MPL via scripts/metrics/mpl-validate-chart.chart-add --type … --apl '<APL>' or chart-add --type … --mpl '<MPL>' --dataset <name> per chart, redirected to its own file.layout-pack <id>:<Type|WxH> … for the layout (ids in display order).dashboard-assemble --name … --datasets … --layout LAYOUT CHART_FILES… to compose.dashboard-validate then dashboard-create (or dashboard-update).dashboard-link for the URL — never hand-construct.timechart → TimeSeries, stats → Statistic/Table). See reference/splunk-migration.md.getschema, baseline exploration.scripts/metrics/.Compose with chart-add + layout-pack + dashboard-assemble. Pre-built templates remain under reference/templates/ (blank.json, service-overview.json, service-overview-with-filters.json, api-health.json) for legacy use; dashboard-from-template instantiates them but assumes specific field names (service, status, route, duration_ms) and needs sed-fixing. Prefer composition for new work.
| Problem | Cause | Solution |
|---|---|---|
getschema returns 0 rows | Dataset is otel:metrics:v1 | Use scripts/metrics/metrics-info for metrics discovery. |
| Metrics discovery returns empty | Sparse metrics outside the 24h default window | Retry with --start 7 days ago. |
| 404 from metrics API calls | Used scripts/axiom-api (dashboard) instead of scripts/metrics/axiom-api | Use scripts/metrics/axiom-api for /v1/query/*, /v1/datasets. |
Statistic shows 1 instead of 100% for a 0–1 ratio | Percent enum doesn't auto-multiply | | map * 100 in MPL, then chart-add --unit "%". |
| OTel histogram chart shows nonsense | Histogram aligned as a scalar | Use bucket … using interpolate_cumulative_histogram (or _delta per temporality). See promql-to-mpl.md § Histogram translation. |
| Grafana migration filters/groups on the wrong subset | Read expr without description, or vice versa | Project all five panel fields before authoring; see reference/grafana-migration.md. |
| PromQL metric name not found | Skipped OTel rename rules | Drop _total, decompose histograms, normalise units; validate with metrics-info. Labels need reverse-tag discovery. See grafana-migration.md § Name Mapping. |
| MPL chart aggregates across a dimension PromQL filtered/grouped on | Dropped a selector or by(...) during translation | Every {label=…} → where; every by(…) → group by. See reference/promql-to-mpl.md. |
| Panel shipped a different quantity than asked | Substituted instead of deferring | Replace with a Note documenting the blocker. See Compute or Defer. |
| 403 "creating private dashboards" | API tokens only create shared dashboards | Leave owner as dashboard-assemble's default (X-AXIOM-EVERYONE). |
reference/chart-config.md — All chart configuration options (JSON)reference/metrics-mpl.md — Metrics/MPL chart contract and discovery scriptsreference/smartfilter.md — SmartFilter/FilterBar full configurationreference/chart-cookbook.md — APL patterns per chart typereference/layout-recipes.md — Grid layouts and section blueprintsreference/splunk-migration.md — Splunk panel → Axiom mappingreference/grafana-migration.md — Grafana panel → Axiom mapping (canonical-spec projection, PromQL→MPL pointers, OTel rename rules)reference/promql-to-mpl.md — PromQL → MPL translation rules (selectors, groupings, rate, histograms, ratios, reverse-tag discovery)reference/design-playbook.md — Decision-first design principlesreference/templates/ — Ready-to-use dashboard JSON filesFor APL syntax: https://axiom.co/docs/apl/introduction
© openclaw, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 50 other files (scripts) in .agents/skills/building-dashboards of openclaw/clawhub.
Open the folder on GitHubat commit d044664
Axiom Dashboard Builder next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Axiom Dashboard Builder this skillopenclaw/clawhub | 9.5k | — | ~4.9k | Automated safety check: Pass | MIT | |
| Happy Infra Metrics and Grafanaslopus/happy | 24k | — | ~2k | Automated safety check: Notes | MIT | |
| OpenTelemetry Pipeline Metrics Speccomet-ml/opik | 22k | — | ~3.2k | Automated safety check: Pass | Apache-2.0 | |
| Archestra Dev Observabilityarchestra-ai/archestra | 4.4k | — | ~1.2k | Automated safety check: Pass | Custom licence | |
| Frontmcp Observabilityagentfront/frontmcp | 146 | — | ~4.6k | Automated safety check: Pass | Apache-2.0 | |
| Monitoring Observabilityahmedasmar/devops-claude-skills | 203 | — | ~3.9k | Automated safety check: Pass | None |
slopus/happy
Queries live Prometheus metrics and manages Grafana dashboards as code for Happy's infrastructure, using the grafanactl CLI and the Grafana datasource proxy API.
comet-ml/opik
Specifies how to instrument an opik-backend pipeline with per-stage OpenTelemetry metrics for throughput, latency, errors and queue delay by workspace.
archestra-ai/archestra
A skill your agent uses when changing Archestra tracing, metrics, OpenTelemetry, Tempo, Grafana, Prometheus, LLM/MCP spans, observability labels, or local observability setup.
agentfront/frontmcp
A skill your agent uses when adding tracing, structured logging, metrics, or monitoring to a FrontMCP server.
ahmedasmar/devops-claude-skills
Monitoring and observability strategy, implementation, and troubleshooting.
grafana/agento11y
Run any Python LLM agent as an Agent Observability experiment using the public agento11y.experiments package: define a test suite, run an existing agent through typed trials, bind or record…
openclaw/clawhub
Creates and manages Axiom monitors and notifiers end to end through the v2 API, with scripts for each CRUD operation and a recommended create-validate-tune workflow.
openclaw/clawhub
Finds unused data in Axiom by analyzing query patterns, then deploys a cost dashboard and ingest monitors to keep spend under the contract limit.
openclaw/clawhub
Explores and queries OpenTelemetry metrics in Axiom MetricsDB, listing datasets, metrics and tags first and picking the right aggregation for each metric's type.
openclaw/clawhub
Investigates incidents and production problems with hypothesis-driven debugging, queries Axiom observability data when available, and keeps secrets out of commands and output.
openclaw/clawhub
Scaffolds evaluation suites for the Axiom AI SDK: eval files, scorers, flag schemas and axiom.config.ts, generated from plain descriptions of an AI capability.
openclaw/clawhub
Drafts, previews, sends and records email for an existing ClawHub content rights case through the admin CLI, with a dry run and your sign-off before anything goes out.
Categories
Designs and deploys Axiom dashboards through the API, choosing chart types and writing APL or metrics queries, with templates and migration notes for Splunk and Grafana. The skill guides an agent through building an Axiom dashboard from a vague request, a template, an existing Splunk or Grafana dashboard, or an exploration of live data. It starts with intake questions about the audience, such as on-call triage, team health or executive reporting, and about scope.
Axiom Dashboard Builder fits situations like: creating an Axiom dashboard from a plain-language description; migrating a Splunk or Grafana dashboard to Axiom; adding SmartFilters or adjusting chart options on a dashboard; turning exploratory queries into an on-call overview.
Run `npx skills add openclaw/clawhub --skill building-dashboards -a claude-code`. Or copy the skill folder (.agents/skills/building-dashboards in openclaw/clawhub) into .claude/skills/building-dashboards in your project. Claude Code loads it when a task matches its description.
Run `npx skills add openclaw/clawhub --skill building-dashboards -a codex`. Or copy the skill folder (.agents/skills/building-dashboards in openclaw/clawhub) into .agents/skills/building-dashboards in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add openclaw/clawhub --skill building-dashboards -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/building-dashboards, .gemini/skills/building-dashboards, .github/skills/building-dashboards and .opencode/skills/building-dashboards in your project.
SKILL.md names no scripts, command-line tools or credentials: Axiom Dashboard Builder is instructions for the agent only. Our summary lists: Access to the Axiom API for the target deployment.
SKILL.md names 1 domain. As links in the text: axiom.co. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Axiom Dashboard Builder is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.9k tokens (SKILL.md is roughly 20k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Axiom Dashboard Builder: Happy Infra Metrics and Grafana (slopus/happy, 24k stars), OpenTelemetry Pipeline Metrics Spec (comet-ml/opik, 22k stars), Archestra Dev Observability (archestra-ai/archestra, 4.4k stars) and Frontmcp Observability (agentfront/frontmcp, 146 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
openclaw (a GitHub organization) maintains it in openclaw/clawhub, which has 9,500 GitHub stars. The repository holds 55 skills in this directory. The repository was last updated on October 8, 2026.
Source: openclaw/clawhub on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.