| name | grafana-plugin-scaffolding |
| description | 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. |
| allowed-tools | Bash, Read, Write, Edit, Grep, Glob |
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:
node --version
npm --version
docker --version
If prerequisites are missing, guide the user to install them:
Step 2: Scaffold the Plugin
Use the official @grafana/create-plugin tool:
npx @grafana/create-plugin@latest
Step 3: Navigate and Install Dependencies
cd <orgName>-<pluginName>-<pluginType>
npm install
go mod tidy
Step 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.
docker compose watch
docker compose up -d
With 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
npm run dev
mage -v
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
Post-scaffolding:
- Edit
src/components/SimplePanel.tsx for visualization logic
- Edit
src/types.ts for panel options interface
- Edit
src/module.ts for option configuration
Data Source Plugin (Frontend Only)
npx @grafana/create-plugin@latest
Post-scaffolding:
- Edit
src/datasource.ts for query logic
- Edit
src/ConfigEditor.tsx for connection settings
- Edit
src/QueryEditor.tsx for query builder UI
Data Source Plugin (With Backend)
npx @grafana/create-plugin@latest
Post-scaffolding:
- Edit
pkg/plugin/datasource.go for Go query logic
- Implement
QueryData and CheckHealth methods
- Build backend:
mage -v
App Plugin
npx @grafana/create-plugin@latest
Post-scaffolding:
- Edit
src/pages/ for app pages
- Update
plugin.json includes for navigation
- Add new pages as React components
Development Commands
npm run dev
npm run build
mage -v
npm test
npx playwright test
npm run lint
npm run typecheck
E2E Testing
The @grafana/create-plugin scaffolder includes E2E testing setup with @grafana/plugin-e2e and Playwright.
npx playwright install --with-deps chromium
docker compose up -d
npx playwright test
npx playwright test --ui
See 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/runtime versions aligned
Common Issues
Plugin Not Appearing
- Check
plugin.json has correct id field
- Verify Docker volume mounts correctly
- Ensure
npm run dev completed without errors
Backend Plugin Errors
- Run
mage -v to rebuild Go code
- Check
plugin_start_linux_* or gpx_* binaries exist in dist/
- Verify
plugin.json has "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.