visual-web-qa
This skill captures browser screenshots and videos to verify that frontend changes render correctly and behave as expected.
Identity proven by GitHub's verified organisation badge (getsentry)
- Agents
- Not labelled yet
- License
- Apache-2.0 (permissive)
- Pin
- 1745a29pinned Oct 9, 2026
- Context cost
- about 1,500 tokenswhen the skill loads
- GitHub stars
- 367on getsentry/junior
- Scripts
- None found
What it does
“Verifies user-visible web changes with scoped browser evidence and reports only what the captured screenshots, videos, or state checks support. Use when frontend, docs, CSS, layout, theme, responsive, navigation, loading, animation, or interaction changes need visual validation; use agent-browser for general automation that is not specifically visual QA.”
Generated summary from the skill's own text
This skill captures browser screenshots and videos to verify that frontend changes render correctly and behave as expected. It navigates to local development servers or preview deployments, waits for specific page states, and shares visual evidence with the user to confirm CSS, layout, animations, responsive behavior, and interactive features work as intended.
When to use it
- CSS, layout, typography, or theme changes need visual verification
- Loading states, animations, transitions, or interactions must be validated
- Responsive design across different viewport sizes requires testing
- Navigation flows, modals, hover states, or focus indicators need confirmation
When not to
- General browser automation that is not specifically visual QA
- Production verification of unmerged changes without explicit approval
- Capturing sensitive data like credentials or customer information
Install
These commands install from the publisher's repository and need no account.
skills CLI
npx skills add getsentry/junior --skill visual-web-qaInstalls from the repository's default branch, which may have changed since the commit we checked.
GitHub CLI 2.90 or later
gh skill install getsentry/junior visual-web-qa@1745a298365f0f001db0b3eec6de8a8347e0f6d9Installs the commit we checked (1745a29).
Copy by hand
Download the folder at 1745a29 and put it in .claude/skills/visual-web-qa for Claude Code and in .agents/skills/visual-web-qa for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode.
Claude Code plugin
/plugin install sentry@claude-plugins-officialThe publisher's plugin in Claude's official marketplace. It may hold more than this skill, and we have not pinned it.
Claude Code plugin
/plugin install sentry-cli@claude-plugins-officialThe publisher's plugin in Claude's official marketplace. It may hold more than this skill, and we have not pinned it.
Copy for your agent
A prompt for any coding agent. It installs this skill from GitHub at the pinned commit, copies the files as they are, and runs nothing unless you ask.
Prompt
Install the agent skill "visual-web-qa" by Sentry. Source, pinned to commit 1745a298365f0f001db0b3eec6de8a8347e0f6d9: https://github.com/getsentry/junior/tree/1745a298365f0f001db0b3eec6de8a8347e0f6d9/packages/junior-agent-browser/skills/visual-web-qa 1. Download that folder at exactly this commit. Do not use the default branch. 2. Copy every file unchanged, keeping the folder structure, into .claude/skills/visual-web-qa/ for Claude Code and .agents/skills/visual-web-qa/ for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode. Create the folders if they do not exist. 3. Do not edit the files, and do not run any script in the folder unless I ask you to. 4. When you are done, list the files you copied and where you put them. Listing and checks: https://www.agentnative.dev/skills/sentry/visual-web-qa
SKILL.md at the pin
---
name: visual-web-qa
description: Verifies user-visible web changes with scoped browser evidence and reports only what the captured screenshots, videos, or state checks support. Use when frontend, docs, CSS, layout, theme, responsive, navigation, loading, animation, or interaction changes need visual validation; use agent-browser for general automation that is not specifically visual QA.
spec_hash: 7dd651f9311c
allowed-tools: bash sendFiles
---
# Visual Web QA
Verify rendered behavior in a browser instead of inferring visual correctness from code. Choose the smallest set of evidence that directly answers the request.
## Workflow
1. Classify the requested behavior as stable, temporal, or exact-state verification.
2. Resolve a valid local, preview, or explicitly requested target URL.
3. Choose representative pages, states, viewports, and themes.
4. Capture browser evidence with meaningful waits and fresh element refs.
5. Share requested artifacts with `sendFiles` and verify delivery success.
6. Report the exact target, evidence, result, findings, and limitations.
## Choose Evidence
| Request | Primary evidence | Optional support |
| ----------------------------------------- | ---------------------------------- | ------------------------------------------------ |
| Layout, CSS, content, typography | Screenshot | DOM text or style check |
| Light and dark themes | Screenshot per relevant theme | Theme attribute check |
| Responsive behavior | Screenshot per relevant breakpoint | Video only if resize motion matters |
| Loading state, animation, transition | Short video | Screenshot for a distinct final-state question |
| Navigation or interaction sequence | Short video | Screenshot for a specific defect |
| Stable menu, modal, hover, or focus state | Screenshot | Video if the transition matters |
| Exact text, route, ARIA, or attribute | DOM check | Screenshot or video if the visible state matters |
Use screenshots for stable rendered states. Use short videos for timing, motion, loading, or sequence. A purely temporal request may use video without a redundant screenshot. DOM checks support visual evidence; they do not replace it when the user asks how something looks.
```bash
agent-browser --session visual-qa screenshot /tmp/visual-qa.png
agent-browser --session visual-qa screenshot --full /tmp/visual-qa-full.png
agent-browser --session visual-qa screenshot --annotate /tmp/visual-qa-issue.png
```
## Keep Scope Representative
- Check one to four representative pages or states unless the user requests broader coverage or the change spans more templates.
- Choose the viewport-theme combinations most likely to expose the issue instead of building an exhaustive matrix by default.
- State clearly when only part of the requested surface was verified.
## Resolve The Target
Use this order:
1. User-provided URL
2. Running local development server
3. Repo-native server such as `pnpm dev`
4. Preview deployment
5. Production as an explicitly requested or read-only baseline
6. `file://` output only when the site renders correctly without a server
Do not check production and claim an unmerged change is present. If no valid target is reachable, report **blocked** and name the missing server, preview, build, or authentication requirement.
## Capture Reliable State
Wait for the state that proves progress instead of adding arbitrary delays:
```bash
agent-browser --session visual-qa wait --url "**/expected-path"
agent-browser --session visual-qa wait --text "Expected text"
agent-browser --session visual-qa wait --load networkidle
agent-browser --session visual-qa wait 100
```
- Prefer URL or text waits for route and content changes.
- Use `networkidle` only when the action triggers real network activity.
- Use a short fixed wait only when an animation has no semantic completion signal.
- Run `snapshot -i` after navigation or significant DOM changes before using element refs.
For initial loading behavior, start recording before the first navigation:
```bash
agent-browser --session visual-qa set viewport 1440 900
agent-browser --session visual-qa record start /tmp/visual-qa-load.webm "$URL"
agent-browser --session visual-qa wait --load networkidle
agent-browser --session visual-qa record stop
```
For post-load interactions, explore first, then start recording. `record start` creates a fresh browser context and reloads the page, so discard earlier refs and run `snapshot -i` again before interacting. Stop recording as soon as the target behavior is captured. Never end a QA run with an active recording.
## Share Evidence
Use `sendFiles` for every artifact the user should receive:
```json
{
"files": [
{ "path": "/tmp/visual-qa.png" },
{ "path": "/tmp/visual-qa-load.webm" }
]
}
```
- Claim an artifact was shared only when `sendFiles` succeeds in this turn.
- If delivery fails or `sendFiles` is unavailable, report the error and saved paths without claiming attachment success.
## Protect Sensitive Data
Never capture or share credential entry, session tokens, customer data, or unrelated sensitive UI state. If reaching the target requires exposing that data, use an existing safe authenticated session or report the authentication requirement as a limitation or blocker.
## Report The Result
Report:
- **Target:** exact URL verified
- **Evidence:** screenshots, videos, and state checks gathered, with why each was chosen
- **Result:** pass, issues found, or blocked
- **Findings:** specific rendered behavior observed
- **Limitations:** requested pages, states, viewports, or themes not verified
Use **pass** only when the captured evidence matches the requested behavior without an obvious scoped regression. Use **issues found** for broken layout, incorrect motion, flicker, missing assets, or invalid states. Use **blocked** when no safe reachable target exists.
Never generalize beyond the evidence collected, and never claim a rendered change looks correct without opening a browser and gathering supporting evidence.
From getsentry/junior at 1745a29, shown as plain text under its license: Apache-2.0 (permissive). The license text is in LICENSE.
View SKILL.md on GitHub at 1745a29Files
- SKILL.md6.4 KB · 67400f1f1e84
- SOURCES.md993 B · f513a85252dc
- evals/
- cases/
- representative-coverage.yaml758 B · e278d1ed06ee
- static-visual-verification.yaml787 B · 5057622a3f60
- target-resolution.yaml514 B · 27e029663ca7
- temporal-visual-verification.yaml744 B · d8f99fb5dc32
- fixtures/
- visual-site/
- site/
- guide.html1.1 KB · 78b38918b450
- index.html1.6 KB · a478969905c4
- loading.html1.8 KB · 372c95eb9150
- reference.html1.0 KB · cb325adc420e
- styles.css2.2 KB · 4a0bf0519fd1
- spec.md4.3 KB · 7dd651f9311c
12 files, 22 KB in total. Each file has a sha256 in the pin's manifest; the first 12 characters are shown.
Skill folder on GitHub at 1745a29More from Sentry
claude-settings-audit
This skill analyzes a repository to detect its tech stack, build tools, and service integrations, then generates recommended Claude Code settings.json…
Claude Code · about 2.9K tokens · pinned 6 days ago
commit
This skill enables the agent to create conventional commit messages following Sentry's style guide.
Claude Code, Codex, Cursor +4 · about 430 tokens · pinned 6 days ago
django-access-review
This skill guides agents through investigating Django and Django REST Framework code for IDOR and access control vulnerabilities.
Claude Code, Codex, Cursor +4 · about 2.5K tokens · pinned 6 days ago
django-perf-review
This skill audits Django codebases for performance problems by validating issues through code tracing before reporting.
Claude Code, Codex, Cursor +4 · about 2.8K tokens · pinned 6 days ago
iterate-pr
This skill automates PR iteration by fetching CI check statuses and review feedback, then fixing actionable failures and high/medium priority comments until…
Contains scripts
Claude Code · about 1.2K tokens · pinned 6 days ago
pr-writer
This skill helps agents write clear, reviewer-focused PR titles and descriptions by inspecting the branch, diff, and existing PR state, then crafting concise…
Claude Code, Codex, Cursor +4 · about 1.3K tokens · pinned 6 days ago
Related in Testing and QA
next-partial-prefetching-optimizer
This skill optimizes Next.js client-side navigation under Partial Prefetching by defining what UI loads before and after a click.
by VercelOfficial publisher
Claude Code, Codex, Cursor +4 · about 2.8K tokens · pinned 6 days ago
Invalid--Name
This skill cannot be described because its name format is invalid and no functional description or instructions are provided in the skill metadata.
by CrewAIOfficial publisher
Claude Code, Codex, Cursor +4 · about 0 tokens · pinned 6 days ago
chrome-devtools-cli
This skill enables agents to automate browser interactions and inspect web pages using Chrome DevTools via command-line interface.
by GoogleOfficial publisher
Claude Code, Codex, Cursor +4 · about 2.9K tokens · pinned 6 days ago
triaging-visual-review-runs
Inspects PostHog Visual Review screenshot regression runs that gate pull requests, helping engineers triage diff results, identify flaky stories, and decide…
by PostHogOfficial publisher
Claude Code, Codex, Cursor +4 · about 8.9K tokens · pinned 6 days ago
code-change-verification
Runs formatting, linting, type checking, and test verification for SDK code changes after review.
by OpenAIOfficial publisher
Contains scripts
Codex · about 1.3K tokens · pinned 6 days ago
runtime-behavior-probe
This skill guides agents to plan and execute controlled runtime investigations with explicit user approval before each probe runs.
by OpenAIOfficial publisher
Contains scripts
Claude Code, Codex, Cursor +3 · about 3.8K tokens · pinned 6 days ago