uploads.sh — the missing upload command for coding agentsThe missing upload command for coding agents.<br>GitHub has no real way for an agent to show their work. Capture screenshots as you go — they're staged for the branch automatically — and by the time the PR opens, it's already furnished with one tidy comment.<br>installnpm install -g @buildinternet/uploadscopy<br>Or have your agent set it up --state before (or --state after). On a branch, a bare put stages it automatically — no --branch flag, no PR needed yet. uploads screenshot captures and hosts in one step if that's easier.<br>- Check what's queued anytime with uploads staged.<br>- Open the PR (gh pr create or the GitHub UI) and the staged files promote automatically — the single attachments comment appears with no extra upload command at PR time.<br>- Already have an open PR or issue to target directly instead? uploads attach does that immediately.<br>- Tag uploads with --meta key=value (e.g. --meta path=/settings) so we can find them again later with uploads find.
Last: tell me to install the GitHub App at https://github.com/apps/uploads-sh — you can't, it needs my browser and repo-owner permission. With it, comments post as the `uploads-sh` bot and staged screenshots promote themselves when the PR opens.
Finally, update AGENTS.md (or CLAUDE.md) so that whenever UI changes, screenshots get captured at each milestone as you work going forward.
Docs: https://uploads.sh/docs<br>Agent guide: https://uploads.sh/github-screenshots<br>Source (and where to look if something breaks): https://github.com/buildinternet/uploads" aria-live="polite" data-astro-cid-lcdefpme>copy prompt<br>bash<br># capture as you work — no PR yet<br>$ uploads put ./after.png<br>>> uploading ./after.png<br>note: staged for branch feat/nav — auto-attaches to this branch's PR when it opens…
$ gh pr create<br>>> https://github.com/you/app/pull/123
└─▶ your PR opens already furnished:
uploads-shbotcommented just nowmanaged by uploads.sh<br>📎 Attachments
before.webp<br>after.webp
# tag it, find it later<br>Every upload can carry custom tags — add your own with --meta, and uploads find brings it all back. Use it to organize visuals from specific parts of your app, form factor, etc.<br># tag it on the way up (source URL, app, etc)<br>$ uploads put ./settings.png --meta path=/account/settings<br>MARKDOWN: 
# find it again later ("Do we have any recent screenshots of settings?")<br>$ uploads find path=/settings<br>gh/you/app/pull/123/settings.webp path=/account/settings<br>gh/you/app/pull/456/redesign.webp path=/settings
# what else it does<br>stage as you go<br>A plain upload on a branch stages automatically — no extra flag needed. A staged view (uploads staged) shows what's queued and whether it'll auto-attach, and re-running it later updates the same comment instead of adding a new one. Promotion never breaks a URL you've already embedded.
device frames<br>Wrap a raw screenshot in device chrome — phone, browser, or a specific iPhone — with --frame.
one-shot screenshots<br>uploads screenshot captures and hosts in one step, with both local and remote browser support.
shareable galleries<br>Group uploads into a gallery that can live across multiple PRs — one link for the whole set that shows linked issues and pull requests.
# get set up<br>clinpm install -g @buildinternet/uploads && uploads logincopy<br>agentsuploads install # skill + mcpcopy<br>promptSet up with your agent --state before (or --state after). On a branch, a bare put stages it automatically — no --branch flag, no PR needed yet. uploads screenshot captures and hosts in one step if that's easier.<br>- Check what's queued anytime with uploads staged.<br>- Open the PR (gh pr create or the GitHub UI) and the staged files promote automatically — the single attachments comment appears with no extra upload command at PR time.<br>- Already have an open PR or issue to target directly instead? uploads attach does that immediately.<br>- Tag uploads with --meta key=value (e.g. --meta path=/settings) so we can find them again later with uploads find.
Last: tell me to install the GitHub App at https://github.com/apps/uploads-sh — you can't, it needs my browser and repo-owner permission. With it, comments post as the `uploads-sh` bot and staged screenshots promote themselves when the PR opens.
Finally, update AGENTS.md (or CLAUDE.md) so that whenever UI changes, screenshots get captured at each milestone as you work going forward.
Docs: https://uploads.sh/docs<br>Agent guide: https://uploads.sh/github-screenshots<br>Source (and where to look if something breaks): https://github.com/buildinternet/uploads" aria-live="polite" data-astro-cid-lcdefpme>copy prompt<br>▸ paste the prompt into your coding agent — or read the full guide.
sign in with GitHubfree to start in the cloud · open source to self-host
Maintained by Zach Dunn / Build Internet.<br>Release notes registry for agents — releases.sh →