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.