skills/prometheus/SKILL.md
Query and interact with Prometheus HTTP API for monitoring data. Use when Claude needs to query Prometheus metrics, execute PromQL queries, retrieve targets/alerts/rules status, access metadata about series/labels, manage TSDB operations, or troubleshoot monitoring infrastructure. Supports instant queries, range queries, metadata endpoints, admin APIs, and alerting information.
npx skillsauth add julianobarbosa/claude-code-skills prometheusInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Query Prometheus monitoring systems via HTTP API at /api/v1.
curl 'http://<prometheus>:9090/api/v1/query?query=<promql>&time=<timestamp>'
curl 'http://<prometheus>:9090/api/v1/query_range?query=<promql>&start=<ts>&end=<ts>&step=<duration>'
All responses return JSON:
{
"status": "success" | "error",
"data": <result>,
"errorType": "<string>",
"error": "<string>",
"warnings": ["<string>"]
}
HTTP codes: 400 (bad params), 422 (expression error), 503 (timeout).
| Endpoint | Purpose | Key Parameters |
|----------|---------|----------------|
| /api/v1/query | Instant query | query, time, timeout, limit |
| /api/v1/query_range | Range query | query, start, end, step, timeout, limit |
| /api/v1/format_query | Format PromQL | query |
| /api/v1/series | Find series by labels | match[], start, end, limit |
| /api/v1/labels | List label names | start, end, match[], limit |
| /api/v1/label/<name>/values | Label values | start, end, match[], limit |
| /api/v1/query_exemplars | Query exemplars | query, start, end |
| Endpoint | Purpose |
|----------|---------|
| /api/v1/targets | Target discovery status (state=active\|dropped\|any) |
| /api/v1/targets/metadata | Metric metadata from targets |
| /api/v1/metadata | All metric metadata |
| /api/v1/rules | Alerting/recording rules |
| /api/v1/alerts | Active alerts |
| /api/v1/alertmanagers | Alertmanager discovery |
| /api/v1/status/config | Current config YAML |
| /api/v1/status/flags | CLI flags |
| /api/v1/status/runtimeinfo | Runtime info |
| /api/v1/status/buildinfo | Build info |
| /api/v1/status/tsdb | TSDB cardinality stats |
| /api/v1/status/walreplay | WAL replay progress |
--web.enable-admin-api)| Endpoint | Method | Purpose |
|----------|--------|---------|
| /api/v1/admin/tsdb/snapshot | POST | Create TSDB snapshot |
| /api/v1/admin/tsdb/delete_series | POST | Delete series (match[], start, end) |
| /api/v1/admin/tsdb/clean_tombstones | POST | Clean deleted data |
# Rate of counter over 5m
rate(http_requests_total[5m])
# Sum by label
sum by (job) (rate(http_requests_total[5m]))
# Percentile from histogram
histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m]))
# Filter by label
up{job="prometheus", instance=~".*:9090"}
# Increase over time
increase(http_requests_total[1h])
# Average over time range
avg_over_time(process_cpu_seconds_total[5m])
[{"metric": {...}, "value": [timestamp, "value"]}][{"metric": {...}, "values": [[ts, "val"], ...]}][timestamp, "value"][timestamp, "string"]Query script: scripts/prom_query.py
# Instant query
python scripts/prom_query.py http://localhost:9090 'up'
# Range query
python scripts/prom_query.py http://localhost:9090 'rate(http_requests_total[5m])' \
--start '2024-01-01T00:00:00Z' --end '2024-01-01T01:00:00Z' --step '1m'
# Output: table, json, csv
python scripts/prom_query.py http://localhost:9090 'up' --format table
Health check: scripts/prom_health.py
python scripts/prom_health.py http://localhost:9090
For complete API documentation: references/api_reference.md
For PromQL functions: references/promql_functions.md
rate() over a counter that resets too often: math is correct but meaningless — use increase() and divide by interval explicitly when counters don't survive scrapes.up{} per-target gauge: a flaky target shows up=0 but doesn't trigger alerts unless for is met. Set short for for liveness, long for noise.match[] parameter requires ALL matchers to match — an empty matcher returns no series, which looks like a working query with no data.absent().keep action silently drops all targets — verify with /api/v1/targets after each config change.testing
Brief description of what this skill does. Include specific triggers - when should Claude use this skill? Example triggers, file types, or keywords that indicate this skill applies.
tools
Manage and troubleshoot PATH configuration in zsh. Use when adding tools to PATH (bun, nvm, Python venv, cargo, go), diagnosing "command not found" errors, validating PATH entries, or organizing shell configuration in .zshrc and .zshrc.local files.
tools
Zabbix monitoring system automation via API and Python. Use when: (1) Managing hosts, templates, items, triggers, or host groups, (2) Automating monitoring configuration, (3) Sending data via Zabbix trapper/sender, (4) Querying historical data or events, (5) Bulk operations on Zabbix objects, (6) Maintenance window management, (7) User/permission management
development
Operate YouTube Music via natural language. Search songs, artists, albums, playlists, lyrics, charts, recommendations, and control playback. Browse personal library, manage playlists, rate tracks, and inspect account info. Use this skill whenever the user asks about YouTube Music, wants to play music, manage playlists, search by song or artist name, inspect lyrics, or control playback.