visual-regression

visual-regression is a skill for Claude Code, Codex from mlopscommunity/Coding-Agents-Conference-skills. It costs 40 tokens per session (2,079 once invoked), scanned A, original, Apache-2.0.

A screenshot-based check for finding unexpected visual changes in a user interface. It uses Playwright, a browser automation tool, during development or before a release.

In plain words
What is it for?
Use it to capture affected user flows after interface changes or compare screenshots between two software versions before release.
Why use it?
It helps detect layout, styling, or wording changes that automated code tests may miss and helps decide what people should review.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one. Also seen: mentions subagents.

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/mlopscommunity/coding-agents-conference-skills/visual-regression
Any agent
npx skills add mlopscommunity/Coding-Agents-Conference-skills --skill visual-regression
Clone the repo
git clone --depth 1 https://github.com/mlopscommunity/Coding-Agents-Conference-skills

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for visual-regression

README.md
[![agentmods](https://agentmods.dev/badge/skills/mlopscommunity/coding-agents-conference-skills/visual-regression.svg)](https://agentmods.dev/skills/mlopscommunity/coding-agents-conference-skills/visual-regression)
Your own site
<a href="https://agentmods.dev/skills/mlopscommunity/coding-agents-conference-skills/visual-regression"><img src="https://agentmods.dev/badge/skills/mlopscommunity/coding-agents-conference-skills/visual-regression.svg" alt="Measured on agentmods" height="20"></a>
Per session 40 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,079 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00040 $0.02079
Opus 5 $0.00020 $0.01040
Sonnet 5 $0.00008 $0.00416
Haiku 4.5 $0.00004 $0.00208

Measured 6d ago against content hash 640e81cadfee, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-06, from the pricing page.

Security

Grade A, and why

visual-regression scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 6d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skills/visual-regression/SKILL.md · 231 lines

How it starts

The opening of the file, as written. The whole thing — 231 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Visual Regression Testing

Overview

Two-mode skill for catching visual regressions. During development, create screenshot walkthroughs of affected flows. At release time, compare screenshots between two git refs and use a sub-agent to classify changes as expected or unexpected.

Core principle: Screenshots are cheap and regenerable. Never commit them to git. The value is in the comparison and classification, not the screenshots themselves.

Dependency: Playwright must be installed in the project.

When to Use

  • After making any user-facing change (component, layout, CSS, copy)
  • Before a release to catch accumulated visual regressions
  • When QA is a bottleneck and you need to prioritize what humans review

When NOT to Use

  • API-only or backend-only changes
  • As a CI gate on PRs (too slow — run at release time only)

Common Mistakes

Mistake Why it's wrong
Committing screenshots to git They're regenerable. Bloats repo for no value.
Running visual comparison in CI on every PR Too slow. Rob: "You cannot do this in PR merge."
Using hard-coded pixel thresholds alone The key insight is AI-powered analysis of why something changed, not just that it changed.
Over-engineering with versioned baselines and symlinks Keep it simple: checkout old tag, screenshot, checkout new tag, screenshot, diff.
Skipping the textual walkthrough Screenshots without descriptions are useless for review. Always include what the user sees and what flow this belongs to.

Mode 1: document (During Development)

When you make a user-facing change, do this:

Step 1: Identify affected flows

Look at what you changed and list the user flows it touches (e.g., "login flow", "checkout step 2").

Step 2: Write or update Playwright screenshot scripts

Create scripts under e2e/visual/ that walk through each affected flow and capture screenshots at each meaningful step.

// e2e/visual/login-flow.spec.ts
import { test } from '@playwright/test';

test('login flow walkthrough', async ({ page }) => {
  // Step 1: Landing page
  await page.goto('/');
  await page.waitForLoadState('networkidle');
  await page.screenshot({ path: '.screenshots/flows/login-flow/01-landing-page.png', fullPage: true });

  // Step 2: Click login, see form
  await page.click('[data-testid="login-button"]');
  await page.waitForSelector('[data-testid="login-form"]');
  await page.screenshot({ path: '.screenshots/flows/login-flow/02-login-form.png', fullPage: true });

  // Step 3: Fill and submit
  await page.fill('[name="email"]', '[email protected]');
  await page.fill('[name="password"]', 'password123');
  await page.click('[data-testid="submit"]');
  await page.waitForSelector('[data-testid="dashboard"]');
  await page.screenshot({ path: '.screenshots/flows/login-flow/03-dashboard.png', fullPage: true });
});

Read the full file on GitHub · 231 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 6d ago First seen · 231 lines · 40 tokens per session scan A 640e81cadfee

Subscribe to this mod's changes

visual-regression is a skill published in the GitHub repository mlopscommunity/Coding-Agents-Conference-skills (37 stars, last pushed 5mo ago), licensed Apache-2.0. It adds 40 tokens to every session and 2,079 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories