# Visual Regression

> Run and interpret Clawix UI geometry, screenshot, protected-surface, and debt-baseline checks without authorizing visual repair.

- Skill: `clawic/visual-regression` (Agent Skill)
- Install (CLI): `npx skillmds@latest add clawic/visual-regression`
- Raw SKILL.md: https://api.skillmd.com/api/skills/clawic/visual-regression/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: clawic (https://skillmd.com/u/clawic)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/clawic/visual-regression

---


# visual-regression

Use when validating that UI has not drifted.

## Procedure

1. Read `docs/adr/0010-interface-governance.md`, `docs/ui/README.md`, and the
   relevant pattern manifests.
2. Run public checks:
   ```
   node scripts/ui_governance_guard.mjs
   node scripts/ui_rendered_geometry_manifest_check.mjs
   node scripts/ui_private_baseline_manifest_check.mjs
   node scripts/ui_private_visual_validation_manifest_check.mjs
   ```
3. When private visual baselines are available, run the private/local screenshot
   and geometry comparison for the changed surface:
   ```
   CLAWIX_UI_PRIVATE_BASELINE_ROOT=<private-root> CLAWIX_UI_PRIVATE_GEOMETRY_ROOT=<private-root> CLAWIX_UI_PRIVATE_COPY_ROOT=<private-root> CLAWIX_UI_PRIVATE_DRIFT_ROOT=<private-root> CLAWIX_UI_PRIVATE_DEBT_AUDIT_ROOT=<private-root> CLAWIX_UI_PRIVATE_APPROVAL_ROOT=<private-root> node scripts/ui_private_visual_verify.mjs --require-approved
   CLAWIX_UI_PRIVATE_GEOMETRY_ROOT=<private-root> node scripts/ui_private_geometry_verify.mjs --require-approved
   CLAWIX_UI_PRIVATE_BASELINE_ROOT=<private-root> node scripts/ui_private_baseline_verify.mjs --require-approved
   ```
4. Classify findings as protected-surface drift, new visual debt, expired
   exception, missing registry mapping, or non-visual false positive.
5. Report out-of-scope drift; do not repair it unless the active model and task
   are explicitly visual-authorized.

## Constraints

- Private screenshots/baselines stay outside the public repo.
- Passing public checks does not approve a new visual direction.
- A user-approved baseline is required before a surface becomes protected.

