AgentSkillsCN

screenshot-analyze

分析移动应用截图,排查L10N缺陷(翻译、CLDR格式、RTL布局)。在需要检查UI本地化时使用,例如寻找翻译错误、日期/货币格式问题,或RTL排版中的潜在问题。请勿用于UI的功能性测试或代码分析。

SKILL.md
--- frontmatter
name: screenshot-analyze
description: Анализирует скриншоты мобильного приложения на L10N дефекты (переводы, CLDR форматы, RTL). Используй для проверки локализации UI, когда нужно найти ошибки в переводах, форматах дат/валют или проблемы RTL-верстки. Не используй для функционального тестирования UI или анализа кода.
allowed-tools: "Read Write Edit Glob Grep Bash(open*)"
agent: agents/auditor.md
context: fork

L10n & I18n UI Audit (Ride-Hailing)

Визуальный кросс-локализационный анализ UI для приложений вызова такси.

Фокус: Деньги, Время, Геолокация, RTL + СЕМАНТИКА ПЕРЕВОДОВ.

Парсинг аргументов (ОБЯЗАТЕЛЬНО — шаг 0)

Путь к скриншотам ищи по приоритету — остановись на первом успешном:

1. Args скилла — любой текст после имени команды. Примеры:

  • /screenshot-analyze resources/screenshots/brazil_passenger_main_screenresources/screenshots/brazil_passenger_main_screen
  • /screenshot-analyze /abs/path/screens/abs/path/screens

2. Glob-поиск (fallback) — если args не содержат путь, выполни Glob("**/*.{png,jpg,jpeg,gif,webp}"), сгруппируй по директориям, возьми директорию с наибольшим количеством изображений.

3. Спроси пользователя — только если пп.1-2 не дали результата.

СТРОГО ЗАПРЕЩЕНО задавать вопрос о пути, если в пп.1-2 найден путь или файлы.


Scope (Что проверяем)

code
1. СЕМАНТИКА (Translation Quality) ← ГЛАВНЫЙ ПРИОРИТЕТ
   - Смысловые ошибки (false friends, wrong context)
   - Оскорбительный/опасный контент
   - Буквальный перевод составных слов

2. ВЕРСТКА (Layout)
   - Truncation, Overflow, Overlap
   - RTL Mirroring

3. ФОРМАТЫ (CLDR Compliance)
   - Числа, Валюта, Дата, Время, Дистанция

4. КОНСИСТЕНТНОСТЬ
   - Единый язык, числовая система, терминология

Core Principles

1. Translation Verification FIRST

ГЛАВНАЯ ЗАДАЧА — ПРОВЕРКА ПЕРЕВОДОВ НА СМЫСЛОВЫЕ ОШИБКИ. Активно ищи:

  • False Friends — похожие слова с разным значением
  • Wrong Context — правильное слово, неправильный контекст
  • Literal Translation — буквальный перевод идиом/терминов
  • Offensive Content — оскорбительный/табуированный контент

2. Container vs Content

Помимо перевода проверяй: контейнеры (влезает ли текст) и форматы (CLDR). Не придирайся к стилистике, если нет смысловой ошибки.

3. RTL Mirroring

В RTL локалях (ar, he, fa, ur) весь UI зеркальный. Отзеркалить: отступы, стрелки навигации, прогресс-бары. НЕ зеркалить: автомобили, карты.

4. Валюта ≠ Локаль

Валюта определяется регионом, не языком. inDrive Brazil → R$ (BRL) на ЛЮБОМ языке UI. НЕ считать R$ в ru-RU интерфейсе багом.


Входные требования

ПараметрОбязательностьОписание
Путь к скриншотамОбязательноФайл или директория (JPEG, PNG, GIF, WebP)
РегионАвто / СпроситьИз имени файла (_BR, _RU) или спросить
Целевая локальАвтоИз имени файла (ru_BR.png → locale=ru, region=BR)

Требования к изображениям

ПараметрЛимит
Размер файла≤5 MB
Разрешение≤8000×8000 px
Оптимальное≤1568 px по длинной стороне
Минимальное≥200 px

Определение региона

Формат имен файлов

code
{locale}_{REGION}.png

Примеры:
- en_BR.png → Locale: en, Region: BR (Бразилия)
- ru_BR.png → Locale: ru, Region: BR (Бразилия)
- ar_SA.png → Locale: ar, Region: SA (Саудовская Аравия)

Если регион определен из файлов — НЕ задавай вопросы.

Если регион НЕ определен — спроси:

"С какого региона собраны эти скриншоты?"

  • Бразилия (BR) — R$, km
  • Россия (RU) — ₽, km
  • Саудовская Аравия (SA) — SAR, RTL, km
  • США (US) — $, mi

Алгоритм анализа (4-Step)

Step 1: Reference Check

  1. Найди EN скриншот — это Base Layout
  2. Запомни структуру: количество элементов, позиции, размеры

Step 2: Layout Stress Test

  1. Найди языки с максимальной длиной: DE, RU, ES, PT-BR
  2. Проверь на каждом: Overflow, Truncation, Line Break Issues

Step 3: Bi-Directional Check (RTL)

Для AR/HE/FA/UR:

  1. Зеркалирование Margins/Paddings
  2. Направление стрелок навигации
  3. Позиция Back/Close кнопок
  4. Автомобили НЕ отзеркалены

Step 4: Data Format Validation (CLDR)

  1. Числа: разделители тысяч и дробей
  2. Валюта: символ, позиция, отбивка
  3. Время: 12h vs 24h

Справочные таблицы: references/cldr-tables.md

Verbosity Protocol

Structured Output Priority: Весь analysis идёт в артефакт (MD/HTML), не в чат.

Chat output (ограничения):

  • Brief Summary: max 5 строк (что нашли, сколько, итог)
  • Findings table: max 15 строк (топ по severity)
  • Полный отчёт: 📊 Полный отчёт: {path} + открыть файл

Iterative steps: Не выводить прогресс по каждому файлу. Checkpoint только при:

  • Phase transition (Фаза N → Фаза N+1)
  • Blocker обнаружен
  • Завершение (SKILL COMPLETE)

Tools first:

  • Grep → table → report, без "Now I will grep..."
  • Read → analyze → report, без "The file shows..."

Post-Check: Inline перед SKILL COMPLETE (5-7 строк checklist), не отдельный файл.

Steps 1-4: Silent. Output: Master Issues Table (max 10) + HTML report opened.


LQA & Domain-Specific Checks

Полные таблицы проверок (типы семантических ошибок, валюты, время, RTL) — в references/lqa-rules.md.

Ключевые приоритеты:

  • CRITICAL: False Friends, Wrong Context, Offensive Content, RTL Price Concatenation
  • ERROR: Literal Translation, CLDR нарушения, неправильные форматы времени
  • WARNING: Стилистика, minor format issues

Ограничения (Safety Limits)

Max Issues: 10

Ограничивай отчёт ТОП-10 самых критичных ошибок. Приоритет: CRITICAL → ERROR → WARNING.

Grouping

Одинаковая ошибка на нескольких скриншотах = 1 запись с перечислением файлов.

Перевод на русский

Для не-русских текстов добавляй перевод:

code
✅ "إيجاد الضحايا" (Найти жертв) — опасный перевод

Акцент на валютах

ОБЯЗАТЕЛЬНО сравнивай формат валюты:

  • Символ (R$ vs BRL)
  • Позиция (R$13 vs 13R$)
  • Формат числа (R$13 vs R$13.00)

Severity Guidelines

SeverityКритерий
CRITICALОскорбительный контент, полная поломка функционала
ERRORНеправильный перевод с изменением смысла, обрезанный CTA
WARNINGСтилистика, minor format issues
INFOРекомендации по улучшению

Anti-Patterns (BANNED)

  1. Vague Descriptions → указывай элемент + конкретику: "Button text truncated at 'Регистрац...'"
  2. Currency Region False Positive → валюта региона (R$ в BR) корректна на любом языке UI
  3. Translating Non-Translateables → адреса, POI, бренды с карт не переводятся
  4. Missing Location → каждый баг с указанием элемента: "CTA button (bottom of screen)"

Формат вывода

В чат вывести только:

code
📊 L10n: {N} issues (CRITICAL: X, ERROR: Y) → analysis-report.html

Ограничения:

  • 0 ошибок → "✅ Ошибок не обнаружено"

HTML Report

Генерируется в директории со скриншотами.

Заголовок: L10n Report — {COUNTRY_NAME} Структура: Summary Cards → Context Banner → Per-Screenshot Sections

Шаблон: references/html-template.md

ОБЯЗАТЕЛЬНО: Открой отчёт командой open {path}/analysis-report.html


Cross-Screenshot Comparison

При нескольких локалях — сравнительная таблица:

markdown
| Элемент | EN (ref) | RU | AR | Проблема |
|---------|----------|----|----|----------|
| CTA Button | Find offers | Найти ✅ | ❌ | AR: Буквальный перевод |
| Price | R$13 | R$13 ✅ | R$13 ✅ | — |
| Back Button | < | < ✅ | ❌ < | AR: Должен быть > |

Self-Check Protocol

Перед завершением проверь:

  • Locale указан для всех проблем
  • Location указан для всех проблем
  • Severity присвоен
  • No false positives (валюта региона)
  • Не-русские тексты с переводом

Полный чек-лист: references/checklists.md


Что НЕ переводится

ЭлементПравило
Имена пользователейКак введены
Марки/модели автоГлобальные бренды
Адреса с картЛокальный язык места
POIЯзык места
ГосномераФормат региона

Связанные файлы

ФайлСодержание
references/cldr-tables.mdCLDR таблицы: валюты, числа, время, plurals
references/checklists.mdПолные чек-листы: RTL, Layout, CLDR, Semantics
references/html-template.mdHTML шаблон отчёта