بنقرة واحدة
visual-verification
Verify application UI changes with uploaded screenshot or video artifacts
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Verify application UI changes with uploaded screenshot or video artifacts
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Deploy your own Open-Inspect instance. Use when the user wants to set up, deploy, or onboard to Open-Inspect. Guides through repository setup, credential collection, Terraform deployment, and verification with user handoffs.
Upload an existing screenshot, chart, or generated image to the Open-Inspect session
Record and upload a short browser interaction video artifact
| name | visual-verification |
| description | Verify application UI changes with uploaded screenshot or video artifacts |
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.
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.
The task is not complete until all of these are true:
artifactId is reported back to the user.agent-browser open.agent-browser set viewport <width> <height>.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:
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.
Viewport capture:
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:
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:
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:
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"
Include the following in the final response:
Example:
Verified the updated settings page header.
Capture mode: viewport
Viewport: 1512x982
Source: http://127.0.0.1:3000/settings
Uploaded artifact: abc123
upload-media in a later prompt; it is prompt-scoped.agent-browser record stop if a recording was
started.ffprobe; do not reuse the
requested viewport as video dimensions.[data-testid=...], [data-clear-completed], or #todo-title.
Run agent-browser snapshot -i before recording when selectors or accessible names are uncertain.agent-browseragent-browser directly for open-ended browsing, debugging, auth flows, snapshots, and custom
inspection.visual-verification when the deliverable is proof that a UI change works and the user should
receive an uploaded screenshot or video artifact.