スキル一覧に戻る
chriscarrollsmith

visual-qa

by chriscarrollsmith

Consultant booking website template built with Astro + React + Calendly and configured for deployment to Github Pages

4🍴 2📅 2026年1月23日
GitHubで見るManusで実行

SKILL.md


name: visual-qa description: Use when making UI/styling changes and need to verify no visual regressions - provides screenshot capture, comparison, vision model scoring, and video recording for animations

Visual QA

Overview

Capture screenshots before/after changes, compare pixel diffs, score with vision models. Use video capture for animations.

Quick Reference

TaskCommand
Capture baselinebun visual_qa/capture_anchors.mjs --base-url http://localhost:4321 --start-dev --label baseline "#about" "/cv"
Capture candidateSame command with --label candidate (auto-compares to baseline)
Add CSS labelsAdd --annotate flag to overlay selector labels
Score screenshotllm -m openrouter/qwen/qwen2.5-vl-32b-instruct -a image.png "$(cat visual_qa/standard_rubric.md) Score this."
Compare two imagesllm -m ... -a baseline.png -a candidate.png "Compare. Flag regressions."
Record videoSee Animation Workflow below

Core Workflow

  1. Before changes: Capture baseline screenshots
  2. Make changes: Edit CSS/components
  3. After changes: Capture candidate (auto-compares)
  4. Review diffs: Only images marked as changed need review
  5. Score if needed: Use vision model to score or compare

Animation Workflow

Use video capture when: Testing animations, transitions, or interactive UI state changes.

Do NOT use for routine testing - video burns tokens. Screenshots suffice for static content.

// In Playwright test or script:
const context = await browser.newContext({
  recordVideo: { dir: 'visual_qa/videos/' }
});
const page = await context.newPage();
await page.goto('http://localhost:4321/#about');
await page.waitForTimeout(5000); // Capture full animation cycle
await context.close(); // Video saved on close

Analyze with vision model (use Gemini for video):

llm -m gemini/gemini-flash-latest \
    -a visual_qa/videos/recording.webm \
    "This is a 5-second recording of a fade animation. Is the timing smooth? Any visual glitches?"

Extending the Rubric

Add custom metrics (max score increases by 2 per metric):

llm -m openrouter/qwen/qwen2.5-vl-32b-instruct \
    -a image.png \
    "$(cat visual_qa/standard_rubric.md)

6. Animation smoothness
   - 0: Janky, stuttering, or inconsistent timing
   - 1: Generally smooth with minor hesitations
   - 2: Buttery smooth, professional feel

Score all 6 metrics (0-12 max)."

Interpreting Scores

  • Score drop with intentional content change: Not a regression if layout remains clean
  • Score drop without content change: Investigate specific metrics that dropped
  • Use comparison prompt to identify specific regressions rather than just scores

Files

  • visual_qa/capture_anchors.mjs - Screenshot capture at all breakpoints
  • visual_qa/compare_images.mjs - Pixel diff comparison
  • visual_qa/standard_rubric.md - 5-metric scoring rubric (0-10)

スコア

総合スコア

75/100

リポジトリの品質指標に基づく評価

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

+10
説明文

100文字以上の説明がある

+10
人気

GitHub Stars 100以上

0/15
最近の活動

1ヶ月以内に更新

+10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

+5

レビュー

💬

レビュー機能は近日公開予定です