---
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_screen` → `resources/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 (Что проверяем)

```
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 |

---

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

### Формат имен файлов
```
{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 запись** с перечислением файлов.

### Перевод на русский
Для не-русских текстов **добавляй перевод**:
```
✅ "إيجاد الضحايا" (Найти жертв) — опасный перевод
```

### Акцент на валютах
**ОБЯЗАТЕЛЬНО** сравнивай формат валюты:
- Символ (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)"

---

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

В чат вывести только:
```
📊 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.md` | CLDR таблицы: валюты, числа, время, plurals |
| `references/checklists.md` | Полные чек-листы: RTL, Layout, CLDR, Semantics |
| `references/html-template.md` | HTML шаблон отчёта |
