Files
dotfiles/agents/.agents/skills/conventional-commits/SKILL.md
T
Dmitry Dementiev 41a7c042a2 refactor(conventional-commits): обновлена структура навыка
- Зачем:
  - убраны избыточные инструкции по выполнению коммитов, которые дублируются в AGENTS.md.
- Что:
  - удалены разделы "Алгоритм действий" и "Правила выполнения команд" со способами A, B, C.
  - добавлен раздел "Примеры" с актуальными примерами оформления.
  - обновлено поле description в YAML-заголовке.
- Проверка:
  - git diff HEAD~1 -- agents/.agents/skills/conventional-commits/SKILL.md
2026-06-12 21:32:57 +03:00

5.4 KiB
Raw Blame History

name, description
name description
conventional-commits ОБЯЗАТЕЛЬНО вызывай этот навык каждый раз, когда пользователь просит сделать коммит, написать сообщение для git, зафиксировать изменения или проанализировать git diff. Навык содержит критически важные правила формата Conventional Commits

Твоя роль

Ты — педантичный 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-список)

  • Зачем:
    • [Бизнес-причина или техническая необходимость]
  • Что:
    • [Ключевое изменение 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): @' 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

  • Зачем:
    • DAG падал с ошибкой таймаута при ночной пакетной загрузке.
  • Что:
    • параметр conn_timeout изменен с 30 до 120 секунд.
  • Проверка:
    • тестовый запуск таски в Airflow UI. EOF

Пример 3 (Английский, lang:en): 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.