cx-service-catalog — Claude Code skill: query Coralogix service
A skill that lets the agent pull latency, error rate and resource metrics for services, databases, JVMs and Kubernetes pods from Coralogix Service Catalog.
npx skills add coralogix/cx-cli --skill cx-service-catalog -a claude-codeWhat cx-service-catalog does
The skill documents five cx service-catalog commands. entity-types shows which entity types your account actually has data for, schema returns the column and label ids for one type, entities lists known entities, data aggregates columns across every entity of a type, and entity-data drills into one named entity. Every command is read-only and supports -o json or -o toon.
The workflow runs in four steps: entity-types, then schema, then entities, then the data call. Each step feeds the next one, so skipping ahead usually wastes a request. Entity types accept short forms like service, k8s-pod or jvm-gc; case and hyphens do not matter, and an unknown value is rejected client-side before anything is sent. --column is required and repeatable, but columns belong to a single entity type — a column that works for service may not exist for k8s-pod. Re-check schema whenever you switch types.
--filter repeats across distinct labels only; multiple values for the same label go in one comma-separated flag. --limit, --sort-column and --sort-order apply to --aggregation table alone, and the CLI refuses that combination with timeseries up front instead of letting the backend drop the flags silently. A column-level error is not an empty result — treat a non-zero exit as something to investigate.
What it helps with
- check service latency for the last hour
- find Kubernetes pods using the most memory
- compare services by error rate
- see which entity types the account has data for
- chart service health over time
Example prompts for the agent
- list the services in the service catalog
- what entity types exist in this account?
- show me latency for checkout/api over the last 24 hours
How to install cx-service-catalog
1Skills CLI (Vercel)
npx skills add coralogix/cx-cli --skill cx-service-catalog -a claude-code2Manually: put the files in place
~/.claude/skills/cx-service-catalog/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/cx-service-catalog/
1Skills CLI (Vercel)
npx skills add coralogix/cx-cli --skill cx-service-catalog -a codex2Manually: put the files in place
.agents/skills/cx-service-catalog/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add coralogix/cx-cli --skill cx-service-catalog -a cursor2Manually: put the files in place
.cursor/skills/cx-service-catalog/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install coralogix/cx-cli cx-service-catalog2Manually: put the files in place
.github/skills/cx-service-catalog/SKILL.md1Skills CLI (Vercel)
npx skills add coralogix/cx-cli --skill cx-service-catalog -a gemini-cli2Platform CLI
gemini skills install https://github.com/coralogix/cx-cli --path skills/cx-service-catalogManually: put the files in place
.devin/skills/cx-service-catalog/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add coralogix/cx-cli --skill cx-service-catalog -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about cx-service-catalog
How do I install cx-service-catalog in Claude?
Run npx skills add coralogix/cx-cli --skill cx-service-catalog -a claude-code. The skill lands in ~/.claude/skills/cx-service-catalog/SKILL.md.
What does cx-service-catalog do?
It teaches the agent to query Coralogix Service Catalog through the cx CLI: discover entity types, read their schema, list entities, and pull aggregated or timeseries metric data.
Why does a data query fail on a column?
Column ids are per entity type. Run cx service-catalog schema <entity-type> first and use the ids it returns; the API rejects anything else.
Source text
SKILL.md · Apache-2.0
---
name: cx-service-catalog
description: >
Query Coralogix's Service Catalog (APM v2 entities) with the `cx service-catalog`
CLI — discover entity types, list known entities, check their schema, and pull
aggregated or timeseries data for services, databases, operations, JVMs, and
Kubernetes pods. Use when the user asks to "list services", "what entity types
exist", "show me service latency", "check error rate for a service",
"which pods are using the most memory", "database operation performance",
"JVM GC pauses", "service health over time", "compare services by latency",
"what columns are available for this entity type", "service catalog schema",
or wants to explore APM entities and their metrics.
metadata:
version: "0.1.0"
---
# Service Catalog Skill
Use this skill to discover and query **Service Catalog entities** — services,
databases, operations, database operations, JVMs, JVM GC, Kubernetes pods, and
transactions — and their columnar metrics (latency, error rate, health, resource
usage, etc.) via the v2 Service Catalog API.
## CLI Commands
| Command | Purpose | Key flags |
|---|---|---|
| `cx service-catalog entity-types` | List entity types this account has data for | - |
| `cx service-catalog schema <entity-type>` | Columns/labels schema for one entity type | - |
| `cx service-catalog entities <entity-type>` | Known entities of one type (e.g. service names) | - |
| `cx service-catalog data <entity-type>` | Aggregated column data across every entity of a type | `--start`, `--end`, `--column` (required, repeatable); `--group-by`, `--filter`, `--aggregation`, `--limit`, `--sort-column`, `--sort-order` |
| `cx service-catalog entity-data <entity-type> <entity-id>` | Column data for one named entity (drilldown) | `--start`, `--end`, `--column` (required, repeatable); `--group-by`, `--filter`, `--aggregation` |
- All commands are **read-only** and support `-o json` / `-o toon` for
structured output.
- **Entity type accepts short forms**: `service`, `database`, `operation`,
`database-operation`, `jvm`, `jvm-gc`, `k8s-pod`, `transaction` (case-insensitive,
hyphens or underscores). The full proto name (`ENTITY_TYPE_K8S_POD`) also works.
Unknown values are rejected client-side before any request is made.
- `--start`/`--end` accept `now`, `now-1h`-style relative expressions, or
RFC3339 timestamps.
- `--column` is **required** and repeatable — discover valid column ids with
`cx service-catalog schema <entity-type>` first; the API rejects unknown ones.
- `--filter label=value1,value2` is repeatable **across distinct labels only**
(filters AND together); combine multiple values for the same label with commas
rather than repeating the flag — repeating a label is rejected client-side.
- `--aggregation` is `table` (default behavior when combined with `--limit`/
`--sort-column`/`--sort-order`) or `timeseries`. **`--limit`, `--sort-column`,
and `--sort-order` only apply to `table`** — the backend silently ignores them
for `timeseries`, so the CLI rejects that combination up front rather than
sending a request whose flags are quietly dropped.
- `entity-data` percent-encodes the entity id for you — pass it as returned by
`entities` (e.g. `checkout/api`), quoted if it contains `/`.
## Inspection Workflow
Four steps, and only because each one supplies an input the next one requires:
`entity-types` gives valid `<entity-type>` values, `schema` gives valid
`--column` ids, `entities` gives the `entity-id` for a drilldown.
1. **Discover what entity types exist** — never guess, they vary by account:
```bash
cx service-catalog entity-types -o json
```
2. **Check the schema** for one entity type to find valid column ids and
filterable/groupable labels:
```bash
cx service-catalog schema service -o json
```
3. **List known entities** of that type (e.g. service names):
```bash
cx service-catalog entities service -o json
```
4. **Query data** — aggregated across all entities, or scoped to one. Column
ids, filter/group-by labels, and entity ids below are placeholders — always
substitute values returned by `schema`/`entities` for the entity type in
question, they vary by account and entity type:
```bash
cx service-catalog data <entity-type> --start now-1h --end now \
--column <column-id> --column <column-id> -o json
cx service-catalog entity-data <entity-type> <entity-id> --start now-1h --end now \
--column <column-id> -o json
```
## Examples
The commands below use `service` and `k8s-pod` for concreteness, but every
`<column-id>`, `<filterable-label>`, `<groupable-label>`, and `<entity-id>`
must come from that entity type's own `schema`/`entities` output — never
assume a column or label from one entity type exists on another.
### Top 5 entities by a metric in the last hour
```bash
cx service-catalog schema service -o json # discover column ids first
cx service-catalog data service --start now-1h --end now \
--column <column-id> --aggregation table \
--sort-column <column-id> --sort-order desc --limit 5 -o json
```
### Filter to one label value
```bash
cx service-catalog schema service -o json # discover filterable_labels first
cx service-catalog data service --start now-1h --end now \
--column <column-id> --column <column-id> \
--filter <filterable-label>=<value> -o json
```
### Group by a label
```bash
cx service-catalog schema service -o json # discover groupable_labels first
cx service-catalog data service --start now-1h --end now \
--column <column-id> --group-by <groupable-label> -o json
```
### Kubernetes pod resource saturation
```bash
cx service-catalog schema k8s-pod -o json # discover column ids first
cx service-catalog data k8s-pod --start now-1h --end now \
--column <column-id> --column <column-id> --column <column-id> -o json
```
### Latency over time for one entity
```bash
cx service-catalog entities service -o json # discover entity ids first
cx service-catalog entity-data service <entity-id> --start now-24h --end now \
--column <column-id> --aggregation timeseries -o json
```
### Just the rows
```bash
# Table responses live under .rows; timeseries under .series
cx service-catalog data service --start now-1h --end now \
--column <column-id> -o json | jq '.rows'
```
## Key Principles
- **Discover before querying** — `entity-types` and `schema` are cheap and
answer "what's valid here" before spending a `data`/`entity-data` call on a
guess.
- **`--column` values are per-entity-type** — a column valid for `service` may
not exist for `k8s-pod`; always re-check `schema` when switching entity types.
- **Malformed responses are errors, not silent empty results** — a column that
is neither a value nor an error (or both) fails loudly rather than producing
a partial or empty row, so a non-zero exit means investigate, not "no data".
- **A column-level error is not a command failure** — an individual column can
come back as `{"error": "..."}` inside an otherwise successful row (e.g. a
query timeout for just that column); check per-column before assuming the
whole request failed.
- **`table` vs `timeseries` are mutually exclusive result shapes** — `table`
responses are flat rows suitable for `-o json | jq '.rows'`; `timeseries`
responses nest datapoints per series and are best consumed as raw JSON rather
than forced into a table.
- **Use `-o json` with `jq`** for filtering; use `-o toon` for token-efficient
output in agent contexts.
- **Multi-profile fan-out** works on every subcommand — repeat `-p <profile>` to
compare the same entity type/data across accounts; rows and series are tagged
with `profile` when more than one is given.
## Related Skills
- **`cx-infra`** — infrastructure resource health (hosts, containers) is a
distinct concept from Service Catalog entity health; use `cx-infra` for
host/instance-level monitoring and this skill for application/service-level
APM entities.
- **`cx-telemetry-querying`** — once a service or pod name surfaces from this
skill's commands, pivot to raw telemetry: `cx logs "filter $l.subsystemname ==
'<service>'"` or `cx search-fields "<name>" -s value` to find related log/span
fields. Correlate a latency or error spike with the underlying logs/spans.
- **`cx-alerts`** — `cx alerts list --name "<service-name>"` finds alert
definitions matching a service surfaced by this skill.
- **`cx-dashboards`** — `cx dashboards search "<service-name> ..."` finds
dashboards built around a service found here.
© coralogix · Apache-2.0 · coralogix/cx-cli