Agent skill

Upload Screenshot

by openshift-eng in openshift-eng/ai-helpers

Upload screenshots or images to GitHub and get back embeddable URLs for PR comments and issues.

Apache-2.0Auto-check passed

Install Upload Screenshot

skills CLI
$ npx skills add openshift-eng/ai-helpers --skill upload-screenshot -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install openshift-eng/ai-helpers upload-screenshot --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/openshift-eng/ai-helpers.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/github/skills/upload-screenshot .claude/skills/upload-screenshot && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
upload-screenshot
GitHub stars
120
Token cost
~1.3k tokens
SKILL.md length
504 words
Files
2
Skills in repo
118
Repo updated
First seen
Licence
Apache-2.0

At a glance

Upload screenshots or images to GitHub and get back embeddable URLs for PR comments and issues.

  • Works in 2 steps: gh CLI: Authenticated with gh auth login → Repository write access: The gh token…
  • SKILL.md covers When to Use This Skill, Prerequisites, Implementation and How It Works, plus 4 more sections
  • Runs Shell scripts from its folder; calls gh, bash and jq; reaches github.com; needs GITHUB_TOKEN and GH_FORK_TOKEN

What it does

Upload Screenshot is an agent skill from openshift-eng/ai-helpers. Upload screenshots or images to GitHub and get back embeddable URLs for PR comments and issues. Use this when you have taken a screenshot, captured a UI change, or have any image file that needs to be shared in a GitHub PR or issue.

Its SKILL.md is about 1.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `upload_screenshot.sh`).

It works with GitHub. The repository describes itself as: Developer productivity tools for Claude Code & other AI assistants. The licence is Apache-2.0.

Example prompts

  • “/upload-screenshot”

Requirements

  • A Bash shell
  • A credential in GITHUB_TOKEN
  • A credential in GH_FORK_TOKEN

Workflow steps

2 steps, taken from the first numbered list in SKILL.md.

  1. gh CLI: Authenticated with gh auth login
  2. Repository write access: The gh token must have permission to create releases on the target repo

What it can do on your machine

Read from SKILL.md and the folder at commit a627176. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships script files (Shell), which the agent can run.

    Shell commands in SKILL.md call:

    • gh
    • bash
    • jq

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • github.com

    Also links to:

    • docs.github.com
    • cli.github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • GITHUB_TOKEN
    • GH_FORK_TOKEN

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Upload Screenshot loads about 1.3k tokens when it runs. Until then it costs about 63 tokens; SKILL.md has 504 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~63
When it runs · the whole SKILL.md, loaded when a task matches
~1.3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from openshift-eng/ai-helpers at commit a627176, republished under its Apache-2.0 licence (© openshift-eng). 504 words, ~1,305 tokens.

Download SKILL.mdSave it as .claude/skills/upload-screenshot/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
upload-screenshot
description
Upload screenshots or images to GitHub and get back embeddable URLs for PR comments and issues. Use this when you have taken a screenshot, captured a UI change, or have any image file that needs to be shared in a GitHub PR or issue.

Upload Screenshot

Upload images to GitHub via release assets and get back stable, embeddable URLs. This is the recommended way to share screenshots of frontend changes, UI diffs, or any visual artifacts in PR comments and issue descriptions.

Important: Always upload to the fork repo, not upstream, to avoid polluting upstream releases.

When to Use This Skill

Use this skill when you:

  • Have taken a screenshot of a frontend/UI change and need to show it in a PR
  • Need to attach visual evidence (error screenshots, UI comparisons) to a GitHub issue or PR comment
  • Want to embed an image in any GitHub markdown context (PR description, comment, issue)
  • Are working in an agentic workflow and need to share visual output

Prerequisites

  1. gh CLI: Authenticated with gh auth login
  2. Repository write access: The gh token must have permission to create releases on the target repo

Implementation

Upload a screenshot
bash
bash "${CLAUDE_PLUGIN_ROOT}/skills/upload-screenshot/upload_screenshot.sh" \
  --file /path/to/screenshot.png \
  --repo owner/fork-repo
Upload with a custom title
bash
bash "${CLAUDE_PLUGIN_ROOT}/skills/upload-screenshot/upload_screenshot.sh" \
  --file /path/to/screenshot.png \
  --repo owner/fork-repo \
  --title "Login page after dark mode changes"
Parameters
ParameterRequiredDescription
--fileYesPath to the image file (png, jpg, gif, svg, webp)
--repoNoTarget GitHub repository in owner/repo format (defaults to $FORK_REPO env var)
--titleNoAlt text for the image (defaults to filename)
--token-fileNoPath to a file containing a GitHub token to use for auth

When --token-file is provided, the token is loaded into GITHUB_TOKEN for the duration of the script. This is useful in CI where the default GITHUB_TOKEN may not have write access to the target repo.

Environment variable defaults: If --repo is not provided, the script uses $FORK_REPO. If no explicit token is provided via --token-file, the script uses $GH_FORK_TOKEN when available. This means in CI environments where these env vars are set, you can call the script with just --file and it will upload to the correct fork with the right credentials.

Output

JSON on stdout:

json
{
  "url": "https://github.com/owner/fork-repo/releases/download/screenshot-1719100000-a1b2c3d4/screenshot.png",
  "markdown": "![Login page](https://github.com/owner/fork-repo/releases/download/screenshot-1719100000-a1b2c3d4/screenshot.png)",
  "tag": "screenshot-1719100000-a1b2c3d4",
  "repo": "owner/fork-repo"
}
Show full SKILL.md (201 more words)Show less
Embedding in a PR comment

After uploading, use the markdown field directly in a gh pr comment:

bash
result=$(bash "${CLAUDE_PLUGIN_ROOT}/skills/upload-screenshot/upload_screenshot.sh" \
  --file /tmp/screenshot.png --repo owner/fork-repo --title "UI change")

markdown=$(echo "$result" | jq -r '.markdown')
gh pr comment 123 --repo owner/upstream-repo --body "## Screenshot

$markdown"

How It Works

  1. Creates a GitHub prerelease with a unique tag (screenshot-<timestamp>-<random>)
  2. Attaches the image file as a release asset
  3. Extracts the browser_download_url from the GitHub API
  4. Returns the URL in both raw and markdown-formatted forms

The release is marked as a prerelease and tagged with a screenshot- prefix for easy identification and cleanup.

Cleanup

Screenshot releases accumulate over time. To clean up old uploads:

bash
# Delete a specific screenshot release
gh release delete screenshot-1719100000-a1b2c3d4 --yes --cleanup-tag --repo owner/fork-repo

# Delete all screenshot releases older than 30 days
gh api "repos/owner/fork-repo/releases" --paginate --jq \
  '.[] | select(.tag_name | startswith("screenshot-")) | select(.prerelease) | .tag_name' | \
  while read -r tag; do
    gh release delete "$tag" --yes --cleanup-tag --repo owner/fork-repo
  done

Limitations

  • URLs are only accessible as long as the release exists
  • For private repos, viewers must have repo access to see the images
  • GitHub release asset size limit is 2 GB per file
  • Creates one release per upload (use cleanup to manage volume)

Error Handling

ErrorCauseResolution
Missing required arguments--file or --repo not providedProvide both required arguments
File not foundImage path doesn't existCheck the file path
Failed to create releaseAuth or permission issueRun gh auth login or check repo access
Failed to retrieve asset URLRelease created but asset missingRetry; the release is auto-cleaned on failure

See Also

© openshift-eng, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file in plugins/github/skills/upload-screenshot of openshift-eng/ai-helpers.

  • SKILL.md
  • upload_screenshot.sh

Open the folder on GitHubat commit a627176

Compare with similar skills

Upload Screenshot next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Upload Screenshot compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Upload Screenshot this skillopenshift-eng/ai-helpers120—~1.3kAutomated safety check: PassApache-2.0
PR Babysitteropeninterpreter/openinterpreter69k3 repos~4.2kAutomated safety check: PassApache-2.0
Diagnosing Superpowers Sessionsobra/superpowers296k3 repos~1.7kAutomated safety check: PassMIT
GitHub Deep Researchbytedance/deer-flow83k5 repos~1.3kAutomated safety check: PassMIT
Greplooponyx-dot-app/onyx32k4 repos~3.3kAutomated safety check: PassMIT
Update V8 Versionopeninterpreter/openinterpreter69k2 repos~845Automated safety check: PassApache-2.0

Similar skills

  • PR Babysitter

    openinterpreter/openinterpreter

    Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.

    69k GitHub starsUsed in 3 repos~4.2k tokens
    DevelopmentAuto-check passed
  • Investigates a session where Superpowers went wrong, reads the transcripts on disk and produces an evidence-cited report, optionally prepared as a bug report for the maintainers.

    296k GitHub starsUsed in 3 repos~1.7k tokens
    Agent WorkflowsAuto-check passed
  • GitHub Deep Research

    bytedance/deer-flow

    Researches a GitHub repository over four rounds using the GitHub API and web search, then writes a structured markdown report with timeline, metrics and Mermaid diagrams.

    83k GitHub starsUsed in 5 repos~1.3k tokens
    Research & ScienceAuto-check passed
  • Greploop

    onyx-dot-app/onyx

    Iteratively improves a PR (GitHub), MR (GitLab), or shelved changelist (Perforce) until Greptile gives it a 5/5 confidence score with zero unresolved comments.

    32k GitHub starsUsed in 4 repos~3.3k tokens
    DevelopmentAuto-check passed
  • Update V8 Version

    openinterpreter/openinterpreter

    Bumps the pinned v8 and rusty_v8 versions in Codex, validates the release-candidate path with the v8-canary check, and traces failures to upstream build changes.

    69k GitHub starsUsed in 2 repos~845 tokens
    DevOps & CloudAuto-check passed
  • Last30days

    mvanhorn/last30days-skill

    Research what people actually say about any topic in the last 30 days.

    64k GitHub stars~7.8k tokensUpdated today
    Research & ScienceAuto-check: notes

More from openshift-eng/ai-helpers

All 118 skills in this repo
  • Investigate CI Reliability

    openshift-eng/ai-helpers

    Find and independently validate actionable reliability defects across OpenShift release jobs and presubmits, then export portable issue handoffs.

    120 GitHub stars~1.9k tokensUpdated 2 days ago
    Auto-check passed
  • Address Review PR

    openshift-eng/ai-helpers

    Fetch and address all PR review comments — categorize by priority, make code changes, post replies, and push.

    120 GitHub stars~2.9k tokensUpdated 2 days ago
    Auto-check passed
  • Categorize Activity Types

    openshift-eng/ai-helpers

    Categorize Jira issues into Red Hat Sankey Activity Type categories using MCP Jira tools.

    120 GitHub stars~2.4k tokensUpdated 2 days ago
    Auto-check passed
  • Has Review Work

    openshift-eng/ai-helpers

    Decide whether a GitHub PR has unanswered authorized review comments or new required CI failures worth a follow-up agent.

    120 GitHub stars~1.9k tokensUpdated 2 days ago
    Auto-check passed
  • Must Gather Analyzer

    openshift-eng/ai-helpers

    Analyze OpenShift must-gather diagnostic data including cluster operators, pods, nodes, and network components.

    120 GitHub stars~2.3k tokensUpdated 2 days ago
    Auto-check passed
  • Payload Autodl JSON

    openshift-eng/ai-helpers

    Schema for the autodl JSON data file produced by payload-analysis for database ingestion — you must use this skill whenever generating the autodl JSON file

    120 GitHub stars~2.6k tokensUpdated 2 days ago
    Auto-check passed

Works with

Questions about Upload Screenshot

What does Upload Screenshot do?

Upload screenshots or images to GitHub and get back embeddable URLs for PR comments and issues. Upload Screenshot is an agent skill from openshift-eng/ai-helpers. Upload screenshots or images to GitHub and get back embeddable URLs for PR comments and issues.

How do I install Upload Screenshot in Claude Code?

Run `npx skills add openshift-eng/ai-helpers --skill upload-screenshot -a claude-code`. Or copy the skill folder (plugins/github/skills/upload-screenshot in openshift-eng/ai-helpers) into .claude/skills/upload-screenshot in your project. Claude Code loads it when a task matches its description.

How do I install Upload Screenshot in Codex?

Run `npx skills add openshift-eng/ai-helpers --skill upload-screenshot -a codex`. Or copy the skill folder (plugins/github/skills/upload-screenshot in openshift-eng/ai-helpers) into .agents/skills/upload-screenshot in your project. Codex loads it when a task matches its description.

Can I use Upload Screenshot in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add openshift-eng/ai-helpers --skill upload-screenshot -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/upload-screenshot, .gemini/skills/upload-screenshot, .github/skills/upload-screenshot and .opencode/skills/upload-screenshot in your project.

What does Upload Screenshot need to run?

Going by SKILL.md and its folder, Upload Screenshot needs a shell for the scripts in its folder, the command-line tools its instructions call (gh, bash and jq) and credentials named GITHUB_TOKEN and GH_FORK_TOKEN. Our summary lists: A Bash shell; A credential in GITHUB_TOKEN; A credential in GH_FORK_TOKEN.

Does Upload Screenshot access the network?

SKILL.md names 3 domains. In commands or code: github.com; the agent is likely to contact it when it follows the instructions. As links in the text: docs.github.com and cli.github.com. This is read from the text; nothing was executed.

Is Upload Screenshot safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Upload Screenshot use?

Upload Screenshot is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Upload Screenshot use?

About 1.3k tokens (SKILL.md is roughly 5.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Upload Screenshot?

Skills that share tags, products or a category with Upload Screenshot: PR Babysitter (openinterpreter/openinterpreter, 69k stars), Diagnosing Superpowers Sessions (obra/superpowers, 296k stars), GitHub Deep Research (bytedance/deer-flow, 83k stars) and Greploop (onyx-dot-app/onyx, 32k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Upload Screenshot?

openshift-eng (a GitHub organization) maintains it in openshift-eng/ai-helpers, which has 120 GitHub stars. The repository holds 118 skills in this directory. The repository was last updated on October 6, 2026.

Source: openshift-eng/ai-helpers on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.