pr-screenshots
Skill5 starsChanged 6 days agoMITView on GitHub
Attach screenshots or screen recordings to a GitHub pull request, issue or comment without leaking them - uses `gh --attach`, never gists, public repos or outside image hosts. Use whenever a PR or issue should show a UI change, a before/after, a visual bug, a test failure screenshot or a demo video, especially on private repos.
- Deletes or force-pushes
- Commits and pushes
15 other projects use a version of this.
Adopted by
Most recently taken up by
- github/squadtheir own version, first seen Nov 8, 2026
- Venkateshvenki404224/shipcraft-skillstheir own version, first seen Nov 1, 2026
- github/awesome-copilottheir own version, first seen Oct 25, 2026
- michalklejdysz/pr-visualstheir own version, first seen Oct 25, 2026
- nabondance/stratatheir own version, first seen Oct 25, 2026
- microsoft/github-vteam-industry-demostheir own version, first seen Oct 25, 2026
Used with
Projects with it also use security-review.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
SentrySkillsecurity-review
Finds exploitable application security vulnerabilities in code changes. Use for Warden security scans, appsec review, OWASP-style checks, authentication or authorization bugs, injection, XSS, SSRF, path traversal, secrets, unsafe crypto, webhook verification, open redirects, or sensitive data exposure.
Also in 3 projects that use this
Other versions15 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 15
- github/awesome-copilot★ 41ksame name
- github/gh-aw★ 5.6ksame name
- lukevella/rallly★ 5.4ksame name
- github/squad★ 3.4ksame name
- levy-street/world-of-claudecraft★ 2.3ksame name
- getsentry/skills★ 1.1ksame name
- BrOrlandi/my-claude-skills★ 22same name
- nanosite-ai/nanoflow★ 15same name
- bwhtech/skills★ 3same name
- krimvp/xpl★ 2same name
5 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
The file
We split this skill into the rules it gives an agent
3 rules. 0 are common, 2 are distinctive, and 1 is very specific to this project.
0
Common
Most of the 14 edited versions we read keep these.
2
Distinctive
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 28
Check gh: Run gh --version. You need 2.99.0 or later and push access to the repo.
- Distinctive: line 34
Check what's in each image: Look at every screenshot before you upload it.
- Distinctive: line 52
Attach: every file that the body references.
“Common” is measured: kept by at least 6 in 10 of the 14 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
PR screenshots
Show UI changes on the PR itself, in a way that keeps private screenshots private.
The rule
Upload with gh ... --attach and nothing else. Never put a screenshot in a
gist, a new or existing public repo, a public bucket, a pastebin or an image
host, even "temporarily", and even if the PR "just needs a link".
Why: GitHub stores --attach uploads as ordinary comment attachments.
On a private repo, only signed-in users with access to that repo can open
them. Before --attach existed, agents that couldn't attach images pushed
them to public repos and gists instead, and thousands of internal
screenshots leaked that way
(The New Stack).
A screenshot of a private app can show customer data, internal URLs and
tokens, so a public upload is a data leak even when the code isn't secret.
Steps
- Check gh. Run
gh --version. You need 2.99.0 or later and push access to the repo. If either is missing, stop and tell the human. Don't fall back to another host. - Capture the images or videos (PNG, GIF, WebP, SVG, MP4, MOV or WebM)
into a scratch directory outside the repo, for example
SHOTS="$TMPDIR/shots". That way they don't get committed by accident. - Check what's in each image. Look at every screenshot before you upload it. Crop or redact visible secrets, tokens, personal data and production records. If you can't redact something, leave that image out and say so in the PR. Deleting the comment doesn't delete the upload; only a GitHub Support ticket removes it. When in doubt, leave the image out.
Write the body as
$SHOTS/body.md, next to the images. Put local references where the images should go. gh resolves paths in a--body-filerelative to that file's directory, and replaces each reference to an attached file with the uploaded URL:## Screenshots | Before | After | |---|---| |  |  |Attach every file that the body references. Pass absolute paths, and run gh from the repo:
gh pr create --title "..." --body-file "$SHOTS/body.md" \ --attach "$SHOTS/before.png" --attach "$SHOTS/after.png" gh pr edit 42 --body-file "$SHOTS/body.md" \ --attach "$SHOTS/before.png" --attach "$SHOTS/after.png" gh pr comment 42 --body "Error after retry:" \ --attach "$SHOTS/error.png#Checkout error after retry"The text after
#is alt text (images only). Repeat--attachfor each file, up to 50 per command. A file the body doesn't reference is appended at the end. The same flag works ongh issue create|edit|comment.- Verify. For a PR body, run
gh pr view 42 --json body. For a comment, rungh pr view 42 --json comments(for an issue, usegh issue view N --json body,comments). Check that every image URL is agithub.com/user-attachments/...link, not a local path. - Clean up. Once the upload is verified, run
rm -rf "$SHOTS". gh doesn't delete local files, and the temp directory is usually cleared only on reboot, so the screenshots would otherwise stay on disk.
When --attach can't be used
Some setups only use a token with the REST or GraphQL API, such as a GitHub
App or an Action that doesn't have gh. The API has no upload endpoint.
Pick one of these, in order:
- Install
ghin that environment and call it. - Otherwise, write in the PR that screenshots are missing and why, and tell the human. Missing screenshots are better than leaked ones. Committing images to the repo (even on a throwaway branch) keeps them in git history for every clone and fork, so do that only if the human approves it for this task.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

