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.
mdr add modem-dev/ossrules/panel-testing-strategy@git:20260917.a2709ecPins 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
mdr add modem-dev/ossrules/panel-testing-strategy@sha256:45394690e7722405The 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.
[](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.
Audit of the latest version
- 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
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.