diff --git a/agents/.agents/skills/conventional-commits/SKILL.md b/agents/.agents/skills/conventional-commits/SKILL.md index 73499a1..0c4db3e 100644 --- a/agents/.agents/skills/conventional-commits/SKILL.md +++ b/agents/.agents/skills/conventional-commits/SKILL.md @@ -1,21 +1,11 @@ --- name: conventional-commits -description: "ОБЯЗАТЕЛЬНО вызывай этот навык каждый раз, когда пользователь просит сделать коммит, написать сообщение для git, зафиксировать изменения или проанализировать git diff. Навык содержит критически важные правила формата Conventional Commits и безопасный способ выполнения коммита через временный файл." +description: "ОБЯЗАТЕЛЬНО вызывай этот навык каждый раз, когда пользователь просит сделать коммит, написать сообщение для git, зафиксировать изменения или проанализировать git diff. Навык содержит критически важные правила формата Conventional Commits" --- # Твоя роль Ты — педантичный Release Manager и Senior Engineer. Твоя единственная задача — анализировать изменения в коде (diff) и формировать строго структурированные git-коммиты. -# Алгоритм действий -1. Изучи измененные файлы через `git status` и `git diff` (или `git diff --cached`, если файлы уже в индексе). -2. **ВАЖНО:** Если пользователь просит сделать `amend` (дополнить/изменить предыдущий коммит), ОБЯЗАТЕЛЬНО сначала прочитай текущее сообщение коммита с помощью команды `git log -1 --pretty=%B`. -3. Определи язык: по умолчанию всегда используй Русский. Английский используй ТОЛЬКО если пользователь явно передал флаг `lang:en`. -4. Сформируй заголовок и тело коммита. -5. **Выполни коммит (выбери способ):** - - **Способ A (по умолчанию, самый простой): Heredoc в `git commit -F-`.** - - **Способ B (для Gemini, где Heredoc ломает агента): временный файл `.git_commit_msg.tmp` + `git commit -F`.** - - **Способ C (если нельзя Heredoc и неудобно писать файл): сгенерировать сообщение одной командой и передать в stdin `git commit -F-` (например через `python3 -c`).** - # Правила заголовка * Формат: `(): <описание>` * Длина: не более 72 символов. @@ -50,40 +40,10 @@ description: "ОБЯЗАТЕЛЬНО вызывай этот навык кажд 3. **Секция "Что":** Сгенерируй этот список ЗАНОВО для всего итогового кода. 4. **Секция "Проверка":** Оставь старую, либо обнови, если тесты изменились. -# Правила выполнения команд -ЗАПРЕЩЕНО использовать флаг `-m` напрямую в консоли. +# Примеры -## Способ A (Heredoc, рекомендован по умолчанию) -Используй ровно такой шаблон (важно `<<'EOF'`, чтобы не было интерполяции): - -`git commit -F- <<'EOF'` -`(): <описание>` -`` -`- Зачем:` -` - <текст>` -`- Что:` -` - <текст>` -`- Проверка:` -` - <текст>` -`EOF` - -Для amend: `git commit --amend -F- <<'EOF' ... EOF` - -## Способ B (Gemini-safe: временный файл) -1. Запиши сообщение в `.git_commit_msg.tmp` любым доступным способом (инструментом записи файла / редактором / патчем). -2. Выполни `git commit -F .git_commit_msg.tmp` (или `git commit --amend -F .git_commit_msg.tmp`). -3. Удали файл: `rm -f .git_commit_msg.tmp`. - -## Способ C (одна команда, без Heredoc и без файла) -Если среда/агент плохо переносит многострочные команды, можно передать сообщение в stdin одной строкой. - -Пример с Python (внутри команды допускаются `\\n`, т.к. в итоговом коммите будут реальные переносы строк): -`python3 -c "print('feat(x): заголовок\\n\\n- Зачем:\\n - ...\\n- Что:\\n - ...\\n- Проверка:\\n - ...')" | git commit -F-` - -# Идеальные примеры - -Пример 1 (Русский, новая фича, способ A): -git commit -F- <<'EOF' +Пример 1 (Русский, новая фича, PowerShell): +@' feat(sql): добавлен скрипт валидации данных для DWH слоя - Зачем: @@ -93,9 +53,9 @@ feat(sql): добавлен скрипт валидации данных для - добавлены проверки на NULL. - Проверка: - psql -f dwh-modeling/sql/04_validation.sql. -EOF +'@ | git commit -F- -Пример 2 (Русский, багфикс, способ A): +Пример 2 (Русский, багфикс): git commit -F- <<'EOF' fix(airflow): увеличен таймаут подключения ClickHouse @@ -107,7 +67,7 @@ fix(airflow): увеличен таймаут подключения ClickHouse - тестовый запуск таски в Airflow UI. EOF -Пример 3 (Английский, lang:en, способ A): +Пример 3 (Английский, lang:en): git commit -F- <<'EOF' refactor(docker): optimize postgres-bookings image size @@ -120,7 +80,7 @@ refactor(docker): optimize postgres-bookings image size - docker build and check image size. EOF -Пример 4 (Русский, логика amend, способ B): +Пример 4 (Русский, логика amend): Исходный коммит содержал только изменение `conn_timeout` до 120 секунд. Пользователь делает amend и добавляет пропущенный файл конфига `airflow_local_settings.py`.