New to Claude Skills? Learn how to install them →

github on GitHub

PR Screenshots

OfficialFree

Enhance pull requests with visual context.

by github37.7k stars on github/awesome-copilot
9 views
Updated Aug 10, 2026
Get this skill

Free · Opens the source repo

What PR Screenshots does

PR Screenshots is a skill designed to help developers and designers effectively communicate visual changes in their pull requests (PRs). By embedding before and after screenshots directly in the PR description, reviewers can quickly grasp the impact of changes without needing to check out the branch. This skill is particularly useful for visual changes such as layout adjustments, styling updates, and modifications to UI components, ensuring that the visual context is clear and accessible to all reviewers.

The skill provides a straightforward pattern for embedding images in PR descriptions. Users are guided to place screenshots prominently within the description, avoiding collapsible sections that could be overlooked. By keeping the accompanying text concise, the focus remains on the images, which serve as the primary means of communication. This approach not only improves the review process but also helps maintain a high standard of clarity and professionalism in code reviews.

Additionally, PR Screenshots includes practical guidelines for capturing and uploading images. It covers best practices for image sizing and provides specific instructions for uploading images to both Azure DevOps and GitHub. While Azure DevOps offers a more straightforward API for image uploads, GitHub users may need to utilize workarounds due to the lack of a public API for PR description images. This skill ensures that users are aware of these nuances, helping them avoid common pitfalls such as image corruption or incorrect upload methods.

Overall, PR Screenshots is an invaluable tool for teams that prioritize visual clarity in their code reviews, enabling them to communicate changes effectively and streamline the review process.

When to use it

Use this skill when submitting a pull request that includes visual modifications, such as UI changes or styling adjustments.

When not to use it

This skill is less relevant for pull requests that involve backend changes or non-visual code updates where screenshots are unnecessary.

What you can build with it

Visual UI Changes

When updating UI components, use this skill to showcase the before and after states, making it easier for reviewers to understand the impact.

Styling Adjustments

For PRs that involve layout or CSS changes, embed screenshots to provide clear visual context for the modifications.

Data Visualizations

When altering charts or dashboards, include before and after images to highlight improvements or corrections in data presentation.

How to install PR Screenshots

View source

1. Install with the skills CLI

npx skills add github/awesome-copilot/pr-screenshots --agent claude-code

2. Or install it manually

Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.

Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs

Inside SKILL.md

Written by github

PR Screenshots

Embed before/after screenshots in pull request descriptions so reviewers can see the visual change without checking out the branch.

When to Use This Skill

Use this skill when a PR changes something visible:

  • Layout, styling, CSS
  • Charts, dashboards, data visualizations
  • UI components, forms, modals
  • Error messages, CLI output, log formatting

PR Description Pattern

Place screenshots directly in the PR description body. Avoid wrapping them in <details> collapse — reviewers are more likely to look at images they can see without clicking.

**Before** — brief description of the problem:

![before](url-to-before-image)

**After** — brief description of the fix:

![after](url-to-after-image)

Keep the text brief. A sentence or two per image describing what the reader should notice. Let the image carry most of the communication.

Multiple changes

For PRs with several visual changes, use separate before/after pairs with headings:

## Filter bar alignment

**Before** — 1px border clash between adjacent buttons:

![before-filters](url)

**After** — borders overlap cleanly, hover tint added:

![after-filters](url)

## Chart tooltip

**Before** — tooltip clipped at container edge:

![before-tooltip](url)

**After** — tooltip repositions to stay visible:

![after-tooltip](url)

Image Sizing

  • Take screenshots at native 1x resolution — don't resize with PIL (creates artifacts)
  • Control display size in HTML when images are too large:
    <img src="url" width="600" alt="description">
    
  • Before/after pairs must use the same viewport width and crop — otherwise the comparison is meaningless

Uploading Images

Azure DevOps

Upload images as PR attachments via the REST API:

$token = az account get-access-token `
    --resource "499b84ac-1321-427f-aa17-267ca6975798" `
    --query accessToken -o tsv

$base = "https://{org}.visualstudio.com/{projectId}/_apis/git/repositories/{repoId}"
$url = "$base/pullRequests/{prId}/attachments/screenshot.png?api-version=7.1-preview.1"

# Use HttpClient — Invoke-RestMethod can corrupt binary data
$client = New-Object System.Net.Http.HttpClient
$client.DefaultRequestHeaders.Authorization = `
    New-Object System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", $token)
$content = New-Object System.Net.Http.ByteArrayContent(
    , [System.IO.File]::ReadAllBytes("screenshot.png")
)
$content.Headers.ContentType = `
    [System.Net.Http.Headers.MediaTypeHeaderValue]::new("application/octet-stream")
$resp = $client.PostAsync($url, $content).Result

Reference in the PR description:

![description](https://{org}.visualstudio.com/{projectId}/_apis/git/repositories/{repoId}/pullRequests/{prId}/attachments/screenshot.png)

Azure DevOps gotchas:

  • Use {org}.visualstudio.com NOT dev.azure.com/{org} — AzDO's markdown renderer uses .visualstudio.com. The dev.azure.com format loads noticeably slower
  • Use POST not PUT (PUT returns 405)
  • API version must be 7.1-preview.1
  • Can't re-upload with the same filename — use a new name (e.g. screenshot-v2.png)
  • Use HttpClient not Invoke-RestMethod — IRM can corrupt binary data
  • Repo-relative paths don't work in PR descriptions — must use full URLs
  • Don't commit images to the branch just for PR screenshots

GitHub

⚠️ Work in progress. GitHub's drag-and-drop image upload uses internal endpoints that require browser cookies. There's no clean public API for uploading images to PR descriptions yet.

Current workaround: Commit images to a pr-assets orphan branch and reference via blob URLs (github.com/{owner}/{repo}/blob/pr-assets/{file}?raw=true). It works but is clunky — contributions for a better approach are welcome.

Guidelines

  1. Capture before state BEFORE making changes — it's easy to forget, and reconstructing the original state later is slow and error-prone
  2. Keep descriptions brief — a sentence or two per image pointing out what changed is enough
  3. Prefer visible images over collapsed sections — screenshots behind <details> tags are easy to skip
  4. Annotate when the change is subtle — use the image-annotations skill to add callouts when the difference isn't immediately obvious
  5. Match viewport and crop between before/after pairs so the comparison is meaningful

Limitations

  • GitHub image upload requires workarounds (no public API for PR description images)
  • Azure DevOps attachment filenames can't be reused — plan naming ahead
  • Very large images (>10MB) may not render inline on some platforms

Frequently asked questions about PR Screenshots

Similar skills