grafana-plugin-scaffolding
Skill16 starsChanged 7 months agoMITView on GitHub
Scaffold and automate Grafana plugin projects using @grafana/create-plugin. Use when creating panel plugins, data source plugins, app plugins, or backend plugins. Handles project scaffolding, Docker dev environment setup, and plugin configuration.
- Installs packages
In this repository23 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- cloudflare-vpc-servicesSkill
- code-reviewerSkill
- commit-helperSkill
- esphome-box3-builderSkill
- esphome-config-helperSkill
- frigate-configuratorSkill
- grafana-billingSkill
- ha-addonSkill
- ha-apiSkill
- ha-automationSkill
- ha-dashboardSkill
- ha-energySkill
- ha-integrationSkill
- ha-voiceSkill
- kubernetes-healthSkill
- kubernetes-operationsSkill
- linearSkill
- tauri-v2Skill
- typescript-v6Skill
- vitest-v4Skill
- vite-v8Skill
The file
Show its rules and text
We split this skill into the rules it gives an agent
17 rules. About 0 are common, 8 are distinctive, and 9 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈8
Distinctive · estimate
This author's own choices. Worth a look.
9
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 17
Before scaffolding, verify these tools are installed:
- Distinctive: line 30
If prerequisites are missing, guide the user to install them:
- Very specific: line 36
Use the official @grafana/create-plugin tool:
- Distinctive: line 82
No manual rebuild-restart cycle needed
- Distinctive: line 101
Search for your plugin name
- Distinctive: line 102
Verify it appears and can be added to dashboards
- Very specific: line 163
Update plugin.json includes for navigation
- Distinctive: line 164
Add new pages as React components
- Distinctive: line 215
Test Early: Run tests frequently during development
- Very specific: line 217
SDK Updates: Keep @grafana/data, @grafana/ui, @grafana/runtime versions aligned
- Very specific: line 222
Check plugin.json has correct id field
- Distinctive: line 223
Verify Docker volume mounts correctly
- Very specific: line 224
Ensure npm run dev completed without errors
- Very specific: line 227
Run mage -v to rebuild Go code
- Very specific: line 228
Check plugin_start_linux_* or gpx_* binaries exist in dist/
- Very specific: line 229
Verify plugin.json has "backend": true
- Very specific: line 234
Check Grafana logs: docker compose logs grafana
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Grafana Plugin Scaffolding Skill
Automate Grafana plugin project creation using the official @grafana/create-plugin scaffolder. This skill handles project scaffolding, development environment setup, and initial configuration for all plugin types.
Supported Grafana Version: v12.x+ only
Instructions
Step 1: Verify Prerequisites
Before scaffolding, verify these tools are installed:
# Check Node.js (v18+ required)
node --version
# Check npm
npm --version
# Check Docker (optional, for local development)
docker --versionIf prerequisites are missing, guide the user to install them:
- Node.js: https://nodejs.org/
- Docker Desktop: https://www.docker.com/products/docker-desktop/
Step 2: Scaffold the Plugin
Use the official @grafana/create-plugin tool:
# Interactive scaffolding (recommended)
npx @grafana/create-plugin@latest
# The tool will prompt for:
# - Plugin type (panel, datasource, app, scenesapp)
# - Organization name (e.g., "myorg")
# - Plugin name (e.g., "my-panel")
# - Include backend? (y/n)Step 3: Navigate and Install Dependencies
# Navigate to the new plugin directory
cd <orgName>-<pluginName>-<pluginType>
# Install frontend dependencies
npm install
# Install backend dependencies (if backend plugin)
go mod tidyStep 4: Start Development Environment
Option A: Docker with Hot-Reload (Recommended)
The scaffolder generates a docker-compose.yaml. For enhanced development with file watching, use the template from templates/docker-compose.yaml which includes Docker Compose develop features.
# Start Grafana with file watching (Docker Compose v2.22.0+)
docker compose watch
# Or standard start without watching
docker compose up -d
# Access Grafana at http://localhost:3000
# Login: admin / adminWith docker compose watch:
- Frontend changes in
dist/sync automatically (no restart) - Backend binary changes (
gpx_*) trigger container restart - No manual rebuild-restart cycle needed
Option B: Manual
# Build and watch frontend
npm run dev
# Build backend (if applicable)
mage -v
# Configure Grafana to load unsigned plugins
# Add to grafana.ini: plugins.allow_loading_unsigned_plugins = <plugin-id>Step 5: Verify Plugin Installation
- Open http://localhost:3000
- Navigate to Administration > Plugins
- Search for your plugin name
- Verify it appears and can be added to dashboards
Plugin Type Workflows
Panel Plugin
npx @grafana/create-plugin@latest
# Select: panel
# Enter: organization name
# Enter: plugin name
# Backend: No (panels don't need backend)Post-scaffolding:
- Edit
src/components/SimplePanel.tsxfor visualization logic - Edit
src/types.tsfor panel options interface - Edit
src/module.tsfor option configuration
Data Source Plugin (Frontend Only)
npx @grafana/create-plugin@latest
# Select: datasource
# Enter: organization name
# Enter: plugin name
# Backend: NoPost-scaffolding:
- Edit
src/datasource.tsfor query logic - Edit
src/ConfigEditor.tsxfor connection settings - Edit
src/QueryEditor.tsxfor query builder UI
Data Source Plugin (With Backend)
npx @grafana/create-plugin@latest
# Select: datasource
# Enter: organization name
# Enter: plugin name
# Backend: YesPost-scaffolding:
- Edit
pkg/plugin/datasource.gofor Go query logic - Implement
QueryDataandCheckHealthmethods - Build backend:
mage -v
App Plugin
npx @grafana/create-plugin@latest
# Select: app
# Enter: organization name
# Enter: plugin name
# Backend: OptionalPost-scaffolding:
- Edit
src/pages/for app pages - Update
plugin.jsonincludes for navigation - Add new pages as React components
Development Commands
# Frontend development (watch mode)
npm run dev
# Frontend production build
npm run build
# Backend build (Go plugins)
mage -v
# Run unit tests
npm test
# Run E2E tests (requires Grafana running)
npx playwright test
# Lint code
npm run lint
# Type check
npm run typecheckE2E Testing
The @grafana/create-plugin scaffolder includes E2E testing setup with @grafana/plugin-e2e and Playwright.
# Install Playwright browsers
npx playwright install --with-deps chromium
# Start Grafana
docker compose up -d
# Run E2E tests
npx playwright test
# Run with UI mode (debugging)
npx playwright test --uiSee references/e2e-testing.md for comprehensive testing patterns, fixtures, and CI/CD setup.
Best Practices
- Start Simple: Begin with minimal functionality, then iterate
- Use Docker: Consistent environment across team members
- Test Early: Run tests frequently during development
- Type Safety: Leverage TypeScript for all frontend code
- SDK Updates: Keep
@grafana/data,@grafana/ui,@grafana/runtimeversions aligned
Common Issues
Plugin Not Appearing
- Check
plugin.jsonhas correctidfield - Verify Docker volume mounts correctly
- Ensure
npm run devcompleted without errors
Backend Plugin Errors
- Run
mage -vto rebuild Go code - Check
plugin_start_linux_*orgpx_*binaries exist indist/ - Verify
plugin.jsonhas"backend": true
Development Server Issues
- Clear browser cache
- Restart Docker:
docker compose down && docker compose up -d - Check Grafana logs:
docker compose logs grafana
Delegation
For complex architectural decisions, plugin design patterns, or troubleshooting, delegate to the grafana-plugin-expert agent which has access to current SDK documentation via Context7.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

