К основному содержанию
скилл CX Codex

browser-screenshot-diff — скилл для Claude Code: diff и установка

Сравнивает две записанные браузерные сессии по шагам, скриншотам и accessibility-дереву. Нужен для поиска визуальных расхождений и проверки replay.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add ruvnet/ruflo --skill browser-screenshot-diff -a claude-code
Открыть на GitHub

Что делает browser-screenshot-diff

Скилл сопоставляет одинаковые step-id в двух RVF-сессиях. Для каждого шага он сравнивает PNG-скриншоты и accessibility snapshot, отмечает отсутствующие с одной стороны шаги, показывает первое расхождение и считает общий индекс сходства. Для pixel diff выводятся mse, psnr и область крупнейшего кластера отличий, а DOM diff перечисляет добавленные, удалённые и изменённые узлы.

Сначала скилл проверяет контейнеры через npx -y [email protected] rvf status, затем читает trajectory.ndjson и строит карту путей к артефактам. Итог записывается в findings.md нового RVF-контейнера, а сведения о сравнении сохраняются в browser-sessions под тегами обеих сессий. Для живой проверки используется browser_eval.

Порог pixel diff по умолчанию равен 0.02; режим задаётся как pixel, dom или both. Pixel-сравнение чувствительно к шрифтам, сглаживанию и полосе прокрутки, поэтому viewport нужно закрепить в обеих сессиях. Динамический контент вроде часов и рекламы потребует ignore-регионов или предварительной обработки snapshot.

Какие задачи решает

  • сравнить скриншоты двух браузерных сессий по шагам
  • найти первое расхождение после изменения интерфейса
  • проверить replay относительно исходной сессии
  • сопоставить accessibility-деревья двух вариантов формы
  • сохранить вердикт сравнения в RVF-артефактах

Примеры запросов агенту

  • Сравни сессии <session-id-a> и <session-id-b> в режиме both, используя порог 0.02.
  • Проверь, совпадает ли replay-сессия с исходной по каждому step-id, и покажи первое расхождение.
  • Сопоставь две версии формы в режиме dom и перечисли изменённые узлы с их доступными именами.

Как установить browser-screenshot-diff

1Через Skills CLI (Vercel)

npx skills add ruvnet/ruflo --skill browser-screenshot-diff -a claude-code

2Вручную: положить файлы

~/.claude/skills/browser-screenshot-diff/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/browser-screenshot-diff/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора146

browser-record Открывает именованную браузерную сессию, заводит под неё контейнер RVF и пишет каждый шаг в траекторию ruvector. Пригодится, когда разбор сайта надо потом пересмотреть или повторить. CX Codex +1 718установок browser-form-fill Заполняет веб-формы по структурированной карте полей JSON и сохранённым шаблонам селекторов. Помогает автоматизировать ввод данных и отправку форм в браузере. CX Codex +1 717установок dossier-collect Собирает графовое досье по пользователю, файлу, символу, ADR, URL или понятию. Нужен, когда надо исследовать связанные сущности, а не получить один ответ. CX Codex +1 701установок browser-extract Скилл достаёт текст, таблицы и значения атрибутов с отрисованной страницы и отдаёт их структурой, но только после проверки на персональные данные и промпт-инъекции. CX Codex +1 697установок cost-budget-check Считает, сколько проект уже потратил, сравнивает с лимитом и называет уровень тревоги: от INFO на 50% до HARD_STOP на 100%. Пригодится перед запуском новой пачки агентов. CX Codex +1 692установок browser-auth-flow Прогоняет вход на вашем сайте один раз и ищет утечки в редиректах, отсутствие CSRF-токена, слабые сессионные cookie и ошибки OAuth. Итог — findings.md с вердиктом. CX Codex +1 689установок adr-verify Читает сохранённый граф ADR из памяти и находит битые ссылки, циклы замены и несовпадения статусов. Пригодится сразу после adr-index и как гейт в CI. CX Codex +1 688установок cost-track Считает расход токенов по сессии Claude Code, переводит их в доллары и сохраняет запись в неймспейсе cost-tracking. Нужен, когда хочется видеть цену работы, а не догадываться о ней. CX Codex +1 684установок

Похожие

argent-screenshot-diff software-mansion Сравнивает скриншоты до и после изменений в UI: ловит сдвиги в раскладке, отступах, цвете и рендере текста. CX Codex +1 25 000установок browser-qa affaan-m Гоняет живой интерфейс через браузерный MCP: ошибки в консоли, Core Web Vitals, формы, скриншоты на трёх ширинах и axe-core. Выносит вердикт SHIP или DO NOT SHIP. CX Codex +1 4 900установок browser-screenshot zc277584121 Делает снимок не всей страницы, а конкретного блока: поста, твита, графика, куска статьи. Пригодится, когда нужна иллюстрация без меню и рекламы. CX Codex +1 4 100установок recording-browser-flow-as-test spencerpauly Записывает действия в браузере через MCP и превращает их в E2E-тест Playwright с надёжными селекторами accessibility tree. CX Codex +1 406установок browser-use browser-use Даёт агенту живой Chrome через CDP: клики, ввод, скриншоты и страницы, которым нужен JS или ваша логин-сессия. CX Codex +1 98 200установок browser-control anomalyco Скилл гоняет детерминированный Playwright в вашем открытом Chromium-браузере: инспектирует вкладку, кликает, проверяет результат. Пригодится, когда нужно продолжить уже залогиненный сценарий. CX Codex +1 995установок

Рядом в теме «Тесты и QA»

Всё по теме «Тесты и QA» →

Вопросы о browser-screenshot-diff

Как установить browser-screenshot-diff в Claude Code?

Выполните npx skills add ruvnet/ruflo --skill browser-screenshot-diff -a claude-code, затем ещё раз выполните npx skills add ruvnet/ruflo --skill browser-screenshot-diff -a claude-code. Файл скилла находится в ~/.claude/skills/browser-screenshot-diff/SKILL.md.

Что делает browser-screenshot-diff?

Он сравнивает две записанные сессии по совпадающим step-id, проверяет PNG и accessibility snapshot, а затем формирует отчёт с первым расхождением и общей оценкой сходства.

Почему pixel diff может показать расхождение при одинаковом интерфейсе?

Результат чувствителен к hinting шрифтов, сглаживанию и положению scrollbar. Viewport в обеих сессиях нужно закрепить; динамический контент следует исключить через ignore-регионы или обработку snapshot.

Исходный текст

SKILL.md · MIT
---
name: browser-screenshot-diff
description: Visual + DOM diff between two recorded sessions at matching trajectory step ids; used for visual regression and replay verification
argument-hint: "<session-id-a> <session-id-b> [--threshold <0..1>] [--mode pixel|dom|both]"
allowed-tools: mcp__plugin_ruflo-core_ruflo__browser_eval Bash Read Write
---

# Browser Screenshot Diff

Compare two recorded sessions step-by-step. Pairs each step in session A to the same `step-id` in session B, diffs the captured screenshot and accessibility snapshot, reports the first divergence and an aggregate similarity score.

## When to use

- Visual regression after a UI change (record before, record after, diff).
- Verifying a `browser-replay` run matches the parent session within tolerance.
- Comparing two A/B variants of the same form flow.

## Steps

1. **Locate both RVF containers**:
   ```bash
   npx -y [email protected] rvf status <session-id-a>.rvf
   npx -y [email protected] rvf status <session-id-b>.rvf
   ```
2. **Load both trajectories** from `trajectory.ndjson`. Build a `step-id → (screenshot_path, snapshot_path)` map for each.
3. **Pair steps** by `step-id`. Steps that exist on only one side are flagged as `unmatched` and contribute to the divergence score.
4. **Pixel diff** (`--mode pixel|both`): compare the two PNGs at each step. Report `mse`, `psnr`, and the bounding box of the largest diff cluster. Threshold default `0.02` (2% of pixels).
5. **DOM diff** (`--mode dom|both`): compare the accessibility snapshots node-by-node. Report added / removed / changed nodes with their accessible names.
6. **Aggregate similarity**: weighted average across matched steps, weighted by step duration. Verdict goes into a new `findings.md` under a fresh RVF container so the diff itself is replayable.
7. **Persist** the diff verdict in `browser-sessions` under both source ids' tags so future searches surface "ran a diff against session X".

## Caveats

- Pixel diff is sensitive to font hinting, antialiasing, and scrollbar position. Keep viewport pinned across both sessions.
- DOM diff over Playwright's accessibility tree is more stable than HTML diff. Prefer it.
- This skill does not handle dynamic content (clocks, ads); add ignore regions to the field map or pre-process snapshots before diffing.
- The `browser_screenshot_diff` MCP tool is **not** planned (ADR-0001 §7); the skill operates against locally-saved RVF artifacts and uses `browser_eval` only for live verification.

© ruvnet · MIT · ruvnet/ruflo

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой