GitX — переносимый скилл для чистых Git-коммитов в AI-агентах
📂 Исходный код на GitHubGitX — переносимый скилл для AI-агентов: чистые Conventional Commits, ветки с префиксами, безопасные push и pull request'ы, поиск секретов и разрешение конфликтов.
AI-агенты быстро пишут код, но редко следят за историей Git. За одну сессию они трогают десятки файлов: новая фича смешивается со случайным рефакторингом, правкой зависимостей и подчищенными логами. Одна команда «закоммить всё» — и в истории появляется гигантский коммит, который невозможно нормально прочитать или откатить. GitX — это скилл формата SKILL.md, который встраивается в AI-агента и наводит здесь порядок: группирует правки в логичные Conventional Commits, создаёт ветки с осмысленными префиксами, безопасно обновляет ветку и отправляет изменения, открывает pull request'ы с готовым описанием и ищет секреты до того, как они попадут в историю.
Скилл переносимый: он работает в Claude Code, OpenAI Codex, Cursor и любых других агентах с поддержкой Agent Skills. Настройки одни и те же, поведение — тоже.
Установка
npx skills add musoyangrigor/gitx-skill --skill gitx
Skills CLI сам настраивает скилл для выбранного агента. После установки нужно начать новую сессию агента.
Дальше всё просто: команда $gitx без аргументов не показывает справку и не задаёт вопросов. Она сразу осматривает репозиторий и делает умный коммит. Список команд появляется только по явной просьбе о помощи.
Как устроен умный коммит
Основной сценарий GitX — команда $gitx. Работает она так:
- Агент читает
git statusи все диффы: и то, что уже добавлено в индекс (staged), и то, что ещё не добавлено. - Группирует правки по смыслу. Умеет делить даже один файл между несколькими коммитами: например, если в нём и новая функция, и правка старой, они попадут в разные группы.
- Если нашлась одна логическая группа — создаёт один аккуратный Conventional Commit.
- Если групп несколько — показывает каждое предполагаемое сообщение и спрашивает: «Сделать N коммитов или один?» N здесь — реальное число групп, а не заглушка.
- Не отправляет изменения сам. Push происходит только по явной команде
$gitx pushили прямой просьбе.
Название коммита собирается по правилам Conventional Commits: тип вроде fix или feat, при возможности — scope из словаря проекта. Если подходящий scope не придумывается, агент его не выдумывает, а оставляет коммит без scope.
Команды
| Команда | Что делает |
|---|---|
$gitx |
Осмотреть изменения и сделать умный коммит. |
$gitx body |
То же, но с подробным телом коммита. |
$gitx branch |
Создать ветку с автоматически подобранным префиксом (feat/, fix/, chore/...). |
$gitx branch check |
Создать ветку, прогнать проверки, закоммитить. |
$gitx pull |
Безопасно подтянуть обновления текущей ветки. |
$gitx push |
Отправить ветку в origin, создав upstream, если его нет. |
$gitx pr [base] |
Открыть GitHub pull request с готовым заголовком и описанием. |
$gitx ship [base] |
Полный цикл: ветка → проверки → коммит → push → pull request. |
$gitx issue <текст> |
Создать GitHub issue с готовым заголовком и описанием. |
$gitx issue 123 |
Прочитать issue №123 и внедрить исправление в рабочей копии. |
$gitx resolve |
Разрешить конфликт при merge или rebase. |
$gitx check |
Прогнать проверки и сделать умный коммит. |
$gitx plan |
Показать предполагаемые группы коммитов, ничего не меняя. |
$gitx scan |
Найти секреты в изменениях и истории, оценить риски. |
$gitx doctor [ошибка] |
Поставить диагноз проблемам Git и подсказать следующий шаг. |
$gitx tree |
Компактное дерево истории, веток, синхронизации и pull request'ов. |
$gitx setup |
Сохранить настройки проекта в .gitx.json. |
$gitx amend |
Спросить и дополнить последний коммит. |
Проверки агент находит сам: npm test, pnpm test, pytest, cargo test, go test ./..., make test — либо берёт список из конфигурации. При обычном коммите провалившаяся проверка не блокирует работу: агент спросит, коммитить ли всё равно. А вот $gitx ship строже — при падении проверок он останавливается.
Ветки и pull request'ы
$gitx branch подбирает префикс по смыслу работы: feat/ для новых функций, fix/ для багов, docs/ для документации, refactor/ для перестройки кода. Префикс hotfix/ по умолчанию не ставится никогда — только для срочных исправлений в проде и только по явной команде. Если ветка уже существует, агент не молча перезапишет её, а спросит, что делать.
$gitx pr открывает pull request в базовую ветку — указанную, настроенную или дефолтную в origin. Заголовок и описание агент генерирует сам.
$gitx ship — самый полный сценарий. Он создаёт ветку, если её нет, прогоняет проверки, коммитит, отправляет изменения и открывает pull request. Важно: merge этот PR не делает. Форс-пуш тоже.
Задачи из GitHub
Команда $gitx issue работает в двух режимах, и различает их GitX по форме аргумента, а не по смыслу текста. Число — значит «внедрить существующую issue»: агент прочитает её и начнёт делать исправление. Любой другой текст — значит «создать новую issue» в GitHub, даже если в описании есть слова «fix» или «update».
Ещё одна деталь: issues всегда создаются в GitHub, даже если в проекте есть локальный трекер. Если создание не удалось, агент сообщит об ошибке, а не подменит результат локальным файлом.
Настройки проекта
Команда $gitx setup осматривает конвенции репозитория, показывает предполагаемый конфиг и сохраняет его в .gitx.json в корне. Коммитить файл агент не станет — это решаете вы, если хотите поделиться настройками с командой.
{
"prBase": "dev",
"branchPrefix": ["feat/", "fix/", "chore/", "docs/", "refactor/", "test/"],
"commitScopes": ["auth", "api", "ui", "docs"],
"checks": ["npm run lint", "npm test"],
"draftPR": false
}
Все поля необязательные. prBase задаёт базовую ветку для $gitx pr и $gitx ship, branchPrefix — словарь префиксов для новых веток, commitScopes — словарь scope'ов для коммитов, checks — команды проверок в порядке выполнения, draftPR — создавать ли pull request черновиком.
Порядок приоритетов такой: явная просьба в команде важнее сохранённых настроек, настройки важнее значений по умолчанию. Без .gitx.json скилл работает как раньше.
Безопасность и «только чтение»
GitX предупреждает, прежде чем включить в коммит что-то рискованное: .env, *.pem, *.key, файлы с token, secret или api_key в имени, логи, каталоги dist/, build/ и node_modules/.
Несколько команд ничего не меняют в репозитории и нужны, чтобы сначала посмотреть, потом действовать:
$gitx plan— покажет группы коммитов и сообщения, не трогая ни файлы, ни индекс.$gitx status— краткая сводка по изменённым файлам.$gitx tree— история, ветки, отставание от upstream и текущий pull request.$gitx scan— ищет секреты в изменениях и истории и выдаёт оценку утечки, ничего не исправляя.$gitx doctor— ставит диагноз проблемам Git и подсказывает наименьший разумный следующий шаг, но сам ничего не ремонтирует.
Команда $gitx resolve помогает с конфликтами при merge и rebase. Агент прослеживает обе стороны конфликта до исходных коммитов, понимает замысел каждого изменения и сохраняет оба намерения, где это возможно. Если намерения противоречат, выбирается то, что лучше отвечает цели слияния, — с явной пометкой о компромиссе. После разрешения прогоняются проверки, форс-пуш не делается.
Даже $gitx amend спрашивает подтверждение и показывает новое сообщение. Если дополненный коммит уже запушен, агент предупредит, что обычный push будет отклонён, и спросит, как поступить.
Где подробности
Детальное поведение каждого сценария описано в справочниках репозитория: настройки проекта и JSON Schema для типов полей, pull request'ы, GitHub issues, поиск секретов, сценарий ship, диагностика и разделение правок внутри одного файла.
Проект распространяется по лицензии MIT. Тесты написаны на Python и запускаются через python3 -m unittest discover -s tests -v.