panel-testing-strategy SKILL.md skillA

panel-testing-strategy from modem-dev/ossrules is an agent skill: a SKILL.md folder an AI agent loads when a task calls for it.

Install it, pinned
mdr add modem-dev/ossrules/panel-testing-strategy@git:20260917.a2709ec

Pins git:20260917.a2709ec in mdr.lock. Pin the fingerprint instead.

Audit grade
A, 17 of 17 checks passed
Kind
SKILL.md skill
Repository
modem-dev/ossrules
Path
public/files/grafana/.claude/skills/panel-testing-strategy/SKILL.md
Versions recorded
1
Latest version
git:20260917.a2709ec, committed Sep 17, 2026
Size
10,380 bytes
Repository stars
65
License
MIT

Write unit and E2E tests for Grafana visualization panels and viz utilities to the conventions this repo expects. Use when adding, backfilling, or reviewing tests for panels (barchart, timeseries, table, xychart, heatmap, canvas, etc.), grafana-ui viz components (Table, uPlot, VizLegend, VizTooltip), or grafana-data viz utils; when a panel test only asserts "it rendered" or "it's defined"; when reviewing AI-generated panel tests for slop; or when a canvas/rendering test is flaky.

Collected from public GitHub. Every version is saved exactly as it was and never changes. Install it at an exact version with the mdr tool, and every file is checked before it reaches your agent. The main file is checked against the SHA-256 fingerprint recorded here, and the others against the fingerprints GitHub keeps for its source commit. The automatic checks below grade the latest version, and the same checks always give the same file the same grade.

What the file says

# Panel testing strategy

This skill builds on **`frontend-testing-strategy`** — read that first for the general
principles every Grafana frontend test is held to (the inverted testing diamond, asserting real
behavior instead of existence, avoiding AI slop, verifying a test reaches its target branch,
generic anti-flake rules, and the SDLC-phase gating). This skill covers what's specific to
visualization code on top of that: data-frame/panel-prop builders, the canvas draw-call snapshot
harness, panel accessibility and interaction-snapshot E2E, and canvas/uPlot-specific anti-flake
rules. The visualization codeowner paths are opted into the gating
`check-frontend-test-coverage.yml` check, so coverage that drops fails CI.

## Step 1 — Set up data with the repo's builders

Build data frames with the `@grafana/data` builders — **pick one and don't mix**
`toDataFrame` and `createDataFrame` in the same file:

```ts
import { createDataFrame, toDataFrame, arrayToDataFrame, FieldType, LoadingState } from '@grafana/data';
```

Use a **single canonical builder per file** with a `Partial<>` overrides object, rather than
bespoke frames per test:

```ts
…

Read the whole file at its exact version.

How to install

The exact contents, by fingerprint
mdr add modem-dev/ossrules/panel-testing-strategy@sha256:45394690e7722405

The line at the top of this page pins the label git:20260917.a2709ec, which is what most people want. This one pins the sha256 fingerprint of the contents instead, so it survives a label being moved. Either way the exact version is written to mdr.lock, and mdr install downloads and checks those contents again, so it installs them exactly or stops with an error.

Badge

mdr badge

[![mdr](https://markdownregistry.com/badge/art_rgan2o5dg2mksauo.svg)](https://markdownregistry.com/a/art_rgan2o5dg2mksauo)

3 badge image fetches in 30 days. What the badge shows.

Versions

The registry has recorded 1 version of this file, committed on Sep 17, 2026.

versioncommittedcommitsizeaudit
git:20260917.a2709ec latest2026-09-17 a2709ec 10,380 BA view

Audit of the latest version

A  17 of 17 checks passed. Fixed automatic checks with no AI involved, so the same checks give the same answer every run.
  • pass: Frontmatter block present
  • pass: Frontmatter declares a name
  • pass: Frontmatter declares a description
  • pass: Size between 200 bytes and 200 KB (10380 bytes)
  • pass: No zero-width or bidi control characters
  • pass: No instruction hidden inside an HTML comment
  • pass: No link to an exfiltration or paste host
  • pass: No credential-shaped string
  • pass: No instruction to send local credentials anywhere
  • pass: No text hidden with inline styles
  • pass: No prompt-injection phrasing
  • pass: No curl or wget piped into a shell
  • pass: No recursive delete of root, home or parent
  • pass: No instruction to read or print local credentials
  • pass: No base64 blob over 200 characters
  • pass: No link to a raw IP address
  • pass: No script tag

Source

GitHub

modem-dev/ossrules · 65 stars · license MIT · pushed 2026-09-21 · branch main

API

GET https://markdownregistry.com/api/v1/artifacts/art_rgan2o5dg2mksauo
GET https://markdownregistry.com/api/v1/resolve?ref=modem-dev/ossrules/panel-testing-strategy
GET https://markdownregistry.com/api/v1/blob/45394690e77224053fce7f0907b189f206f5e84d84fdfc9a98057ce0cb4dc49d

Your AI assistant does the legwork. You hear about the deals worth your word. Hand yours the standing instructions at modelranch.com and it joins the network that reads files like this one.

Guides: the SKILL.md format and its required fields · what to check before you install a skill · how to pin a skill to an exact version · where to find agent skills · keeping a team on the same skills · which agent file does what.

More from modem-dev/ossrules

agents-md-entry SKILL.md skill
modem-dev/ossrules · .claude/skills/agents-md-entry/SKILL.md · Evaluate an open source project's AGENTS.md and produce a corpus entry for the /agents-md directory. Use when adding a…
git:20260917.9770dfc · audit A · 65 stars
AGENTS.md AGENTS.md file
modem-dev/ossrules · AGENTS.md
git:20260918.a539028 · audit A · 65 stars
CLAUDE.md CLAUDE.md file
modem-dev/ossrules · CLAUDE.md
git:20260914.c95ff10 · audit B · 65 stars
AGENTS.md@public/files/ag-ui AGENTS.md file
modem-dev/ossrules · public/files/ag-ui/AGENTS.md
git:20260917.d487f87 · audit A · 65 stars
CLAUDE.md@public/files/ag-ui CLAUDE.md file
modem-dev/ossrules · public/files/ag-ui/CLAUDE.md
git:20260917.d487f87 · audit A · 65 stars
CLAUDE.md@public/files/ag-ui/integrations/adk-middleware/python CLAUDE.md file
modem-dev/ossrules · public/files/ag-ui/integrations/adk-middleware/python/CLAUDE.md
git:20260917.d487f87 · audit A · 65 stars
AGENTS.md@public/files/ag-ui/sdks/dotnet AGENTS.md file
modem-dev/ossrules · public/files/ag-ui/sdks/dotnet/AGENTS.md
git:20260917.d487f87 · audit A · 65 stars
ag-ui-a2ui-integration SKILL.md skill
modem-dev/ossrules · public/files/ag-ui/skills/ag-ui-a2ui-integration/SKILL.md · Use when adding A2UI rendering to any AG-UI-supported framework or custom AG-UI application, scaffolding an AG-UI app…
v1.1.0 · audit A · 65 stars
AGENTS.md@public/files/agent-browser AGENTS.md file
modem-dev/ossrules · public/files/agent-browser/AGENTS.md
git:20260917.d487f87 · audit A · 65 stars
AGENTS.md@public/files/agent-browser/examples/eve AGENTS.md file
modem-dev/ossrules · public/files/agent-browser/examples/eve/AGENTS.md
git:20260917.d487f87 · audit B · 65 stars
CLAUDE.md@public/files/agent-browser/examples/eve CLAUDE.md file
modem-dev/ossrules · public/files/agent-browser/examples/eve/CLAUDE.md
git:20260917.d487f87 · audit B · 65 stars
core SKILL.md skill
modem-dev/ossrules · public/files/agent-browser/skill-data/core/SKILL.md · Core agent-browser usage guide. Read this before running any agent-browser commands. Covers the snapshot-and-ref…
git:20260917.d487f87 · audit A · 65 stars

Every file in modem-dev/ossrules

Browse by kind, by grade A, or by owner.