file-hygienelisted
Install: claude install-skill Romandredan/1c-quality-gate
# file-hygiene — контур гигиены файлов
Самый дешёвый контур: читает байты изменённых файлов. Выполняется при **любом** классе
изменения, включая косметический, потому что стоимость околонулевая, а ловит он класс
дефектов, который проявляется позже всего и объясняется хуже всего.
Типичная картина: файл выглядит правильно в редакторе, проходит все остальные проверки, а
платформа его не принимает — либо принимает, но ведёт себя не так. Причина невидима глазом.
## Запуск
```bash
node "$QG/tools/hygiene-check.mjs" <файл> [<файл> ...]
```
Только по **явному списку изменённых файлов**. Обход всего дерева выгрузки занимает минуты и
в гейте недопустим.
Коды возврата: 0 — чисто, 1 — предупреждения, 2 — ошибки.
## Что проверяется
| Проверка | Уровень | Почему это важно |
|---|---|---|
| Валидность UTF-8 | 🔴 | запись в однобайтовой кодировке ломает кириллицу необратимо |
| Наличие BOM у модулей и XML | 🟠 | выгрузка 1С хранит их с BOM; без него возможны проблемы с кириллицей |
| Управляющие символы | 🔴 | ��опадают при программной записи, невидимы в редакторе, ломают разбор |
| Тире вместо ASCII-дефиса | 🟡 | платформа считает недопустимым символом в тексте модуля |
| Смешанные переводы строк | 🟡 | сравнение версий показывает изменённым весь файл |
### Про тире — важная тонкость
Проверка различает контекст: тире ищется **в коде и комментариях**, но не в строковых
литералах. В текстах, предназначенных пользователю, длинное тире уместно и встречается даже в
типовых модулях конф