About github-image-hosting
github-image-hosting is a skill for uploading images to img402.dev and embedding the returned URLs in GitHub Markdown. It explains retention by file size, upload commands, and workflows for adding images to pull requests and issues.
Key features
- 01Upload images to img402.dev
- 02Return URLs for Markdown embeds
- 03Explain size-based retention
- 04Use gh CLI in pull requests and issues
- 05Support PNG, JPEG, GIF, and WebP
Use cases
- 01Adding screenshots to pull request descriptions
- 02Posting images in GitHub issue comments
- 03Embedding diagrams in a README
- 04Sharing review captures with size-based expiry
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ img402/ skills --skill github-image-hostingAfter installing, type/github-image-hostingin Claude Code to confirm it loaded.
Details
From the project READMEImage Upload for GitHub
Upload an image to img402.dev and embed the returned URL in GitHub markdown.
Screenshots are free and permanent. A UI screenshot is typically 100–400 KB, well under the 1 MB threshold where free hosting never expires — so a link you drop in a PR won't rot into a broken image six months later. You almost never need a paid tier here.
Pick a tier
| Upload | Price | Retention | Use when |
|---|---|---|---|
| ≤ 1 MB | $0 | Permanent | PR screenshots, issue comments, mockups, README diagrams |
| 1–10 MB | $0 | 30 days | Large captures you only need during review |
| Up to 10 MB | $0.01 USDC | Permanent | Large README hero images, public blog visuals |
* Paid permanence is service-life retention with a 90-day on-site shutdown notice — see Terms § 2A.
Quick reference
# Upload (multipart)
curl -s -X POST https://img402.dev/api/free -F image=@/tmp/screenshot.png
# Response — expiresAt is null for images 1MB and under
# {"url":"https://i.img402.dev/aBcDeFgHiJ.png","id":"aBcDeFgHiJ","contentType":"image/png","sizeBytes":182400,"expiresAt":null}
Workflow
- Get image: Use an existing file, or capture a screenshot:
screencapture -x /tmp/screenshot.png # macOS — full screen screencapture -xw /tmp/screenshot.png # macOS — frontmost window - Upload:
curl -s -X POST https://img402.dev/api/free -F image=@/tmp/screenshot.png - Check
expiresAt:nullmeans permanent. A timestamp means the file was over 1 MB and will be deleted then — if the image needs to outlive that, shrink it under 1 MB and re-upload:sips -Z 1600 /tmp/screenshot.png # macOS — scale longest edge to 1600px - Embed the returned
urlin GitHub markdown:
GitHub integration
Use gh CLI to embed images in PRs and issues:
# Add to PR description
gh pr edit --body "$(gh pr view --json body -q .body)
"
# Add as PR comment
gh pr comment --body ""
# Add to issue
gh issue comment 123 --body ""
Constraints
- Max size: 10 MB (every tier)
- Formats: PNG, JPEG, GIF, WebP
- Rate limit: 100,000 free uploads/day globally, 1,000/day per IP
- No auth required
Tips
- Prefer PNG for UI screenshots (sharp text). Use JPEG for photos.
- Keeping screenshots under 1 MB is worth doing on purpose: it's the line between a permanent URL and one that expires in 30 days.
sips -Z 1600usually gets there with no visible quality loss. - When adding to a PR body or comment, use
gh pr commentorgh pr editwith the image markdown.
Paid tier
For images over 1 MB that need to be permanent, pay via x402 for a token, then upload with it:
# Step 1: Get an upload token
POST https://img402.dev/api/upload/token # $0.01 USDC → permanent, up to 10MB
# → {"token": "a1b2c3...", "expiresAt": "..."}
# Step 2: Upload with the token
curl -s -X POST https://img402.dev/api/upload \
-H "X-Upload-Token: a1b2c3..." \
-F image=@/tmp/screenshot.png
# → {"url":"...", "expiresAt":null} # null = permanent
POST /api/upload/token/permanent still exists at $1.00 USDC — a legacy alias for what $0.01 now does. Don't use it for new work.
x402 payment is handled by an x402-capable client (the Payments MCP tool, @x402/client, or similar). See https://img402.dev/blog/paying-x402-apis.
Public access
Uploaded images are reachable by anyone with the URL — there is no auth on serving, and most uploads are now permanent. Never upload screenshots containing internal systems, credentials, tokens, or customer data. To remove an image, email [email protected].