vrt-regression-watch

Detects visual regressions by comparing vlmkit diff runs against persisted per-viewport summaries.

22|1|Updated Mar 30, 2026
One-click install
npx skills add https://github.com/mizchi/vlmkit --skill vrt-regression-watch-mizchi
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: vrt-regression-watch
Source: https://github.com/mizchi/vlmkit/tree/main/.apm/skills/vlmkit/workflows/vrt-regression-watch
Command: npx skills add https://github.com/mizchi/vlmkit --skill vrt-regression-watch-mizchi

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? One-shot visual diffs cannot tell you whether a change made things worse over time. This Skill wires vlmkit's diff agent into a stateful loop that compares each run against the previous run's persisted summary and raises a binary regression signal for CI gates. ## Core Features & Use Cases - Stateful regression detection: Persists per-viewport diff ratios to a JSON summary and emits a ⚠ REGRESSION banner when the majority of viewports get worse. - CI gate integration: Supports --fail-on-regression to exit 1 on regression, with patterns for per-PR GitHub Actions workflows and cached baselines. - Flexible state strategies: Local-rolling (compare against last run) or branch-stable (compare against a fixed main reference) retention modes via --previous and --persist-summary. - Use Case: A team adds a GitHub Actions job that restores main's cached baseline, diffs the PR's rendered pages, and fails the build with a Markdown PR comment whenever the majority of viewports regress. ## Quick Start Ask the agent to set up a recurring vlmkit diff loop that compares each run against the previous summary and fails CI when a visual regression is detected.

Frequently Asked Questions about vrt-regression-watch

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I detect visual regressions in CI with vlmkit?

Run vlmkit diff html to produce a diff report, then run vlmkit diff agent with --previous pointing at a stored summary and --fail-on-regression. The command exits 1 when the majority of viewports get worse, failing the CI job.

How does vlmkit decide a visual regression occurred?

After each diff agent run, per-viewport diff ratios are written to a summary JSON file. On the next run, each viewport's current ratio is compared to its prior value, and a regression banner is emitted when the majority of viewports exceed the relative noise threshold.

Why does the regression banner appear on every run with no changes?

A banner on every run usually means the page has unmaintained dynamic content flapping between renders. Pass the unstable selectors via --mask to vlmkit diff html and re-run; if the banner disappears, the original signal was noise.

Why is there no regression banner on the first run?

The first run has no prior summary to compare against, so it only establishes the baseline state. Run the workflow twice to see regression detection take effect; a no-op re-run is guaranteed to produce no banner.

When should I not use a stateful visual regression watch?

Skip it for one-shot diffs with no history, where the plain visual diff workflow with --no-history fits better, and for CSS auto-repair tasks, which belong to a fix-loop workflow. It also cannot detect anything on a first-ever run.