---
name: language-typo-helper
description: Распознаёт опечатки пользователя Valentin — соседние клавиши QWERTY/ЙЦУКЕН, русский текст в английской раскладке, типичные промахи.
version: 2.0
author: Hermes
tags: [typo, transliteration, qwerty, йцукен, user-profile]
---

## Когда использовать

Всегда, когда сообщение пользователя содержит:
- Слова, в которых буквы не образуют осмысленных русских/английских слов
- Сочетания латиницы, похожие на русские слова (ghbdtn → привет)
- Слова с 1-2 лишними/недостающими буквами относительно реального слова
- Подозрительное соседство букв на клавиатуре (кнопки рядом)

## Типы опечаток Valentin

### 1️⃣ Русский текст в английской раскладке (самое частое)
Самая частная проблема. Слова по звучанию похожи на русские, но набраны латиницей.

**Конвертер раскладки QWERTY → ЙЦУКЕН:**

```
A→Ф  B→И  C→С  D→В  E→У  F→А  G→П  H→Р  I→Ш  J→О  K→Л  L→Д  
M→М  N→Т  O→Щ  P→З  Q→Й  R→К  S→Ы  T→Е  U→Г  V→М  W→Ц  X→Ч  
Y→Н  Z→Я
```

**Обратно (русская раскладка → английские буквы):**
```
Й→Q  Ц→W  У→E  К→R  Е→T  Н→Y  Г→U  Ш→I  Щ→O  З→P  Х→[  Ъ→]  
Ф→A  Ы→S  В→D  А→F  П→G  Р→H  О→J  Л→K  Д→L  Ж→;  Э→'  
Я→Z  Ч→X  С→C  М→M  И→B  Т→N  Ь→/  Б→,  Ю→.
```

**Алгоритм:**
1. Если слово содержит только латиницу И звучит по-русски — попробовать конвертировать каждую букву в русскую раскладку
2. Проверить полученное слово по базовому словарю русских слов
3. Если слово осмысленное — предложить замену

**Примеры:**
- `ghbdtn` → `привет`
- `rjn` → `кот`
- `lybq` → `львы`
- `ghjcnj` → `просто`
- `ntktajy` → `телефон`
- `vfrcbv` → `маркси` (максим)
- `pf,snb` → `забыть`

### 2️⃣ Промах по соседней клавише (QWERTY)
Кнопки, расположенные рядом на английской QWERTY-клавиатуре, которые часто нажимаются вместо нужных.

**Горизонтальные соседи (один ряд):**
```
Q→W  W→QE  E→WR  R→ET  T→RY  Y→TU  U→YI  I→UO  O→IP  P→O[  [→P]
A→S  S→AD  D→SF  F→DG  G→FH  H→GJ  J→HK  K→JL  L→K;  ;→L'
Z→X  X→ZC  C→XV  V→CB  B→VN  N→BM  M→N,  ,→M.  .→,/
```

**Вертикальные соседи (смещение на ряд):**
```
Q→A  W→S  E→D  R→F  T→G  Y→H  U→J  I→K  O→L  P→;
A→QZ  S→WX  D→EC  F→RV  G→TB  H→YN  J→UM  K→I,  L→O.
Z→A  X→S  C→D  V→F  B→G  N→H  M→J
```

**Исправление:** если слово не находится в словаре, пробовать заменять каждую букву по соседним на клавиатуре и проверять расстояние Левенштейна ≤ 2 до известных слов.

### 3️⃣ Промах по соседней клавише (ЙЦУКЕН)
**Горизонтальные соседи (один ряд):**
```
Й→Ц  Ц→ЙУ  У→ЦК  К→УЕ  Е→КН  Н→ЕГ  Г→НШ  Ш→ГЩ  Щ→ШЗ  З→ЩХ  Х→ЗЪ  Ъ→Х
Ф→Ы  Ы→ФВ  В→ЫА  А→ВП  П→АР  Р→ПО  О→РЛ  Л→ОД  Д→ЛЖ  Ж→ДЭ  Э→Ж
Я→Ч  Ч→ЯС  С→ЧМ  М→СИ  И→МТ  Т→ИЬ  Ь→ТБ  Б→ЬЮ  Ю→Б,  ,→Ю.
```

### 4️⃣ Пропуск буквы / лишняя буква
Если длина слова отличается от ожидаемой на 1 и похоже на известное слово:
- `привеет` → `привет` (лишняя гласная)
- `првет` → `привет` (пропущена гласная)
- `спасибоо` → `спасибо`

Проверять: удаление/добавление каждой буквы → сверка со словарём.

### 5️⃣ Частые замены звуков
- `ца` ↔ `тся` / `ться`  ("нравица" → "нравится")
- `тся/ться` с ошибками  ("смеятся" → "смеяться", "улыбатса" → "улыбаться")
- `тся` → `тся`  ("родитса" → "родится")
- Кавычки `""` ↔ `«»`
- `ё` → `е` (допустимо, не исправлять)
- `ь/ъ` путаница  ("обьявление" → "объявление")

## Словарь частых слов Valentin

Особые слова, которые часто используются в общении:
- давай, спасибо, привет, окей, норм, тест, проверь, сделай, можешь, новый, проект, бот, хост, сервер, контейнер, докер, порт, деплой, мониторинг, бэкап, конфиг, скилл, хабр, контест, н8н, гугл, телеграм, рельсы, рейлвей, гитхаб

## Порядок действий

1. Получить сообщение пользователя
2. Определить возможный язык сообщения:
   - Если все символы — латиница, а слова похожи на русские → выполнить конвертацию раскладки (тип 1)
   - Если есть кириллица → проверить на опечатки (типы 2-5)
3. Если найдено исправление — предложить его в формате:
   `«[исправленный текст]»`
   Без вопроса — просто показать исправленный вариант и продолжить разговор
4. Если исправление неуверенное (расстояние > 1) — спросить: «Ты это имел в виду?» и ждать подтверждения

## Поведение в ответе

**Без вопроса:** просто используй исправленный текст в ответе, показав его в начале.
**С вопросом:** если исправление неочевидное — переспроси.

## Файлы скилла

- `scripts/qwerty-to-jcuken.py` — скрипт-конвертер раскладки (по желанию)
- `scripts/russian_words.txt` — словарь частых русских слов (по желанию)
