grafana-scenes

Build Grafana plugin scene pages with reactive drilldown-capable dashboards.

1|Updated May 21, 2026
One-click install
npx skills add https://github.com/1k-off/umbraco-observability-playground --skill grafana-scenes-1k-off
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: grafana-scenes
Source: https://github.com/1k-off/umbraco-observability-playground/tree/main/.agents/skills/grafana-scenes
Command: npx skills add https://github.com/1k-off/umbraco-observability-playground --skill grafana-scenes-1k-off

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

grafana-scenes helps developers build Grafana plugin UI pages that react to query results, variables, and time range changes without manually wiring complex state management.

Core Features & Use Cases

  • Declarative Scene Graph Construction: Compose SceneAppSceneAppPageEmbeddedScene with layouts, panels, variables, and time range propagation.
  • Data-Driven Panels and Query Runners: Use SceneQueryRunner (optionally with SceneDataTransformer) to power table/timeseries/stat panels from live data sources.
  • Interactive Drilldowns and Sub-Views: Configure drilldown navigation (click-through detail pages) and tabbed sub-pages using route patterns and URL params.

Quick Start

Create a new scene page by implementing an EmbeddedScene that defines a SceneVariableSet, a SceneQueryRunner, and a PanelBuilders.table() panel, then register it via a SceneAppPage with a wildcard routePath for navigation.

Frequently Asked Questions about grafana-scenes

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I build a reactive Grafana plugin page that responds to variable changes?

Build a reactive Grafana plugin page by composing SceneApp, SceneAppPage, and EmbeddedScene structures. This scene graph automatically propagates variable, time range, and query result changes to table, timeseries, or stat panels without manual state management wiring.

How do I configure drilldown navigation and tabbed sub-pages in a Grafana plugin?

Configure drilldown navigation and tabbed sub-pages in a Grafana plugin by defining wildcard routePath patterns on SceneAppPage components. These route patterns capture URL parameters to drive click-through detail page navigation and switch between distinct embedded scene views.

How do I reference variables within Grafana scene query runners?

Reference variables within Grafana scene query runners by accessing SceneVariableSet ancestors through the scene hierarchy. This allows SceneQueryRunner components to interpolate QueryVariable values directly into data source queries for dynamic filtering.

Can I use SceneDataTransformer to modify query results before rendering Grafana panels?

Yes, you can chain SceneDataTransformer with SceneQueryRunner to transform query results before rendering Grafana panels. This allows you to manipulate the data structure output and feed the processed data directly into table, timeseries, or stat panel visualizations.

What is the correct way to load scenes lazily in a Grafana plugin?

Load scenes lazily in a Grafana plugin by returning scene objects from a getScene function. This function must return the EmbeddedScene instance without causing side effects, ensuring the scene graph initializes cleanly upon route navigation.

Does building Grafana plugin scenes require TypeScript?

TypeScript is the primary language for building Grafana plugin scenes, providing type safety for SceneApp, SceneQueryRunner, and SceneVariableSet declarations. The reactive scene architecture relies on strongly typed components to ensure query and variable wiring integrity.