Skip to content
Back to skills

Grafana Plugin Scaffolding

ASecurity

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.

  • 666 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added February 8, 2026
developmenttypescriptgobashreactnodenodejsdockertestingdebuggingfrontend

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned February 10, 2026

npx -y skills add majiayu000/claude-skill-registry --skill grafana-plugin-scaffolding --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Grafana Plugin Scaffolding?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Grafana Plugin Scaffolding
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/majiayu000-grafana-plugin-scaffolding/badge)](https://www.skillsdirectory.com/skills/majiayu000-grafana-plugin-scaffolding)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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:

```bash
# 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:
- 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:

```bash
# 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

```bash
# 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.

```bash
# 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**

```bash
# 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

```bash
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)

```bash
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)

```bash
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

```bash
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

```bash
# 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.

```bash
# 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.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.