Skip to content
Development
Skill

/manage-dashboards

Manages existing Grafana dashboards via gcx: list, search, get, audit panels, queries, datasources, and variables; apply a finished manifest; delete; versions and restore; pull/push/validate files; folders; PNG snapshots. Not for new dashboards, panels, or variables (use

From plugin
gcx
81024 skills1 agent

Claude Code

$ npx -y skills add grafana/gcx --skill manage-dashboards --agent claude-code

SKILL.md

manage-dashboards.SKILL.md
name: manage-dashboards
description: >-
  Manages existing Grafana dashboards via gcx: list, search, get, audit panels,
  queries, datasources, and variables; apply a finished manifest; delete;
  versions and restore; pull/push/validate files; folders; PNG snapshots. Not
  for new dashboards, panels, or variables (use create-dashboard).

Manage Dashboards

Use `gcx` dedicated commands first. Only use `gcx api` when a dedicated command cannot perform the requested operation.

Routing

| User intent | Use | |-------------|-----| | Build a new dashboard from an idea, service, SLO, incident, or set of metrics | `create-dashboard` | | Redesign layout, choose panels/queries, or visually iterate dashboard quality | `create-dashboard` | | Generate a Go builder skeleton only | `generate-resource-stubs` | | Convert an existing live dashboard to Go code | `import-dashboards` | | List, search, inspect, delete, restore, pull, push, validate, promote, or snapshot existing dashboards | this skill | | Configure gcx/auth first | `setup-gcx` |

Preflight for Mutations

Before any create/update/delete/push/restore operation:

gcx config current-context
gcx config check

Use `--context <name>` when the user named a target environment. Do not switch the global context unless the user asked for it.

For writes, read current state first and preserve folder/manager intent:

gcx dashboards get <dashboard-name> -o json
gcx resources get folders -o json

Manager boundary: gcx protects resources managed by another tool. If a push fails because of `grafana.app/managed-by`, stop and ask/confirm before using `--include-managed`.

Typical Update Workflow

1. Preflight — `gcx config check`, then fetch current state with `gcx dashboards get <name> -o json` 2. Edit — write the modified YAML locally 3. Validate and push — `gcx resources validate -p <path> -o json`, `gcx resources push -p <path> --dry-run`, `gcx resources push -p <path>` 4. Verify — `gcx dashboards get <name> -o json`

Operation Reference

Use JSON/YAML for programmatic work and table/wide output for human summaries.

| Operation | Command pattern | |-----------|-----------------| | List datasources | `gcx datasources list -o json` | | Prometheus metric names | `gcx datasources prometheus labels -d <uid> --label __name__` | | Prometheus label values | `gcx datasources prometheus labels -d <uid> --label <label>` | | Prometheus metric metadata | `gcx datasources prometheus metadata -d <uid>` | | Loki label names | `gcx datasources loki labels -d <uid>` | | Loki label values | `gcx datasources loki labels -d <uid> --label <label>` | | Tempo attribute names | `gcx datasources tempo labels -d <uid>` | | Tempo attribute values | `gcx datasources tempo labels -d <uid> -l resource.service.name --llm -o json` | | Pyroscope profile types | `gcx datasources pyroscope list-profile-types -d <uid>` | | Pyroscope label values | `gcx datasources pyroscope labels -d <uid> --label service_name` | | Other datasource types | Check `gcx datasources <type> --help` for dedicated subcommands before using `gcx api` | | List dashboards | `gcx dashboards list -o wide` | | Search by text/tag/folder | `gcx dashboards search "<query>" --tag <tag> --folder <folder-name> -o json` | | Get one dashboard | `gcx dashboards get <dashboard-name> -o json` | | Create from finished file | `gcx dashboards create -f <dashboard.yaml>` | | Update from finished file | `gcx dashboards update <dashboard-name> -f <dashboard.yaml>` | | Delete with confirmation | `gcx dashboards delete <dashboard-name>` | | Delete non-interactively | `gcx dashboards delete <dashboard-name> --force` | | Version history | `gcx dashboards list-versions <dashboard-name>` | | Restore version | `gcx dashboards versions restore <dashboard-name> <version> --message "<why>"` | | Pull dashboards/folders | `gcx resources pull dashboards folders -p <dir> -o yaml` | | Pull one dashboard | `gcx resources pull dashboards/<dashboard-name> -p <dir> -o yaml` | | Validate local files | `gcx resources validate -p <path> -o json` | | Preview push | `gcx resources push -p <path> --dry-run` | | Push local files | `gcx resources push -p <path>` | | Delete by selector | `gcx resources delete dashboards/<dashboard-name>` | | Edit in `$EDITOR` | `gcx resources edit dashboards/<dashboard-name> -o yaml` | | List resource kinds | `gcx resources list-types` |

`<dashboard-name>` is the dashboard resource name (`metadata.name`), which is also the value accepted by `gcx dashboards snapshot`.

Pull/Push Notes

  • Pull output directories may include API version/group in their path. Use the

paths printed by gcx; do not assume a fixed `dashboards/` directory shape.

  • When a directory contains folders and dashboards, gcx pushes folders first.
  • Use `--on-error abort` when later resources depend on earlier ones and partial

progress would be confusing.

  • Dry-run before writing to production unless the user explicitly opts out.

Snapshots

GCX_AGENT_MODE=true gcx dashboards snapshot <dashboard-name> --output-dir ./snapshots --since 6h
# With variables:
GCX_AGENT_MODE=true gcx dashboards snapshot <dashboard-name> --output-dir ./snapshots --since 6h --var cluster=prod

Read the returned `file_path` PNG and summarize what you see; do not just report the path.

Troubleshooting: `plugin not found`/renderer 500 = image renderer unavailable; wrong data = inspect template variables and rerun with `--var`; auth errors = check `gcx config check`.

Version Restore Safety

Restore performs a read of historical content and writes a new current revision. Always include a message and verify afterwards:

gcx dashboards list-versions <dashboard-name> --limit 10
gcx dashboards versions restore <dashboard-name> <version> \
  --message "Restore known-good dashboard after <reason>"
gcx dashboards get <dashboard-name> -o json

A conflict or 409 means someone changed the dashboard concurrently. Re-fetch, r

Read more
@grafana
Ships withgcx

gcx is Grafana in your terminal and your agentic coding environment. With gcx you don't guess, but check the actual data.

81024 skills1 agent
Get the whole plugin

Stars on GitHub

Momentum

stars in total
810
Star history of grafana/gcx on GitHub, a chart by star-history.com

Other skills on gcx.

agento11y-instrument

agento11y-instrument

Instruments a developer's own LLM app or repairs missing generations and empty Performance charts in Grafana Agent Observability.…

@grafana@grafanaInstall Skill
agento11y-prod-setup

agento11y-prod-setup

Sets up production evaluation for a deployed AI agent in Agent Observability: online eval rules and guards (redact PII, block…

@grafana@grafanaInstall Skill
agento11y-test-starter

agento11y-test-starter

Builds a starter offline test suite for an AI agent before it ships: test cases from its code, scoring advice, and a runner stub.…

@grafana@grafanaInstall Skill
agento11y

agento11y

Inspects and manages Grafana Agent Observability resources via gcx: conversations, generations, experiments, evaluators, rules,…

@grafana@grafanaInstall Skill
create-dashboard

create-dashboard

Designs and creates Grafana dashboards with gcx, with `gcx dashboards snapshot` as a visual feedback loop. Use to build a new…

@grafana@grafanaInstall Skill
debug-with-grafana

debug-with-grafana

Investigates application problems and incidents with Grafana metrics, logs, and traces via gcx: errors, latency, regressions,…

@grafana@grafanaInstall Skill

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills11d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc13d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react2d252k
@facebook@facebookInstall Skill

Questions about manage-dashboards.

Which coding agents can use manage-dashboards?
manage-dashboards installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.