Loading...
Loading...
Build and deploy a Coralogix dashboard for a given service from its logs, spans, metrics, and service specs. Discovers telemetry through the sibling `cx-metrics-query` / `cx-query-logs` / `cx-query-spans` skills, emits importable Coralogix JSON, verifies every PromQL and DataPrime query live through the `cx` CLI, and creates the dashboard via `cx dashboards create`. Use whenever the user asks to create, build, generate, or deploy a Coralogix dashboard, monitoring dashboard, or observability dashboard for a service, app, or pipeline.
npx skill4agent add coralogix/cx-cli cx-create-dashboardcxcx| Task | Skill |
|---|---|
| Write / understand a DataPrime query | |
| Write / understand a PromQL query, find a metric, list labels | |
| Run a DataPrime query against logs | |
| Run a DataPrime query against spans | |
| Choose the right signal (metrics / logs / traces) | |
Semantic field search ( | |
${__range}promqlQueryTypereferences/query-syntax.mdreferences/widget-templates.md| Command | Purpose |
|---|---|
| List all dashboards in the catalog |
| Get a dashboard definition (useful as a template) |
| List dashboard folders |
| Create a dashboard folder |
| Create a nested folder |
cx dashboards get <dashboard-id> -o json > dashboard.json
# Edit dashboard.json (change name, modify widgets, etc.)
cx dashboards create --from-file dashboard.jsonDashboard Progress:
- [ ] Phase 1: Discover telemetry & business meaning
- [ ] Phase 2: Gather dashboard specifications from user
- [ ] Phase 3: Draft internal dashboard plan (sections/rows/widgets)
- [ ] Phase 4: Generate the Coralogix JSON
- [ ] Phase 5: Live-verify every query through the cx CLI
- [ ] Phase 6: Self-verify structure against the checklist
- [ ] Phase 7: Deploy via `cx dashboards create`README.mdmain.*index.*cmd/main.gorequesterrorlatencydlqcx metrics search --name '*<keyword>*'cx metrics get-labels <metric>cx metrics searchprometheus_clientpromauto.NewCounter/Histogram/Gaugeprom-clientmetrics.py_sum_count_bucket$d.*cx search-fields "<description>" --dataset logscx logs "filter \$l.applicationname == '<app>'" --limit 5 -o json$m.severity$m.timestamp$l.applicationname$l.subsystemnamecx search-fields "<description>" --dataset spanscx spans "filter \$l.serviceName == '<svc>'" --limit 5 -o json$d.tags.error$d.http.status_codedlqDLQmeta.yamlvalues.yamlDeploymentDockerfilechart.yamlapplicationnamesubsystemnameprodstagingdevcx-telemetry-queryingAskQuestion${__range}tenant_idaccount_idsubsystem_nameregionenvdevstagingtestcollapsed: true## Dashboard: <Service> - <Purpose>
### Section 1: <Overview> (collapsed: false)
- Row 1: [widget type] <title> - <what it shows> - source: metrics|logs|spans
- Row 2: ...
### Section 2: <Deep dive> (collapsed: false)
...
### Section N: <Logs & errors> (collapsed: true)
...
### Top-level filters
- <label> (<source>)
### Assumptions / gaps
- ...collapsed: true| Signal | Widget type |
|---|---|
| Single headline number (count, % success, totals) | |
| Breakdown across ≤8 categories | |
| Change over time (rate, latency, count per bucket) | |
| Top-N tables, last errors, per-entity listings | |
references/widget-templates.md{
"id": "<21-char-nanoid>",
"name": "<Dashboard Name>",
"layout": { "sections": [ ... ] },
"variables": [],
"variablesV2": [],
"filters": [ ... ],
"relativeTimeFrame": "<seconds>s",
"annotations": [],
"off": {},
"actions": []
}sectionrowwidgetid"appearance": { "height": 19 }options.custom.namecollapsedcolor.predefined: "SECTION_PREDEFINED_COLOR_UNSPECIFIED"equalsvaluesnotEqualsreferences/widget-templates.md"172800s"references/query-syntax.mdcx-dataprimecx-metrics-querycxrelativeTimeFrame$RANGE48h172800s${__range}[$RANGE]${__range}$RANGEreferences/verification.md[${__range}][$__range][5m]promqlQueryTypePROM_QL_QUERY_TYPE_INSTANTlineChart$d.message$l.applicationnamecx-dataprimesource logssource spanscx logscx spansclamp_min(..., 1)_sum_count_bucketfiltersid.valuerowsoptions.customid.valueappearance.heightwidgetsid.valuedefinitiongaugepieChartlineChartdataTablethresholdType: "THRESHOLD_TYPE_ABSOLUTE"gaugefilters"<Service> - <Purpose>"collapsed: truecx dashboards createcx dashboards folders list -o json--foldercx dashboards create --from-file /tmp/cx-dashboard-<slug>.json --folder <id>requestIdreferences/deploy.md## Plan
<the approved Phase 3 plan>
## Verification
- PromQL queries verified: <N>/<N>
- DataPrime queries verified: <N>/<N>
## Deployed
- Dashboard: **<Name>**
- ID: `<id>`
- Folder: `<folder name or "root">`
- Profile: `<cx profile>`
The dashboard is live in Coralogix. Adjust filter values (e.g. `account_id`) after opening it.references/query-syntax.mdreferences/widget-templates.mdreferences/verification.mdreferences/deploy.mdcx-dataprimeskills/cx-dataprime/references/dataprime-reference.mdcx-metrics-queryskills/cx-metrics-query/references/promql-guidelines.mdcx dataprime listcx dataprime show <command>cx-observability-setupcx-incident-managementcx-telemetry-querying