agentleFS
nodnarbnitramnodnarbnitram/claude-code-extensions/.claude/skills/grafana-plugin-scaffolding/SKILL.md

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

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
  1. Distinctive:

    Before scaffolding, verify these tools are installed:

    line 17
  2. Distinctive:

    If prerequisites are missing, guide the user to install them:

    line 30
  3. Very specific:

    Use the official @grafana/create-plugin tool:

    line 36
  4. Distinctive:

    No manual rebuild-restart cycle needed

    line 82
  5. Distinctive:

    Search for your plugin name

    line 101
  6. Distinctive:

    Verify it appears and can be added to dashboards

    line 102
  7. Very specific:

    Update plugin.json includes for navigation

    line 163
  8. Distinctive:

    Add new pages as React components

    line 164
  9. Distinctive:

    Test Early: Run tests frequently during development

    line 215
  10. Very specific:

    SDK Updates: Keep @grafana/data, @grafana/ui, @grafana/runtime versions aligned

    line 217
  11. Very specific:

    Check plugin.json has correct id field

    line 222
  12. Distinctive:

    Verify Docker volume mounts correctly

    line 223
  13. Very specific:

    Ensure npm run dev completed without errors

    line 224
  14. Very specific:

    Run mage -v to rebuild Go code

    line 227
  15. Very specific:

    Check plugin_start_linux_* or gpx_* binaries exist in dist/

    line 228
  16. Very specific:

    Verify plugin.json has "backend": true

    line 229
  17. Very specific:

    Check Grafana logs: docker compose logs grafana

    line 234

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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 --version

If prerequisites are missing, guide the user to install them:

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 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.

# 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 / admin

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

# 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

  1. Open http://localhost:3000
  2. Navigate to Administration > Plugins
  3. Search for your plugin name
  4. 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:

  1. Edit src/components/SimplePanel.tsx for visualization logic
  2. Edit src/types.ts for panel options interface
  3. Edit src/module.ts for option configuration

Data Source Plugin (Frontend Only)

npx @grafana/create-plugin@latest
# Select: datasource
# Enter: organization name
# Enter: plugin name
# Backend: No

Post-scaffolding:

  1. Edit src/datasource.ts for query logic
  2. Edit src/ConfigEditor.tsx for connection settings
  3. Edit src/QueryEditor.tsx for query builder UI

Data Source Plugin (With Backend)

npx @grafana/create-plugin@latest
# Select: datasource
# Enter: organization name
# Enter: plugin name
# Backend: Yes

Post-scaffolding:

  1. Edit pkg/plugin/datasource.go for Go query logic
  2. Implement QueryData and CheckHealth methods
  3. Build backend: mage -v

App Plugin

npx @grafana/create-plugin@latest
# Select: app
# Enter: organization name
# Enter: plugin name
# Backend: Optional

Post-scaffolding:

  1. Edit src/pages/ for app pages
  2. Update plugin.json includes for navigation
  3. 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 typecheck

E2E 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 --ui

See references/e2e-testing.md for comprehensive testing patterns, fixtures, and CI/CD setup.

Best Practices

  1. Start Simple: Begin with minimal functionality, then iterate
  2. Use Docker: Consistent environment across team members
  3. Test Early: Run tests frequently during development
  4. Type Safety: Leverage TypeScript for all frontend code
  5. 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.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.