CtrlK
BlogDocsLog inGet started
Tessl Logo
PluginPublic

testland/chart-render-tests

Chart-render regression testing across the three chart-library families - Canvas (Chart.js: locator screenshot snapshot + `canvas.toDataURL()` diff with animations disabled), SVG (D3: `outerHTML` structural snapshot with generated-ID normalization + per-element data-binding tests), and declarative specs (Vega / Vega-Lite: JSON Schema validation + Vega-Lite → Vega compile test). Detects the family from package.json imports (chart.js / d3 / vega-lite), then applies the matching recipe; full per-library depth with citations in references/chartjs.md, references/d3.md, references/vega.md. Use when a dashboard or data product renders charts and their output needs regression coverage - before a chart-library major upgrade, after a theming change, or when runtime-generated Vega specs must be proven valid before render.

72

Quality

91%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

Overview
Quality
Evals
Security
Files

Quality

Content

86%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A well-engineered skill body: fully executable code for all three chart families, an explicit detection step, an anti-patterns checklist, and honest limitations. Detail is properly pushed to six real one-level-deep reference files. The only refinements are trimming the library-fact restatements and duplicated reference links, and adding a brief note on mismatch triage/baseline updates.

Suggestions

Drop or compress the 'Per the [X docs], X renders to...' framing in the Canvas and SVG sections - Chart.js rendering to canvas and D3 generating SVG are facts Claude already knows; keep only the citation links.

Add one or two sentences on snapshot-mismatch triage (real regression vs. anti-aliasing flake) and point to the `visual-baseline-conventions` sibling skill at the point of use in the Canvas/SVG recipes rather than only in the References list.

Remove the duplicated per-library links in the final References section (chartjs.md, d3.md, vega.md are already linked in their recipe sections) or consolidate the advanced reference links there instead.

DimensionReasoningScore

Conciseness

Largely lean - family table, detection commands, three tight code recipes, anti-patterns table, limitations - with only minor trim candidates: "Per the [Chart.js docs], Chart.js renders to `<canvas>`" and "Per the [D3 getting-started docs], D3 generates SVG" restate library facts Claude already knows, and the References section repeats links already given in each recipe section. Fits anchor 4 (efficient, minor instances that could be trimmed) rather than 5.

4 / 5

Actionability

Every recipe is copy-paste ready: jq/grep detection commands, a full Playwright test with `waitForFunction` canvas-readiness check and `maxDiffPixels: 50`, a complete `normalizeSvg()` + snapshot test, and Ajv schema validation with `vl.compile()` gates, plus concrete config pins (`deviceScaleFactor: 1`, `options.animation = false`). Matches anchor 5 (fully executable, covers the common cases).

5 / 5

Workflow Clarity

Clear ordered workflow: detect family from package.json → apply each matching recipe ("A project can hit two rows... apply each matching recipe"), with explicit validation gates in the Vega section ("Gate 1 - schema-valid... Gate 3 - compiles") and readiness checkpoints in the canvas/SVG tests. Minor gap: no guidance for handling snapshot mismatches (real regression vs. flake, baseline updates), which is delegated to a sibling skill - fits anchor 4 (clear sequence, most checkpoints, minor validation gaps) rather than 5 (which expects error-recovery feedback loops).

4 / 5

Progressive Disclosure

SKILL.md is a true overview - one core recipe per family inline, with clearly signaled "Full depth (...)" pointers to all six reference files, each of which exists in the bundle (chartjs.md, chartjs-alternative-approaches.md, d3.md, d3-advanced-tests.md, vega.md, vega-advanced-spec-tests.md). References are one level deep (siblings cross-link directly, no nested chains), matching anchor 5 (clear overview, well-signaled one-level-deep references, easy navigation).

5 / 5

Total

18

/

20

Passed

Description

92%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

An excellent description: concrete per-family techniques, an explicit detection method, and a well-scoped 'Use when' clause with specific trigger scenarios. Third-person voice and library-name keywords make it highly distinguishable and likely to trigger correctly. Only minor upside remains from adding common synonyms such as "visual regression" or "graph".

DimensionReasoningScore

Specificity

Lists multiple concrete actions per family - "locator screenshot snapshot + `canvas.toDataURL()` diff with animations disabled", "`outerHTML` structural snapshot with generated-ID normalization + per-element data-binding tests", "JSON Schema validation + Vega-Lite → Vega compile test" - plus concrete detection behavior ("Detects the family from package.json imports"). Comprehensive coverage with no evident gaps, matching the level-5 anchor; level 4 would require minor coverage gaps.

5 / 5

Completeness

Explicitly answers both: what ("Chart-render regression testing across the three chart-library families" with per-family techniques and package.json-based detection) and when ("Use when a dashboard or data product renders charts and their output needs regression coverage - before a chart-library major upgrade, after a theming change, or when runtime-generated Vega specs must be proven valid before render"). Concrete trigger scenarios match the level-5 anchor; level 4 would require a less explicit 'when'.

5 / 5

Trigger Term Quality

Good natural-term coverage: "chart", "dashboard", "data product", "regression coverage", "chart.js", "d3", "vega-lite", "theming change", "chart-library major upgrade". A few natural synonyms users might say ("visual regression", "graph", "visualization") are absent, so it fits anchor 4 (good coverage, a few natural terms missing) rather than anchor 5 (comprehensive synonyms).

4 / 5

Distinctiveness Conflict Risk

Clear niche (chart-render regression testing) with distinct triggers anchored to named library families (Chart.js, D3, Vega/Vega-Lite), so unrelated skills would not match. Overlap with generic UI-snapshot skills is minimal because the description scopes to chart-specific test surfaces (canvas pixels, SVG structure, spec validity), fitting anchor 5 ("Clear niche with distinct triggers; minimal conflict risk").

5 / 5

Total

19

/

20

Passed

Validation

100%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 16 / 16 Passed

Validation for skill structure

No warnings or errors.

Reviewed

Table of Contents