docs(skills): упрощены правила сообщений коммитов

- Зачем: сохранён общий стиль сообщений без избыточных ограничений для модели.
- Что: тело стало гибким, уточнены условия вызова и требования к amend; убраны повторения и пошаговые инструкции.
- Проверка: quick_validate.py и git diff --check пройдены.
This commit is contained in:
Dmitry Dementiev committed 2026-09-11 12:24:52 +03:00
1 parent 0a8e7bb499
commit fa90b2e817
1 file changed
+21 -80
@@ -1,96 +1,37 @@
--- ---
name: conventional-commits name: conventional-commits
description: "ОБЯЗАТЕЛЬНО вызывай этот навык каждый раз, когда пользователь просит сделать коммит, написать сообщение для git, зафиксировать изменения или проанализировать git diff. Навык содержит критически важные правила формата Conventional Commits" description: "Формат сообщений Conventional Commits. Применяй при создании коммита, amend или подготовке сообщения коммита."
--- ---
# Твоя роль # Формат сообщения
Ты — педантичный Release Manager и Senior Engineer. Твоя единственная задача — анализировать изменения в коде (diff) и формировать строго структурированные git-коммиты.
# Правила заголовка ## Заголовок
* Формат: `<type>(<scope>): <описание>`
* Длина: не более 72 символов.
* Типы (type): feat, fix, refactor, docs, test, chore, ci, perf.
* Грамматика (Русский): совершенный вид, прошедшее время (добавлено, исправлено).
* Грамматика (Английский): повелительное наклонение (add, fix, update). Без точки в конце.
* Технические термины (SQL, DWH, PostgreSQL, Airflow) не переводи.
# Шаблон тела коммита (Markdown-список) - Формат: `<type>(<scope>): <описание>`. Указывай scope, когда он помогает обозначить область изменения.
- Зачем: - Типы: feat, fix, refactor, docs, test, chore, ci, perf, build, revert.
- [Бизнес-причина или техническая необходимость] - До 72 символов, без точки в конце.
- Что: - По умолчанию пиши по-русски, в совершенном виде и прошедшем времени: «добавлено», «исправлено». Если нужен английский — используй повелительное наклонение: add, fix, update.
- [Ключевое изменение 1]
- [Ключевое изменение 2, если есть]
- Проверка:
- [Как проверить: команда, тест или скрипт]
Требования к телу: ## Тело
* Всегда используй именно список с маркерами `-`, как в шаблоне выше.
* Обязательные секции: `Зачем`, `Что`, `Проверка`.
* Внутри каждой секции минимум 1 подпункт.
* В секции `Что` обычно 1–3 подпункта с фактами по diff.
# Правило переносов строк Для простой правки достаточно заголовка. Когда нужны подробности, ориентируйся на короткий список «Зачем / Что / Проверка»:
В тексте коммита должны быть реальные переносы строк. Не пиши буквальные `\n`, `\r`, `\t` как часть текста сообщения.
# Специфические правила для Amend - Зачем: причина изменения из контекста задачи.
Если пользователь просит дополнить коммит (`amend`), твоя задача — обновить сообщение так, чтобы оно выглядело как единое целое. - Что: существенные изменения, которые дополняют заголовок.
- Проверка: что проверено и с каким результатом; предложенную проверку явно обозначай как ещё не выполненную.
1. **Сбор контекста:** Прочитай старое сообщение (`git log -1 --pretty=%B`) и оцени весь объем изменений (`git diff HEAD~1`). Сохраняй этот порядок и названия там, где они уместны. Включай только содержательные пункты; объём пояснений соразмеряй изменению. Если причина неизвестна, опирайся на подтверждённые факты.
2. **Секция "Зачем":** НИКОГДА не меняй эту секцию из старого коммита.
3. **Секция "Что":** Сгенерируй этот список ЗАНОВО для всего итогового кода.
4. **Секция "Проверка":** Оставь старую, либо обнови, если тесты изменились.
# Примеры Пример:
Пример 1 (Русский, новая фича, PowerShell): ```text
@'
feat(sql): добавлен скрипт валидации данных для DWH слоя
- Зачем:
- необходима проверка целостности и уникальности перед загрузкой в хранилище.
- Что:
- создан файл 04_validation.sql.
- добавлены проверки на NULL.
- Проверка:
- psql -f dwh-modeling/sql/04_validation.sql.
'@ | git commit -F-
Пример 2 (Русский, багфикс):
git commit -F- <<'EOF'
fix(airflow): увеличен таймаут подключения ClickHouse fix(airflow): увеличен таймаут подключения ClickHouse
- Зачем: - Зачем: ночная загрузка прерывалась по таймауту подключения.
- DAG падал с ошибкой таймаута при ночной пакетной загрузке. - Что: conn_timeout увеличен с 30 до 120 секунд.
- Что: - Проверка: ещё не выполнена; нужен тестовый запуск DAG.
- параметр conn_timeout изменен с 30 до 120 секунд. ```
- Проверка:
- тестовый запуск таски в Airflow UI.
EOF
Пример 3 (Английский, lang:en): ## Amend
git commit -F- <<'EOF'
refactor(docker): optimize postgres-bookings image size
- Зачем: Сообщение описывает весь итоговый состав коммита. Перепиши его как единое целое; сохраняй исходную причину, пока она соответствует изменениям. Сведения о проверках должны относиться к итоговой версии.
- reduce deployment time and registry storage costs.
- Что:
- switched base image to alpine.
- removed intermediate build artifacts.
- Проверка:
- docker build and check image size.
EOF
Пример 4 (Русский, логика amend):
Исходный коммит содержал только изменение `conn_timeout` до 120 секунд.
Пользователь делает amend и добавляет пропущенный файл конфига `airflow_local_settings.py`.
Сообщение (в `.git_commit_msg.tmp`):
fix(airflow): увеличен таймаут подключения ClickHouse и обновлен конфиг
- Зачем:
- DAG падал с ошибкой таймаута при ночной пакетной загрузке.
- Что:
- параметр conn_timeout изменен с 30 до 120 секунд.
- настройки таймаута применены на уровне воркеров в airflow_local_settings.py.
- Проверка:
- тестовый запуск таски в Airflow UI.