Uploads local images to GitHub and returns user-attachments embed URLs for use in PRs, issues, comments, or README files.
How this skill is triggered — by the user, by Claude, or both
Slash command
/agentic-awesome-skills:gh-imageThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
GitHub has **no public API** for image uploads — the web UI uses an internal
GitHub has no public API for image uploads — the web UI uses an internal
endpoint that mints user-attachments URLs scoped to the repo's visibility.
gh-image (MIT, © drogers0) replicates
that flow as a gh CLI extension, so an agent can upload a local image from the
terminal and get a ready-to-embed Markdown image line back.
This skill drives gh-image to turn a local image file into a hosted GitHub
user-attachments URL, then embeds that URL into a pull request, issue, or
comment. It is the missing "attach a screenshot" capability for terminal agents.
Use this skill when asked to:
gh auth status # gh installed & authenticated
gh extension list | grep -q 'drogers0/gh-image' \
|| gh extension install drogers0/gh-image # review/pin the extension source first
gh-image does not use the gh token for the upload (that endpoint rejects
tokens). It needs a GitHub user_session cookie, resolved in this order:
--token <value> flag → GH_SESSION_TOKEN env var (use in CI/headless) → a
logged-in browser's cookie store (default for local use).
# Use an absolute path; --repo is optional inside a repo working dir.
gh image "/abs/path/screenshot.png" --repo <owner>/<repo>
gh image prints Markdown to stdout, one line per image:

Capture that output — it is the embeddable reference.
MD="$(gh image "/abs/path/shot.png" --repo owner/repo)"
BODY="$(gh pr view <pr> --repo owner/repo --json body -q .body)"
printf '%s\n\n## Screenshots\n\n%s\n' "$BODY" "$MD" \
| gh pr edit <pr> --repo owner/repo --body-file -
Use gh pr comment, gh issue edit, or gh issue comment with --body-file -
for other targets. Always pass --body-file - (not inline --body) so multi-line
bodies and special characters can't break shell quoting.
gh pr view <pr> --repo owner/repo --json body -q .body # confirm URL present
## Screenshots heading in the PR body.<img width="800" src="https://github.com/user-attachments/assets/<uuid>" />.GH_SESSION_TOKEN from a dedicated bot account.user_session cookie grants full account access
(not scoped like a PAT) — treat it like a password; use a bot account in CI.https://github.com/orgs/<org>/sso first.user-attachments URL inherits repo
visibility, so an anonymous fetch on a private repo returns 404/403 by design.GH_SESSION_TOKEN.gh-image only prints the URL.npx claudepluginhub francostino/antigravity-awesome-skills --plugin agentic-bundle-aas-oss-maintainer2plugins reuse this skill
First indexed Jul 2, 2026
Upload local images to a GitHub PR description or comment without committing them to the repo. Use when creating PRs that need before/after screenshots, visual diffs, or any embedded images.
Creates GitHub issues with embedded images by uploading images as release assets and embedding them in the issue body. Works around GitHub CLI's lack of native image attachment support.
Embed before/after screenshots and annotated images in pull request descriptions. Covers PR description patterns, image upload for Azure DevOps and GitHub, and sizing best practices.