Install any skill in seconds. Free to start, no credit card required.
Get Started Free →视觉审查 - 在产出可视化结果(网页、文档、UI 界面等)后,自动打开/预览结果,通过截图分析视觉质量问题(布局、间距、对齐、排版、颜色、交互状态等),并自主修复发现的问题。 This skill should be used automatically after producing any visual output. Triggers: 视觉审查, 视觉检查, 界面检查, UI审查, visual review, layout check, 检查界面, 看看效果
.claude/skills/aiskillstore-visual-reviewer/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-14 | ✗→✓ | ▲ Improved | -35% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 39% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 93% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 37% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 4% | 0% |
在 AI 产出一个可视化结果后,自动进行视觉层面的质量审查和自主修复。
本 Skill 在以下产出物完成后应自动触发,无需用户手动要求:
首选方案:精确窗口截图(Python,推荐)
preview_url 打开页面 → 页面在 WorkBuddy 内置浏览器面板中渲染bash python "<skill_path>/scripts/capture_screenshot.py" \ --output "<screenshot_path>" \ --mode window \ --title "WorkBuddy"
ctypes 调用 Win32 API + mss 高速截屏,无环境块限制备选方案:外部浏览器截图
python -m http.server 8765 -d <产物目录>http://localhost:8765/<file>.htmlbash python "<skill_path>/scripts/capture_screenshot.py" -o "<path>" -m window -p "chrome" # 或 python "<skill_path>/scripts/capture_screenshot.py" -o "<path>" -m window -p "msedge"
open_result_view 打开文档bash # 按窗口标题部分匹配(文档名在窗口标题中) python "<skill_path>/scripts/capture_screenshot.py" -o "<path>" -m window -t "<文档名关键字>"
# 按进程名截图 python "<skill_path>/scripts/capture_screenshot.py" -o "<path>" -m window -p "WINWORD"
需要截取屏幕特定区域时(如 WorkBuddy 内置浏览器面板的精确位置):
bashpython "<skill_path>/scripts/capture_screenshot.py" -o "<path>" -m region -r "X,Y,W,H"
| 参数 | 简写 | 说明 | 示例 | |------|------|------|------| | --mode window -t | -m window -t | 按窗口标题截取特定程序窗口 | -m window -t "stock-watcher" | | --mode window -p | -m window -p | 按进程名截取特定程序窗口 | -m window -p "chrome" | | --mode region -r | -m region -r | 按屏幕坐标截取指定区域 | -m region -r "100,200,800,600" | | --mode activewindow | -m activewindow | 截取当前前台窗口 | -m activewindow | | --mode fullscreen | -m fullscreen | 截取整个主屏幕(兜底) | -m fullscreen | | --client-only false | | 截取含标题栏/边框的整窗 | 默认 true(仅客户区) |
输出格式:成功时最后一行输出 OK:<mode>:<path>,失败时输出错误信息和可见窗口列表方便调试。
依赖:需要 Python + mss + pygetwindow(已随 Skill 安装说明提供 requirements.txt)。
| 产出类型 | 打开方式 | |----------|----------| | HTML / Web 页面 | preview_url 打开本地文件或 localhost URL | | 文档 / PPT / 其他 | open_result_view 打开结果文件 |
根据产物类型选择上述策略 A/B/C,调用截图脚本。
截图保存为 PNG 格式后,使用 Read 工具读取截图进行视觉分析。
逐项检查以下维度,每个维度 0-3 分(0=严重问题 / 1=有问题 / 2=可接受 / 3=良好):
| 维度 | 检查项 | |------|--------| | 布局 | 元素对齐(水平/垂直)、重叠、响应式断点、空白分布 | | 间距 | padding/margin 一致性、元素间距匀称、边界留白 | | 排版 | 字体层级(h1-h6 视觉差)、行高/字间距、文字截断/溢出 | | 颜色 | 对比度(WCAG AA)、配色协调、暗色/亮色模式适配 | | 交互 | 按钮可点击区域、hover/active 状态、焦点可见性 | | 数据展示 | 表格列宽合理性、数字对齐、图表标签完整性 | | 边界情况 | 空数据状态、超长文字截断、极端窗口尺寸(320px / 4K) |
详细清单见 references/visual_checklist.md。
对每个发现的问题:
## 视觉审查报告
### 发现的问题 (共 N 个)
| # | 严重度 | 问题 | 原因 | 修复 | 状态 |
|---|--------|------|------|------|------|
| 1 | 严重 | 导航栏与内容区重叠 | z-index 缺失 | 添加 z-index: 100 | ✓ |
| 2 | 中等 | 按钮间距不一致 | margin 值不统一 | 统一为 8px | ✓ |
| 3 | 轻微 | 标题字体偏小 | font-size 16px | 建议改为 20px | 待确认 |
### 审查覆盖率
布局: ✓ | 间距: ✓ | 排版: ✓ | 颜色: ✓ | 交互: ✓ | 数据展示: N/A | 边界: ✓| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 18,135 | 18,360 | +1% | 1 | 1 | 0% | 2,124 | 2,067 | -3% | 0 | 0 | — |
case-02 | fail→fail | 28,680 | 17,430 | -39% | 1 | 1 | 0% | 3,385 | 2,289 | -32% | 0 | 0 | — |
case-03 | fail→fail | 22,263 | 6,692 | -70% | 1 | 1 | 0% | 3,661 | 1,978 | -46% | 0 | 0 | — |
case-14 | fail→pass | 26,379 | 7,543 | -71% | 1 | 1 | 0% | 3,506 | 2,263 | -35% | 0 | 0 | — |
case-04 | fail→pass | 11,602 | 11,247 | -3% | 1 | 1 | 0% | 2,139 | 2,973 | +39% | 0 | 0 | — |
case-05 | fail→pass | 12,394 | 5,363 | -57% | 1 | 1 | 0% | 1,428 | 2,759 | +93% | 0 | 0 | — |
case-06 | fail→pass | 27,421 | 8,840 | -68% | 1 | 1 | 0% | 1,752 | 2,398 | +37% | 0 | 0 | — |
case-07 | fail→pass | 15,870 | 8,745 | -45% | 1 | 1 | 0% | 2,315 | 2,411 | +4% | 0 | 0 | — |
case-08 | fail→pass | 29,821 | 8,776 | -71% | 1 | 1 | 0% | 5,354 | 2,150 | -60% | 0 | 0 | — |
case-09 | pass→pass | 10,169 | 7,878 | -23% | 1 | 1 | 0% | 1,523 | 2,161 | +42% | 0 | 0 | — |
case-10 | pass→fail | 7,195 | 7,016 | -2% | 1 | 1 | 0% | 1,124 | 2,023 | +80% | 0 | 0 | — |
case-11 | pass→pass | 15,144 | 9,505 | -37% | 1 | 1 | 0% | 1,786 | 3,294 | +84% | 0 | 0 | — |
case-12 | fail→pass | 10,279 | 11,925 | +16% | 1 | 1 | 0% | 1,511 | 2,979 | +97% | 0 | 0 | — |
case-13 | pass→pass | 17,061 | 10,505 | -38% | 1 | 1 | 0% | 1,882 | 2,835 | +51% | 0 | 0 | — |
case-15 | fail→pass | 13,868 | 3,703 | -73% | 1 | 1 | 0% | 1,381 | 2,179 | +58% | 0 | 0 | — |
case-16 | fail→pass | 6,164 | 6,082 | -1% | 1 | 1 | 0% | 872 | 2,136 | +145% | 0 | 0 | — |
case-17 | fail→pass | 15,541 | 4,667 | -70% | 1 | 1 | 0% | 1,348 | 2,256 | +67% | 0 | 0 | — |
case-18 | fail→fail | 30,499 | 8,004 | -74% | 1 | 1 | 0% | 1,414 | 2,268 | +60% | 0 | 0 | — |
case-19 | fail→pass | 14,370 | 5,480 | -62% | 1 | 1 | 0% | 1,271 | 2,687 | +111% | 0 | 0 | — |
case-20 | fail→fail | 11,839 | 18,157 | +53% | 1 | 1 | 0% | 1,202 | 2,311 | +92% | 0 | 0 | — |
case-21 | fail→pass | 19,452 | 38,983 | +100% | 1 | 1 | 0% | 3,139 | 4,346 | +38% | 0 | 0 | — |
case-22 | pass→fail | 26,373 | 19,764 | -25% | 1 | 1 | 0% | 4,039 | 2,233 | -45% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 17 counted toward the lift figure. The other 5 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +45 percentage points is the difference between those two pass rates over the 17 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.