before-and-after
npx machina-cli add skill vijaykpatel/favorite_skills_and_plugins/before-and-after --openclawBefore-After Screenshot Skill
Package:
@vercel/before-and-afterNever usebefore-and-after(wrong package).
Agent Behavior Rules
DO NOT:
- Switch git branches, stash changes, start dev servers, or assume what "before" is
- Use
--fullunless user explicitly asks for full page / full scroll capture
DO:
- Use
--markdownwhen user wants PR integration or markdown output - Use
--mobile/--tabletif user mentions phone, mobile, tablet, responsive, etc. - Assume current state is After
- If user provides only one URL or says "PR screenshots" without URLs, ASK: "What URL should I use for the 'before' state? (production URL, preview deployment, or another local port)"
Execution Order (MUST follow)
- Pre-flight —
which before-and-after || npm install -g @vercel/before-and-after - Protection check — if
.vercel.appURL:curl -s -o /dev/null -w "%{http_code}" "<url>"(401/403 = protected) - Capture —
before-and-after "<before-url>" "<after-url>" - Upload —
./scripts/upload-and-copy.sh <before.png> <after.png> --markdown - PR integration — optionally
gh pr editto append markdown
Never skip steps 1-2.
Quick Reference
# Basic usage
before-and-after <before-url> <after-url>
# With selector
before-and-after url1 url2 ".hero-section"
# Different selectors for each
before-and-after url1 url2 ".old-card" ".new-card"
# Viewports
before-and-after url1 url2 --mobile # 375x812
before-and-after url1 url2 --tablet # 768x1024
before-and-after url1 url2 --full # full scroll
# From existing images
before-and-after before.png after.png --markdown
# Via npx (use full package name!)
npx @vercel/before-and-after url1 url2
| Flag | Description |
|---|---|
-m, --mobile | Mobile viewport (375x812) |
-t, --tablet | Tablet viewport (768x1024) |
--size <WxH> | Custom viewport |
-f, --full | Full scrollable page |
-s, --selector | CSS selector to capture |
-o, --output | Output directory (default: ~/Downloads) |
--markdown | Upload images & output markdown table |
--upload-url <url> | Custom upload endpoint (default: 0x0.st) |
Image Upload
# Default (0x0.st - no signup needed)
./scripts/upload-and-copy.sh before.png after.png --markdown
# GitHub Gist
IMAGE_ADAPTER=gist ./scripts/upload-and-copy.sh before.png after.png --markdown
Vercel Deployment Protection
If .vercel.app URL returns 401/403:
- Check Vercel CLI:
which vercel && vercel whoami - If available:
vercel inspect <url>to get bypass token - If not: Tell user to provide bypass token, take manual screenshots, or disable protection
PR Integration
# Check for gh CLI
which gh
# Get current PR
gh pr view --json number,body
# Append screenshots to PR body
gh pr edit <number> --body "<existing-body>
## Before and After
<generated-markdown>"
If no gh CLI: output markdown and tell user to paste manually.
Error Reference
| Error | Fix |
|---|---|
command not found | npm install -g @vercel/before-and-after |
could not determine executable | Use npx @vercel/before-and-after (full name) |
| 401/403 on .vercel.app | See Vercel protection section |
| Element not found | Verify selector exists on page |
Source
git clone https://github.com/vijaykpatel/favorite_skills_and_plugins/blob/main/.agents/skills/before-and-after/SKILL.mdView on GitHub Overview
The before-and-after skill automates capturing visual diffs between two states of a page or element. It accepts two URLs or two image paths and guides users through a repeatable workflow—pre-flight, protection checks, capture, and upload—to produce shareable Markdown output for reviews or PRs.
How This Skill Works
It follows a defined workflow: first ensure the tool is installed (pre-flight). Then perform a protection check on any .vercel.app URLs. Next, run before-and-after with the before and after sources to generate two images, and finally upload them with a script to produce Markdown suitable for PRs or documentation. Optional PR integration can append the generated markdown to a GitHub PR body.
When to Use It
- Compare old and new UI by supplying production and preview URLs to visualize changes.
- Create PR-ready diffs by capturing before/after states and uploading Markdown for inclusion in the PR description.
- Document UI changes using two local image files when URLs are not accessible.
- Capture specific viewports (mobile, tablet, or full) to assess responsiveness with --mobile, --tablet, or --full flags.
- Target a specific element with a CSS selector for each state using the -s/--selector flag.
Quick Start
- Step 1: Pre-flight — which before-and-after || npm install -g @vercel/before-and-after
- Step 2: Capture — before-and-after "<before-url>" "<after-url>"
- Step 3: Upload — ./scripts/upload-and-copy.sh <before.png> <after.png> --markdown
Best Practices
- Provide both before and after sources (URLs or image paths) to ensure a valid diff.
- Use viewport flags (--mobile, --tablet, or --full) when responsiveness matters.
- Leverage --markdown to automatically upload images and generate a shareable markdown table.
- If you're separating states, consider using --selector to isolate the diff to a specific element.
- Check protected .vercel.app URLs and handle access with bypass tokens or manual capture if needed.
Example Use Cases
- Team compares production vs staging home page to verify a recent design change.
- PR reviewers see an automatically generated markdown diff appended to the PR body.
- Designers compare a redesigned hero section against the old version via specific selectors.
- A mobile-focused UI change is validated by capturing both desktop and mobile viewports.
- Two design mocks are compared against implemented pages by using two image paths.