Agent Skill · SigNoz

signoz-explaining-dashboards

Explain what an existing SigNoz dashboard shows in plain operational language — the panels, queries, variables, and what to watch for on each. Make sure to use this skill whenever the user asks "explain this dashboard", "what does my [X] dashboard show", "walk me through the panels", "what should I watch for on this dashboard", or "help me understand this dashboard", or otherwise asks for an interpretation of a dashboard's contents — even if they don't say "explain" explicitly. Also use it when someone is onboarding to a service and wants to understand what its existing observability looks like.

Provider: SigNoz Path in repo: plugins/signoz/skills/signoz-explaining-dashboards/SKILL.md

Skill body

Dashboard Explain

Prerequisites

This skill calls SigNoz MCP server tools (signoz:signoz_get_dashboard, signoz:signoz_list_dashboards). Before running the workflow, confirm the signoz:signoz_* tools are available. If they are not, the SigNoz MCP server is not installed or configured — run signoz-mcp-setup first to initialize or repair the MCP connection. Do not guess at a dashboard’s contents from its title alone.

When to use

Use this skill when the user asks to:

Do NOT use when:

Instructions

Step 1: Identify the target dashboard

Determine which dashboard the user wants explained. If the user provides a dashboard name, UUID, or it is clear from context (e.g., an @mention or auto-context providing a dashboard resource), use that.

If the target dashboard is ambiguous:

  1. Call signoz:signoz_list_dashboards to list existing dashboards. Paginate through all pages — check pagination.hasMore in the response. If hasMore is true, call again with offset set to pagination.nextOffset and repeat until all pages are exhausted. Never stop at the first page.
  2. Present matching candidates to the user and ask which one to explain.

Step 2: Fetch the full dashboard configuration

Call signoz:signoz_get_dashboard with the dashboard UUID. This is mandatory — you need the complete JSON to explain the dashboard accurately. Never guess based on the title alone.

Examine the response to understand:

Step 3: Build the explanation

Structure your explanation in this order:

1. Overview — One paragraph summarizing the dashboard’s purpose, what it monitors, and what data sources it draws from (metrics, traces, logs). Mention the tags if they provide useful context.

2. Variables and filters — Explain each variable:

3. Panel-by-panel walkthrough — Group panels by their row sections using the panelMap structure (row widget titles are the section headers). If the dashboard has no rows (empty panelMap), walk through panels in layout order (by y then x position) and organize by logical theme. For each panel:

For panels with complex queries:

4. Dashboard health observations — After the walkthrough, note any structural issues you spotted:

5. Coverage gaps — Based on what the dashboard actually monitors, note significant observability areas that are absent. Only mention gaps that are directly related to the technology or domain the dashboard covers — do not speculate about unrelated areas. Frame as suggestions: “You may want to consider adding panels for X to cover Y.”

Step 4: Offer next steps

Surface up to 3 follow-up intents based on what the explanation surfaced — things like running a specific panel’s underlying query, filling a coverage gap, or wiring an alert for an actionable threshold the user has not yet alerted on. Use your judgment; do not pad to 3.

Skip follow-ups when the user was clearly just onboarding to the dashboard (“what is this?”) and showed no further intent. No chips beat wrong chips.

Guardrails

Examples

User: “Explain my PostgreSQL dashboard”

Agent:

  1. Calls signoz:signoz_list_dashboards (paginates all pages) — finds “PostgreSQL Overview” dashboard with UUID abc-123.
  2. Calls signoz:signoz_get_dashboard with UUID abc-123 — gets full configuration.
  3. Provides structured explanation:
    • Overview: “This dashboard monitors PostgreSQL database health across connections, query performance, buffer cache efficiency, and replication. It uses metrics from the OpenTelemetry PostgreSQL receiver.”
    • Variables: “Two variables — host_name (DYNAMIC, filters by host.name) and database (DYNAMIC, filters by postgresql.database.name). Both support multi-select.”
    • Panels by section: Walks through each row section, explaining every panel’s metric, aggregation, and what to watch for.
    • Health observations: “The ‘Connection Count’ panel has no threshold configured — consider adding a line at 80% of your max_connections.”
    • Coverage gaps: “No panels for vacuum/autovacuum health or lock contention. Consider adding these if you manage write-heavy workloads.”
  4. Offers: “Want me to run any panel queries to check for data, or add the suggested panels?”

User: “What does each panel on this dashboard show?” (with dashboard context provided via @mention or auto-context)

Agent:

  1. Extracts dashboard UUID from the provided context.
  2. Calls signoz:signoz_get_dashboard — gets full configuration.
  3. Provides a focused panel-by-panel walkthrough grouped by row sections, explaining what each panel shows and what to watch for.
  4. Skips the health/gaps sections unless something notable stands out, since the user asked specifically about panels.

User: “Help me understand this LLM monitoring dashboard — I’m new to it”

Agent:

  1. Identifies the dashboard, fetches full config.
  2. Provides a beginner-friendly explanation with more context per panel:
    • Explains what the metrics mean (e.g., “Token usage measures how many tokens your LLM calls consume, which directly impacts cost”)
    • Explains what the variables control and recommends starting with the “ALL” option to see the full picture before filtering
    • Highlights the most important panels to watch daily vs. those useful only during debugging
  3. Offers to set up alerts on critical panels.