Skip to content
Back to skills

File Hygiene

ASecurity

Контур гигиены файлов 1С: кодировка, BOM, недопустимые управляющие символы, тире вместо ASCII-дефиса, согласованность переводов строк. Дешёвая байтовая проверка, выполняется при любом изменении файлов 1С. Вызывается оркестратором quality-gate; напрямую — по запросу «проверь кодировки», «почему платформа не принимает файл», «проверь BOM».

  • 30 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added August 30, 2026
ai-agentsbashnode

Security analysis

A100/100

Scanned August 30, 2026

npx -y skills add Romandredan/1c-quality-gate --skill file-hygiene --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of File Hygiene?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for File Hygiene
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/romandredan-file-hygiene/badge)](https://www.skillsdirectory.com/skills/romandredan-file-hygiene)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: file-hygiene
description: >-
  Контур гигиены файлов 1С: кодировка, BOM, недопустимые управляющие символы, тире вместо
  ASCII-дефиса, согласованность переводов строк. Дешёвая байтовая проверка, выполняется при
  любом изменении файлов 1С. Вызывается оркестратором quality-gate; напрямую — по запросу
  «проверь кодировки», «почему платформа не принимает файл», «проверь BOM».
license: MIT
---

# file-hygiene — контур гигиены файлов

Самый дешёвый контур: читает байты изменённых файлов. Выполняется при **любом** классе
изменения, включая косметический, потому что стоимость околонулевая, а ловит он класс
дефектов, который проявляется позже всего и объясняется хуже всего.

Типичная картина: файл выглядит правильно в редакторе, проходит все остальные проверки, а
платформа его не принимает — либо принимает, но ведёт себя не так. Причина невидима глазом.

## Запуск

```bash
node "$QG/tools/hygiene-check.mjs" <файл> [<файл> ...]
```

Только по **явному списку изменённых файлов**. Обход всего дерева выгрузки занимает минуты и
в гейте недопустим.

Коды возврата: 0 — чисто, 1 — предупреждения, 2 — ошибки.

## Что проверяется

| Проверка | Уровень | Почему это важно |
|---|---|---|
| Валидность UTF-8 | 🔴 | запись в однобайтовой кодировке ломает кириллицу необратимо |
| Наличие BOM у модулей и XML | 🟠 | выгрузка 1С хранит их с BOM; без него возможны проблемы с кириллицей |
| Управляющие символы | 🔴 | попадают при программной записи, невидимы в редакторе, ломают разбор |
| Тире вместо ASCII-дефиса | 🟡 | платформа считает недопустимым символом в тексте модуля |
| Смешанные переводы строк | 🟡 | шумные диффы, ломается сравнение версий |

### Про тире — важная тонкость

Проверка различает контекст: тире ищется **в коде и комментариях**, но не в строковых
литералах. В текстах, предназначенных пользователю, длинное тире уместно и встречается даже в
типовых модулях конфигураций — правило без различения контекста дало бы сотни ложных находок
на первом же прогоне, и контур справедливо отключили бы.

Разбор литералов приближённый: полноценный парсер здесь избыточен, а цена ошибки низкая —
находка этого уровня не блокирует вердикт.

### Про управляющие символы

Отдельно стоит знать про символ-разделитель группы (U+001D). Он встречается в задачах
маркировки как разделитель полей кода, и инструменты записи файлов могут вставить его
буквально вместо экранированной последовательности. Глазом он неотличим от отсутствия символа,
а разбор ломает. Именно поэтому проверка идёт по байтам, а не по тексту.

## Записи следа

```
[qg applied: layer=hygiene, scope=file-encoding, ids=[qg:HYG-BOM,qg:HYG-CTRL,qg:HYG-DASH,qg:HYG-ENCODING,qg:HYG-EOL], verdict=clean]
[qg applied: layer=hygiene, scope=file-encoding, ids=[qg:HYG-DASH], verdict=violation:qg:HYG-DASH]
```

**Эти строки печатает сам `hygiene-check.mjs`** — переноси его вывод, не составляй запись по
прочтении находок. Инструмент отмечается в журнале прогонов, и валидатор следа сверяет с ним:
вердикт без прогона снятие гейта не пройдёт. Чистый прогон перечисляет все пять правил,
прогон с находками — по записи на сработавшее.

Формат — `../quality-gate/references/evidence-format.md`.

## Автофикс

В режиме `--fix` безопасно исправляются: добавление BOM, приведение переводов строк к
единому виду, замена тире на ASCII-дефис **вне строковых литералов**.

Не исправляются автоматически: управляющие символы (нужно понять, откуда они взялись —
возможно, сломан сам генератор) и невалидная кодировка (перекодировка вслепую портит данные
сильнее исходной ошибки).

> `$QG` — каталог установленного плагина. Как его разрешить (переменная `CLAUDE_PLUGIN_ROOT`
> в оболочке пуста) — см. раздел «Путь к инструментам плагина» в навыке `quality-gate`.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.