browser-screenshot-diff — скилл для Claude Code: diff и установка
Сравнивает две записанные браузерные сессии по шагам, скриншотам и accessibility-дереву. Нужен для поиска визуальных расхождений и проверки replay.
npx skills add ruvnet/ruflo --skill browser-screenshot-diff -a claude-codeЧто делает 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-code2Вручную: положить файлы
~/.claude/skills/browser-screenshot-diff/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/browser-screenshot-diff/
1Через Skills CLI (Vercel)
npx skills add ruvnet/ruflo --skill browser-screenshot-diff -a codex2Вручную: положить файлы
.agents/skills/browser-screenshot-diff/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add ruvnet/ruflo --skill browser-screenshot-diff -a cursor2Вручную: положить файлы
.cursor/skills/browser-screenshot-diff/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install ruvnet/ruflo browser-screenshot-diff2Вручную: положить файлы
.github/skills/browser-screenshot-diff/SKILL.md1Через Skills CLI (Vercel)
npx skills add ruvnet/ruflo --skill browser-screenshot-diff -a gemini-cli2Командой платформы
gemini skills install https://github.com/ruvnet/ruflo --path plugins/ruflo-browser/skills/browser-screenshot-diffВручную: положить файлы
.devin/skills/browser-screenshot-diff/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add ruvnet/ruflo --skill browser-screenshot-diff -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Из того же набора146
Похожие
Рядом в теме «Тесты и 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