Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Visual + DOM diff between two recorded sessions at matching trajectory step ids; used for visual regression and replay verification
.claude/skills/ruvnet-browser-screenshot-diff/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-11 | ✗→✓ | ▲ Improved | -59% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 139% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -41% | 0% |
| case-10 | ✗→✓ | ▲ Improved | -38% | 0% |
| case-13 | ✗→✓ | ▲ Improved | -34% | 0% |
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.
browser-replay run matches the parent session within tolerance.bash npx -y ruvector@0.2.25 rvf status <session-id-a>.rvf npx -y ruvector@0.2.25 rvf status <session-id-b>.rvf
trajectory.ndjson. Build a step-id → (screenshot_path, snapshot_path) map for each.step-id. Steps that exist on only one side are flagged as unmatched and contribute to the divergence score.--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).--mode dom|both): compare the accessibility snapshots node-by-node. Report added / removed / changed nodes with their accessible names.findings.md under a fresh RVF container so the diff itself is replayable.browser-sessions under both source ids' tags so future searches surface "ran a diff against session X".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.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-11 | fail→pass | 10,816 | 1,888 | -83% | 1 | 1 | 0% | 2,165 | 892 | -59% | 0 | 0 | — |
case-01 | fail→fail | 7,694 | 6,833 | -11% | 1 | 1 | 0% | 595 | 939 | +58% | 0 | 0 | — |
case-02 | fail→fail | 33,730 | 4,368 | -87% | 1 | 1 | 0% | 6,205 | 836 | -87% | 0 | 0 | — |
case-03 | fail→fail | 7,923 | 7,635 | -4% | 1 | 1 | 0% | 632 | 886 | +40% | 0 | 0 | — |
case-04 | pass→pass | 10,565 | 7,450 | -29% | 1 | 1 | 0% | 2,124 | 1,979 | -7% | 0 | 0 | — |
case-05 | pass→pass | 12,727 | 9,206 | -28% | 1 | 1 | 0% | 2,184 | 2,170 | -1% | 0 | 0 | — |
case-06 | fail→pass | 3,447 | 4,628 | +34% | 1 | 1 | 0% | 547 | 1,310 | +139% | 0 | 0 | — |
case-07 | fail→pass | 23,873 | 2,040 | -91% | 1 | 1 | 0% | 1,626 | 967 | -41% | 0 | 0 | — |
case-08 | pass→pass | 13,114 | 7,808 | -40% | 1 | 1 | 0% | 2,641 | 2,134 | -19% | 0 | 0 | — |
case-09 | fail→fail | 6,697 | 2,529 | -62% | 1 | 1 | 0% | 1,344 | 726 | -46% | 0 | 0 | — |
case-10 | fail→pass | 9,139 | 2,738 | -70% | 1 | 1 | 0% | 1,596 | 983 | -38% | 0 | 0 | — |
case-12 | pass→pass | 12,815 | 2,464 | -81% | 1 | 1 | 0% | 2,440 | 972 | -60% | 0 | 0 | — |
case-13 | fail→pass | 10,543 | 3,802 | -64% | 1 | 1 | 0% | 1,833 | 1,202 | -34% | 0 | 0 | — |
case-14 | fail→fail | 6,968 | 5,278 | -24% | 1 | 1 | 0% | 1,116 | 781 | -30% | 0 | 0 | — |
case-15 | pass→pass | 10,874 | 2,543 | -77% | 1 | 1 | 0% | 2,060 | 1,038 | -50% | 0 | 0 | — |
case-16 | fail→pass | 16,414 | 2,065 | -87% | 1 | 1 | 0% | 2,763 | 895 | -68% | 0 | 0 | — |
case-17 | fail→pass | 11,211 | 4,961 | -56% | 1 | 1 | 0% | 1,972 | 1,376 | -30% | 0 | 0 | — |
case-18 | fail→fail | 13,505 | 1,149 | -91% | 1 | 1 | 0% | 2,401 | 697 | -71% | 0 | 0 | — |
case-19 | fail→pass | 6,744 | 1,932 | -71% | 1 | 1 | 0% | 1,068 | 866 | -19% | 0 | 0 | — |
case-20 | fail→pass | 12,342 | 6,479 | -48% | 1 | 1 | 0% | 1,967 | 1,541 | -22% | 0 | 0 | — |
case-21 | fail→fail | 12,471 | 2,348 | -81% | 1 | 1 | 0% | 2,225 | 717 | -68% | 0 | 0 | — |
case-22 | pass→pass | 5,497 | 3,114 | -43% | 1 | 1 | 0% | 863 | 1,151 | +33% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 17 counted toward the lift figure. The other 5 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +41 percentage points is the difference between those two pass rates over the 17 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.