agentsclimarketplace

Git commit planner

Skill goldenprofile/llm-skills/git-commit-planner

Анализирует изменения в git и строит план логических атомарных коммитов, чтобы избежать одного монолитного коммита. Используй когда пользователь собирается закоммитить много изменений, просит «разбить на логические коммиты», «атомарные коммиты», «организовать коммиты», или когда в репозитории большое число staged/unstaged/untracked файлов.From its SKILL.md

Install
npx -y skills add goldenprofile/llm-skills --skill git-commit-planner

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

3 things to look at

  • skips confirmationTells the agent to proceed without asking first, 3 times: "после того как пользователь одобрил план коммитов, выполняй все коммиты автономно без дополнительных подтверждений" and 2 more.
  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
  • runs commandsInstructs the agent to run 7 commands, including `git status --porcelain` and 6 more.

SKILL.md

11.1 KB, ~2.8k tokens by cl100k_base, as published. Nobody here has run it

Git Commit Planner

Анализирует изменения в git-репозитории и строит структурированный план логических атомарных коммитов вместо одного большого монолитного коммита.

Когда применять

  • В репозитории много незакоммиченных изменений в разных файлах/модулях
  • Пользователь просит «закоммить изменения» или «организуй коммиты»
  • Нужно разбить крупные изменения на логические группы
  • Упоминаются «логические коммиты», «атомарные коммиты», отказ от «больших коммитов»

Согласование с git-workflow проекта

Следуй формату коммитов из ~/.claude/CLAUDE.md (git-workflow):

  • Conventional Commits, разрешённые типы: feat, fix, refactor, docs, test, chore, perf, ci.
  • Формат: <type>: <описание> (опционально со scope: <type>(<scope>): <описание>).
  • Описание коммита — на русском языке.
  • Attribution отключён глобально — НЕ добавлять Co-Authored-By и подобные трейлеры.

Разрешения на команды

Следующие read-only git-команды выполняются без запроса подтверждения — они безопасны и не меняют состояние репозитория:

  • git status / git status --porcelain
  • git diff (любые варианты: --stat, --cached, с путями)
  • git log (любые варианты: --oneline, -N, с форматированием)
  • git ls-files

Процесс анализа

Шаг 1. Анализ состояния репозитория

Запусти эти команды параллельно для сбора информации.

PowerShell (Windows):

git status --porcelain
git ls-files --others --exclude-standard
git log --oneline -10

Bash (Linux/Mac):

git status --porcelain
git ls-files --others --exclude-standard
git log --oneline -10

Коды статуса файлов:

  • A — новый файл, staged
  • M — изменён, не staged
  • M — изменён, staged
  • MM — изменён и в staged, и в working directory
  • AM — новый файл с дополнительными unstaged-изменениями
  • ?? — untracked
  • D — удалён, не staged
  • D — удалён, staged

Шаг 2. Логическая группировка изменений

Группируй файлы по:

  1. Фиче/модулю — изменения одного модуля или фичи
  2. Типу изменения — документация, новые фичи, рефакторинг, баг-фиксы, тесты, конфигурация
  3. Зависимостям — файлы, которые нужно коммитить вместе
  4. Области влияния — инфраструктура, ядро, конкретное приложение, UI

Стратегия планирования коммитов

Порядок приоритета групп

  1. Документация и конфигурация — README, docs, конфиги
  2. Инфраструктура/ядро — новые системы, крупные рефакторы
  3. Новые модули/фичи — целостная новая функциональность
  4. Обновления приложений — изменения существующих приложений
  5. Тесты — новые или обновлённые
  6. Шаблоны и статика — UI-изменения
  7. Мелкие фиксы — небольшие правки, чистка

Размер коммита

  • Идеально: 5-50 файлов на коммит
  • Допустимо: до 100 файлов, если логически связаны
  • Избегать: смешивания несвязанных изменений, даже мелких

Формат сообщения коммита

Conventional Commits, описание на русском, без Co-Authored-By:

<type>(<scope>): <краткое описание на русском>

- Деталь 1
- Деталь 2

Разрешённые типы: feat (новая функциональность), fix (исправление бага), refactor (рефакторинг), docs (документация), test (тесты), chore (служебные задачи), perf (производительность), ci (CI/конфигурация сборки).

Формирование плана

Представь план нумерованным списком: номер и заголовок коммита, задействованные файлы (сгруппированы), git-команды, краткое обоснование группировки.

Примеры команд коммита

PowerShell (Windows):

git add file1.py file2.py folder/
git commit -m "feat(module): добавлена новая фича" -m "- Добавлено X" -m "- Обновлены связанные файлы"

Bash (Linux/Mac):

git add file1.py file2.py folder/
git commit -m "feat(module): добавлена новая фича" \
  -m "- Добавлено X" \
  -m "- Обновлены связанные файлы"

Примечание: используй несколько флагов -m вместо heredoc для кросс-платформенной совместимости.

Особые случаи

MM (смешанные изменения): файлы со статусом MM имеют и staged-, и unstaged-изменения. Реши, нужно ли включать unstaged. git add <file> застейджит всё; git restore --staged <file> снимет со стейджа для выборочного добавления.

Удалённые файлы (MD, D ): используй git rm <file> для стейджа удаления.

Untracked (??): определи, нужно ли файл добавить (git add), игнорировать (.gitignore) или удалить с диска.

Большие первые коммиты: при добавлении многих новых файлов (начальные шаблоны, статика) допустимы крупные коммиты. Группируй по функциональным областям (все admin-шаблоны, весь CSS), указывай «initial»/«add» в сообщении.

Типовые паттерны группировки

Django/Python: документация → конфигурация (settings.py, requirements.txt, pyproject.toml) → ядро (новые приложения, базовые классы, утилиты) → отдельные приложения (один коммит на приложение/фичу) → шаблоны по секциям → статика.

JavaScript/Node: конфигурация пакетов (package.json, lock-файлы) → сборка/тулинг (webpack, babel) → исходники по фичам → компоненты по областям → стили и ассеты → тесты.

Анти-паттерны

Не делай: не смешивай документацию с кодом; не объединяй несвязанные фичи; не разделяй логически связанные файлы; не плоди крошечные коммиты для мелких правок одного файла; не включай закомментированный код и debug-вывод.

Делай: держи связанные изменения вместе; пиши понятные сообщения; учитывай будущую code archaeology (когда/зачем изменилось); группируй по принципу «что захочется откатить как единое целое».

Отслеживание прогресса

После каждого коммита: git status --short (проверка), git log --oneline -1 (коммит создан), переход к следующей группе.

Финальная проверка после всех коммитов:

git status              # ожидается "nothing to commit, working tree clean"
git log --oneline -N    # обзор последних N коммитов

Автономное выполнение

ВАЖНО: после того как пользователь одобрил план коммитов, выполняй все коммиты автономно без дополнительных подтверждений. Не спрашивай разрешения на каждую команду git add / git commit — выполняй весь согласованный план последовательно и покажи итоговый результат.

Формат вывода плана

## План коммитов: [Проект]

Найдено [X] изменённых файлов, [Y] новых файлов, [Z] удалённых файлов.

### Коммит 1: Обновление документации
**Файлы:** README.md, docs/api.md, CHANGELOG.md
**Команда:**
git add README.md docs/api.md CHANGELOG.md
git commit -m "docs: обновление документации проекта" -m "- Обновлён README" -m "- Добавлена документация API"

### Коммит 2: Инфраструктура ядра
**Файлы:** src/core/base.py, src/utils/helpers.py
**Команда:**
git add src/core/ src/utils/
git commit -m "refactor(core): улучшение базовых классов и утилит"

[... продолжение для всех коммитов ...]

### Итого
- Запланировано коммитов: [N]
- Файлы сгруппированы по: [стратегия]

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.