Skip to main content

visual-verification

Verify application UI changes with uploaded screenshot or video artifacts

Zur Installation springen

Quellinformationen

Repository
ColeMurray/background-agents
Letzte Quellaktivität
17. Mai 2026 um 03:46
Erkannte Sprache von SKILL.md
Englisch
Sterne
3.232
Forks
461

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
visual-verification
description
Verify application UI changes with uploaded screenshot or video artifacts
# visual-verification Use this skill when the goal is to verify UI changes inside the application and return visual evidence in the Open-Inspect session. `agent-browser` remains the low-level browser tool. This skill defines the workflow contract for using it reliably. ## Key Fact `upload-media` is a **bash command** installed on PATH. Run it with your Bash tool, not as an MCP tool or tool binding. For videos, use `agent-browser record` directly, then probe and upload the resulting MP4 with `upload-media`. ## When To Use It - Verify a UI change after editing code - Capture before/after screenshots for comparison - Confirm responsive layout differences at a chosen viewport - Produce an uploaded screenshot or short video artifact the user can review in-session ## Success Criteria The task is not complete until all of these are true: 1. The changed UI is opened in the browser. 2. The capture mode is chosen explicitly: viewport screenshot, full-page screenshot, or video. 3. The viewport is set explicitly or reported as a deliberate default. 4. A screenshot or video is uploaded in the same prompt. 5. The returned `artifactId` is reported back to the user. 6. The response states what was verified and what dimensions/mode were used. ## Required Workflow 1. Open the target page with `agent-browser open`. 2. If viewport matters, set it explicitly with `agent-browser set viewport <width> <height>`. 3. Wait for the page to settle before capture. 4. Choose one of: - Viewport screenshot for above-the-fold or device-specific review - Full-page screenshot for full document review - Video recording for interaction flows, animations, transitions, or multi-step behavior 5. Upload the capture immediately with matching metadata. 6. Report the result with the artifact ID and actual capture settings. ## Default Decision Rules - Use a viewport screenshot when validating a specific visible state, modal, interaction, or desktop/mobile layout. - Use a full-page screenshot when the user asks for the whole page or when vertical content is part of the verification. - If the user names a device or screen size, set the viewport explicitly. - If the user does not specify dimensions and layout matters, choose a reasonable viewport and report it. - If the screenshot is intended to prove a fix, prefer stating exactly what was checked, not only that a screenshot was taken. - Use a video when the proof depends on seeing interaction over time, such as opening a menu, dragging, typing, navigating between states, or watching an animation complete. ## Using Screenshots From Other Sources If the screenshot already exists as a file — for example, captured via Playwright MCP (`playwright_browser_take_screenshot`), a manual capture, or any other tool — skip the `agent-browser` steps and upload the file directly: ```bash upload-media /path/to/existing-screenshot.png \ --caption "Description of what was captured" \ --source-url "$URL" ``` Add `--full-page` or `--viewport '{"width":1512,"height":982}'` as appropriate. The same reporting template and guardrails below still apply. For a dedicated upload-only workflow, see the `upload-screenshot` skill. ## Recommended Commands Viewport capture: ```bash agent-browser open "$URL" && \ agent-browser set viewport 1512 982 && \ agent-browser wait 2000 && \ agent-browser screenshot --json /tmp/verify.png && \ upload-media /tmp/verify.png \ --caption "UI verification screenshot" \ --source-url "$URL" \ --viewport '{"width":1512,"height":982}' ``` Full-page capture: ```bash agent-browser open "$URL" && \ agent-browser set viewport 1512 982 && \ agent-browser wait 2000 && \ agent-browser screenshot --full --json /tmp/verify-full.png && \ upload-media /tmp/verify-full.png \ --caption "Full-page verification screenshot" \ --source-url "$URL" \ --viewport '{"width":1512,"height":982}' \ --full-page ``` Annotated capture for review/debugging: ```bash agent-browser open "$URL" && \ agent-browser wait 2000 && \ agent-browser screenshot --annotate --json /tmp/verify-annotated.png && \ upload-media /tmp/verify-annotated.png \ --caption "Annotated UI verification screenshot" \ --source-url "$URL" \ --annotated ``` Video recording for interaction flows: ```bash set -e agent-browser open "$URL" agent-browser set viewport 1512 982 agent-browser snapshot -i STARTED_AT_MS=$(date +%s%3N) agent-browser record start /tmp/opencode/menu-recording.mp4 recording_started=1 cleanup_recording() { if [ "${recording_started:-0}" = "1" ]; then agent-browser record stop || true fi } trap cleanup_recording EXIT interaction_exit_code=0 agent-browser click "[data-testid=settings]" || interaction_exit_code=$? agent-browser wait 1000 || interaction_exit_code=$? agent-browser record stop recording_started=0 trap - EXIT ENDED_AT_MS=$(date +%s%3N) PROBE_JSON=$(ffprobe -v error -print_format json -show_streams -show_format /tmp/opencode/menu-recording.mp4) DURATION_MS=$(node -e 'const p=JSON.parse(process.argv[1]); const v=(p.streams||[]).find((s)=>s.codec_type==="video")||{}; const d=Number(v.duration ?? p.format?.duration); console.log(Math.max(1, Math.round(d * 1000)));' "$PROBE_JSON") DIMENSIONS=$(node -e 'const p=JSON.parse(process.argv[1]); const v=(p.streams||[]).find((s)=>s.codec_type==="video")||{}; console.log(JSON.stringify({width:Number(v.width),height:Number(v.height)}));' "$PROBE_JSON") upload-media /tmp/opencode/menu-recording.mp4 \ --artifact-type video \ --caption "Menu interaction recording" \ --source-url "$URL" \ --duration-ms "$DURATION_MS" \ --recording-started-at "$STARTED_AT_MS" \ --recording-ended-at "$ENDED_AT_MS" \ --dimensions "$DIMENSIONS" \ --truncated false \ --has-audio false exit "$interaction_exit_code" ``` ## Reporting Template Include the following in the final response: - What UI change or state was verified - Whether the capture was viewport, full-page, or video - The viewport used - The source URL - The uploaded artifact ID - Any limitation, such as auth gating, loading issues, or unverified states Example: ```text Verified the updated settings page header. Capture mode: viewport Viewport: 1512x982 Source: http://127.0.0.1:3000/settings Uploaded artifact: abc123 ``` ## Guardrails - Do not claim the screenshot or video was uploaded unless the upload command returned an artifact ID. - Do not report viewport metadata you did not explicitly set or verify. - Do not use `upload-media` in a later prompt; it is prompt-scoped. - Do not leave an active recording open. Always run `agent-browser record stop` if a recording was started. - If the user asked for a full-page screenshot, do not use viewport-only capture. - If the UI requires interaction before it matches the expected state, perform that interaction before capturing. - For video metadata, use the encoded MP4 dimensions and duration from `ffprobe`; do not reuse the requested viewport as video dimensions. - Prefer stable selectors such as `[data-testid=...]`, `[data-clear-completed]`, or `#todo-title`. Run `agent-browser snapshot -i` before recording when selectors or accessible names are uncertain. ## Relationship To `agent-browser` - Use `agent-browser` directly for open-ended browsing, debugging, auth flows, snapshots, and custom inspection. - Use `visual-verification` when the deliverable is proof that a UI change works and the user should receive an uploaded screenshot or video artifact.
Auf GitHub ansehen