Side-by-side UAT comparison of two WordPress plugins on the same feature set. Generates an HTML report with paired PNG screenshots, MP4 flow videos, PM analysis per flow, RICE backlog, and a feature comparison table. Names files via the PAIR-NN-slug-a/b convention so the report auto-pairs by slug. Use when the user says "Plugin A vs Plugin B", "compare two plugins", "UAT report", "PAIR screenshots", "side-by-side", or "video comparison".
Scanned 9/9/2026
Install to Claude Code
npx -y skills add adityaarsharma/orbit --skill orbit-uat-compare --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Orbit Uat Compare?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/adityaarsharma-orbit-uat-compare)More formats (shields.io, HTML) on the badges page.
---
name: orbit-uat-compare
description: Side-by-side UAT comparison of two WordPress plugins on the same feature set. Generates an HTML report with paired PNG screenshots, MP4 flow videos, PM analysis per flow, RICE backlog, and a feature comparison table. Names files via the PAIR-NN-slug-a/b convention so the report auto-pairs by slug. Use when the user says "Plugin A vs Plugin B", "compare two plugins", "UAT report", "PAIR screenshots", "side-by-side", or "video comparison".
---
# 🪐 orbit-uat-compare — Plugin A vs Plugin B
PM-grade side-by-side comparison. Same flows, two plugins, one HTML report. Watch the videos, see the screenshots, read the PM verdict.
---
## Quick start
```bash
# Run flow tests + generate report + open in browser
npm run uat
# CI-friendly (no auto-open)
npm run uat:ci
```
---
## How the pairing works
Screenshots and videos use the **PAIR-NN-slug-a/b** convention:
```
pair-01-dashboard-a.png ← Plugin A dashboard
pair-01-dashboard-b.png ← Plugin B dashboard
pair-02-settings-a.png ← Plugin A settings
pair-02-settings-b.png ← Plugin B settings
```
The HTML report pairs by **slug** (`dashboard`, `settings`), not by index. Social always pairs with Social, regardless of order or count. Enforced by the `snapPair()` helper in `tests/playwright/helpers.js`.
---
## Write a flow spec
### Step 1 — Discovery (run first per plugin)
```bash
npx playwright test "Discovery | Plugin A"
# Prints all nav links → copy the exact URLs into your spec
```
### Step 2 — Use snapPair, never page.screenshot
```js
const { snapPair } = require('../helpers');
const SNAP = require('path').join(__dirname, '../../reports/screenshots/flows-compare');
test('PAIR-1 | dashboard | a | Plugin A dashboard', async ({ page }) => {
await gotoAdmin(page, '/wp-admin/admin.php?page=plugin-a-dashboard');
await snapPair(page, 1, 'dashboard', 'a', SNAP); // → pair-01-dashboard-a.png
await snapPair(page, 1, 'dashboard', 'a', SNAP, 'scroll'); // → pair-01-dashboard-a-scroll.png
});
test('PAIR-1 | dashboard | b | Plugin B dashboard', async ({ page }) => {
await gotoAdmin(page, '/wp-admin/admin.php?page=plugin-b-dashboard');
await snapPair(page, 1, 'dashboard', 'b', SNAP);
});
```
### Step 3 — Test title format (required for video auto-renaming)
```
"PAIR-1 | dashboard | a | Plugin A dashboard overview"
```
The script `generate-uat-report.py` parses this title to wire videos to the right pair.
---
## Generate the HTML report
```bash
python3 ~/Claude/orbit/scripts/generate-uat-report.py \
--title "Plugin A vs Plugin B — v2.1" \
--label-a "Plugin A" \
--label-b "Plugin B" \
--snaps reports/screenshots/flows-compare \
--videos reports/videos \
--out reports/uat-report.html
open reports/uat-report.html
```
---
## Add PM analysis, RICE, feature table
Pass `--flow-data` JSON to enrich the report with per-flow PM verdicts, RICE-scored backlog, and a feature comparison table:
```bash
python3 ~/Claude/orbit/scripts/generate-uat-report.py \
--flow-data reports/flow-data/my-plugin-vs-competitor.json \
--out reports/uat-report.html
```
JSON shape:
```json
{
"FLOW_DATA": {
"1": {
"slug": "dashboard",
"title": "Dashboard",
"verdict": "🔴 Needs Redesign",
"a_summary": "Plugin A: cluttered, 12 tabs, no empty state.",
"b_summary": "Plugin B: 2 tabs, clear empty state, CTA visible.",
"pm_analysis": "<p>...</p>",
"wins": ["Clear hierarchy", "Good empty state"],
"gaps": ["Missing recent activity", "No quick actions"],
"actions": ["Reduce tabs to 3", "Add Recent Activity card"]
}
},
"RICE": [
{ "r": 1, "n": "Reduce dashboard tabs", "s": 54000, "reach": 18000,
"imp": "MASSIVE", "eff": "XS", "t": "qw", "q": 1,
"note": "Top friction in onboarding telemetry" }
],
"FEATURES": [
["Setup wizard", "Plugin A: 5 steps", "Plugin B: 3 steps", "b"],
["Empty state", "Plugin A: blank", "Plugin B: CTA + tutorial", "b"]
],
"IA_RECS": "<div>... optional HTML for IA / hierarchy section ...</div>"
}
```
`"t"` = task type (`qw` = quick win, `bb` = big bet). `"q"` = quarter (1-4).
---
## RICE columns explained
| Field | Meaning |
|---|---|
| r | Rank (1 = top priority) |
| n | Name of the task |
| s | RICE score (Reach × Impact × Confidence ÷ Effort × 1000) |
| reach | Users affected per quarter |
| imp | Qualitative impact: MASSIVE / HIGH / MED / LOW |
| eff | Effort: XS / S / M / L / XL |
| t | Type: qw / bb |
| q | Quarter to ship |
| note | Why it scored what it did |
PMs use this column to slot work into roadmap.
---
## Use case templates
### Free vs Pro
```bash
# Run side-by-side: my-plugin-free vs my-plugin-pro
LABEL_A="Free" LABEL_B="Pro" npm run uat
```
### Vs competitor
```bash
LABEL_A="My Plugin" LABEL_B="Competitor" npm run uat
```
### Old version vs new version
Pair this with `/orbit-version-compare` for a mixed report — code diff + UAT visual.
---
## Output
```
reports/
├── uat-report-<timestamp>.html ← the master HTML
├── screenshots/flows-compare/
│ ├── pair-01-dashboard-a.png
│ ├── pair-01-dashboard-b.png
│ └── ...
└── videos/
├── PAIR-1-dashboard-a.mp4
└── PAIR-1-dashboard-b.mp4
```
The HTML is self-contained — open in any browser, share via DM, attach to a release post.
---
## Pair with `/orbit-pm-ux-audit`
UAT compare = visual + flow comparison. PM UX audit = textual quality (spelling, labels, terminology). Run both for a complete PM-facing report.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!