CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

vitest-visual-testing

Make @uiverify/vitest (Vitest browser-mode) captures deterministic so component visual tests stop coming back "changed" without a real change (flaky diffs). Use when setting up or debugging visual tests over Vitest browser-mode component tests, or rendering whole pages (including Next.js App Router pages) in browser mode. Focuses only on the run-to-run variation the capturer can't neutralize from outside your app — above all live/dynamic data, the highest-value step (freeze it with static fixtures and the whole content-noise class disappears), plus the clock, infinite JS animations, and non-Math.random randomness, and the one Vitest-specific trap - capturing before the component has settled.

72

Quality

90%

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

SKILL.md
Quality
Evals
Security

Quality

Content

82%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 high-quality, highly actionable skill body: every section gives executable, tool-specific guidance and it deliberately separates what the capturer already handles from what the user must do, avoiding wasted effort. Weaknesses are modest: some repetition of the freeze-the-data headline, no explicit 'verify determinism by re-running' checkpoint, and specialized whole-page/Next.js content that could be split into a reference file.

Suggestions

State the freeze-the-data headline once (in checklist step 1) and cut the duplicate 'The headline' paragraph in the intro to a single pointer sentence — the message currently appears twice in nearly the same words.

Add a short closing verification step, e.g. run the visual suite twice (or with --only-changed) and confirm zero diffs before considering setup complete — the workflow ends at 'what to do' without a way to confirm it worked.

Move the 'Testing whole pages' / Next.js App Router material into a references/ file (e.g. pages.md) with a one-line pointer from SKILL.md, keeping the main file focused on the component-test checklist.

DimensionReasoningScore

Conciseness

The body is dense with non-obvious, tool-specific knowledge (what the capturer neutralizes, the Vitest 4.1 auto-snapshot timing vs afterEach, the __UI_VERIFY__ global signal) and explains nothing Claude already knows. But there is more than minor padding: the 'freeze the data is the highest-value step' message is stated twice in near-identical words (the 'headline' paragraph and checklist step 1), and several long parenthetical asides could be trimmed.

4 / 5

Actionability

Fully executable, copy-paste-ready code throughout: the vitest.config.ts plugin setup, the setupFiles CSS/font loading, a complete test with render/await expect.element/takeSnapshot, fake-timer clock pinning, vi.mock fixture injection, the isUIVerify() helper, MotionGlobalConfig.skipAnimations, and preloadFonts(). The examples cover the common component case and the page case.

5 / 5

Workflow Clarity

A clear, prioritized sequence: integrate the plugin → load global CSS/fonts in setup → freeze the data (explicitly 'do it first, step 1') → clock → infinite JS animations → randomness → dynamic layout, with anti-patterns closing the loop. Some diagnostic checkpoints exist (check document.fonts/FontFace.status, the preloadFonts() fallback, the could-not-archive warning), but there is no explicit verification step such as running the suite twice to confirm determinism.

4 / 5

Progressive Disclosure

No bundle files exist (no references/, scripts/, or assets/ directories), so all content is inline in one SKILL.md. Section headers are clear and well-ordered, and the one external pointer (examples/vitest on GitHub) is clearly signaled rather than buried. The whole-pages and Next.js App Router sections (~25 lines of specialized guidance) are natural candidates for a reference file, which is a minor organization gap rather than a structural flaw.

4 / 5

Total

17

/

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.

A strong description: concrete actions, an explicit 'Use when' clause with multiple concrete triggers, and a tightly-scoped niche anchored to a specific tool. Voice is third-person ('Focuses only'). The only weakness is mild: it lacks a few natural synonyms (screenshot/snapshot/visual regression) users might say when they need this skill.

Suggestions

Add one or two natural synonyms such as 'screenshot tests', 'snapshot tests', or 'visual regression' to the 'Use when' clause — users needing this skill often phrase it that way rather than 'visual tests'.

Trim the long third sentence ('Focuses only on the run-to-run variation...') to a compact list of the fix areas; the parenthetical asides ('freeze it with static fixtures and the whole content-noise class disappears') add length without adding trigger value.

DimensionReasoningScore

Specificity

The description names concrete actions within its domain: 'Make @uiverify/vitest (Vitest browser-mode) captures deterministic', 'freeze it with static fixtures', plus explicit handling of 'the clock, infinite JS animations, and non-Math.random randomness, and the one Vitest-specific trap - capturing before the component has settled'. These are multiple specific, concrete actions with comprehensive coverage of the skill's scope.

5 / 5

Completeness

Both halves are explicit: 'what' is 'make captures deterministic so component visual tests stop coming back changed without a real change (flaky diffs)' with the enumerated fix areas, and 'when' is an explicit 'Use when setting up or debugging visual tests over Vitest browser-mode component tests, or rendering whole pages (including Next.js App Router pages) in browser mode' with concrete trigger phrases.

5 / 5

Trigger Term Quality

Good natural keywords users would say: 'visual tests', 'flaky diffs', 'component visual tests', 'Vitest browser-mode', 'rendering whole pages', 'Next.js App Router'. A few common variations are missing — users would often say 'screenshot tests', 'snapshot tests', or 'visual regression', none of which appear.

4 / 5

Distinctiveness Conflict Risk

Clear niche: '@uiverify/vitest' and 'Vitest browser-mode' pin it to one tool, and it explicitly scopes away what other visual-testing skills cover ('Focuses only on the run-to-run variation the capturer can't neutralize from outside your app'). Minimal conflict risk with generic Vitest or Playwright visual-testing skills.

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.

Repository

FranciscoMoretti/chat-js

Path

.agents/skills/vitest-visual-testing/SKILL.md

Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.