Make every pull request show its change, not describe it.
An Agent Skills skill: before/after screenshots for UI work, one snippet for everything else.
| Without the skill | With the skill |
|---|---|
|
|
The same change, pull request #3, written up both ways. The right side is an excerpt of its real description, rendered with GitHub's Markdown styles.
| Rule | Why |
|---|---|
| UI change → before and after screenshots, same screen, device, and state | The reviewer sees what moved without reading the diff |
| Any other change → one snippet, the lines that carry it | A tour of every file hides the change |
| Capture "before" first, on the base branch | Rebuilding the old version later costs a second build |
| Clean environment: emulator, simulator, or fresh browser profile, throwaway account | Real names, hostnames, and messages stay out of a public repo |
Images on a non-merging pr-assets branch, a fresh path per capture |
GitHub has no upload API, and its cache keeps serving overwritten images |
| Six-section PR body, unless the repo has its own template | Every PR reads the same way |
The image-hosting rules are GitHub-specific; the rest applies to GitLab merge requests too.
flowchart TD
change{UI change?}
change -- yes --> before[Capture before]
before --> build[Build]
build --> after[Capture after]
after --> assets[Push to pr-assets]
assets --> table[Before/after table]
change -- no --> snippet[One snippet]
This README's own redesign in pull request #3, laid out the way the skill writes a screenshots section:
| Before | After |
|---|---|
|
|
The Markdown behind a screenshots section
The images live on the repository's non-merging pr-assets branch, one fresh folder per capture:
## Screenshots
| Before | After |
| --- | --- |
| ![Before][before] | ![After][after] |
[before]: https://github.com/ArefMozafari/pr-evidence/blob/pr-assets/3/1/readme-before-light.png?raw=true
[after]: https://github.com/ArefMozafari/pr-evidence/blob/pr-assets/3/1/readme-after-light.png?raw=trueManual install
Copy the skills/pr-evidence folder into your agent's skills directory:
| Agent | Directory |
|---|---|
| Claude Code | ~/.claude/skills/ |
| Codex, Gemini CLI, GitHub Copilot, Cursor, Windsurf, OpenCode, Goose, Amp | ~/.agents/skills/ |
| Cline | ~/.cline/skills/ |
Development
Every push is checked by .github/workflows/validate.yml.
To run the skill and Claude Code checks locally from the repository root:
uvx --from skills-ref==0.1.1 agentskills validate skills/pr-evidence
claude plugin validate --strict .claude-plugin/marketplace.json
claude plugin validate --strict .claude-plugin/plugin.jsonThe workflow also checks the Gemini manifest's fields and validates the Cursor manifests against the JSON schemas Cursor publishes.
- review-findings: report every code review finding in one shape, ready to paste.
- review-replies: answer review comments on your own pull request one thread at a time.
- post-merge-cleanup: clean up branches, worktrees, and stale notes once a pull request has merged.
MIT. See LICENSE.