К основному содержанию
хук

smart-commit — хук для Claude Code: автокоммиты после правок

Хук Claude, который сам коммитит изменённый файл после Edit или Write. Пригодится, если не хочется вручную собирать историю git.

Установить в Claude Code · Через claude-code-templates Все способы и платформы ↓
npx claude-code-templates@latest --hook git-workflow/smart-commit
Открыть на GitHub

Что делает smart-commit

smart-commit вешается на события PostToolUse для инструментов Edit и Write. После того как Claude изменил файл, хук проверяет, что вы внутри git-репозитория, добавляет файл в индекс и делает коммит. Для правок сообщение собирается из имени файла и объёма изменений: до 10 строк — minor, до 50 — moderate, дальше — major. Для новых файлов сообщение проще: Add new file и имя.

Внутри — две shell-команды в .claude/settings.json, без внешних зависимостей и скриптов. Всё держится на git add, git diff --cached --numstat и git commit. Если файл не менялся или коммит не проходит, хук молча выходит, ошибку вы не увидите.

Главное ограничение: коммит делается на каждый изменённый файл сразу после правки. В репозитории с частыми мелкими правками история быстро зарастает однотипными записями, а осмысленное сообщение вы не пишете. Это повод сначала прогнать хук на отдельной ветке.

Какие задачи решает

  • зафиксировать правку файла в git без ручного коммита
  • получить историю изменений по ходу работы агента
  • отделить мелкие правки от крупных по числу строк
  • закоммитить только что созданный файл
  • не забыть про git, пока идёт сессия в Claude

Примеры запросов агенту

  • Поправь src/api/client.js и оставь коммит на smart-commit
  • Создай docs/setup.md — хук закоммитит его сам
  • Проверь, что после правки файла появился новый коммит в git log

Как установить smart-commit

1Через claude-code-templates

npx claude-code-templates@latest --hook git-workflow/smart-commit

2Вручную: положить файлы

.claude/settings.json

Блок hooks: событие (PreToolUse, PostToolUse, Stop…) → команда. Личные — ~/.claude/settings.json

По шагам, с командами для каждой платформы: Хуки Claude Code: что это, где настраивать и как запретить опасную команду

Из того же набора205

Весь набор →
react-performance-optimization Субагент ищет и чинит узкие места React-приложений: лишние ре-рендеры, раздутый бандл, утечки памяти. Пригодится, когда страница тормозит или просели Core Web Vitals. 3 935установок database-optimization Субагент для разбора медленных запросов: смотрит планы выполнения, предлагает индексы и настройки пула соединений. 3 924установок update-docs Слэш-команда проходит по specs/, CLAUDE.md и README.md, отмечает выполненное и обновляет проценты готовности проекта. 3 861установок supabase-schema-architect Субагент проектирует схемы PostgreSQL в Supabase, планирует миграции и пишет политики RLS. Пригодится, когда база растёт и надо навести порядок в доступе. 3 839установок architecture-review Слэш-команда для Claude, которая разбирает структуру проекта, паттерны и зависимости и выдаёт план улучшений. Пригодится перед крупным рефакторингом. 3 419установок update-search-year Хук добавляет текущий год к запросам WebSearch, если года в них нет. Пригодится, когда нужны свежие результаты, а не прошлогодние. 3 412установок technical-researcher Субагент изучает чужие репозитории и документацию: собирает метрики, оценивает качество кода и выдаёт отчёт с рекомендациями. 3 344установок lint-on-save Хук запускает линтер сразу после того, как агент изменил файл. ESLint, Pylint и RuboCop срабатывают сами, без ручного вызова. 3 235установок

Похожие

ce-commit EveryInc Автоматически создаёт гит-коммиты с осмысленными сообщениями, разбивая изменения по логическим блокам. Работает когда нужно зафиксировать staged или unstaged файлы без пуша. CX Codex +1 3 400установок commit официальный Anthropic Создаёт коммит в git на основе текущих изменений в ветке. Помогает зафиксировать правки без ручного набора сообщений коммита. 4 121установок om-check-and-commit open-mercato Прогоняет все проверки ветки по порядку, чинит простые падения и публикует результат. Пригодится перед пушем, когда нужно пройти CI-подобный гейт. CX Codex +1 2 800установок conventional-commit marcelorodrigo Скилл для ИИ-агентов, который заставляет их писать коммиты по спецификации Conventional Commits: тип, scope, императив в заголовке. CX Codex +1 953установок commit-commands официальный Anthropic Три слэш-команды для git: собрать коммит по изменениям, довести ветку до пул-реквеста, вычистить локальные ветки, удалённые с сервера. ★ 44 635звёзд репо caveman-commit JuliusBrussee Формирует краткие коммит-сообщения по стандарту Conventional Commits без лишних слов. Пригодится, когда нужно сфокусироваться на сути изменений. CX Codex +1 415 800установок

Рядом в каталоге

Всё по теме «Git и GitHub» →

Вопросы о smart-commit

Как установить smart-commit в Claude?

Выполните npx claude-code-templates@latest --hook git-workflow/smart-commit, затем проверьте запись в .claude/settings.json.

Что делает smart-commit?

После Edit или Write добавляет изменённый файл в индекс и коммитит его. Сообщение зависит от числа изменённых строк или от того, что файл новый.

Когда хук не сработает?

Вне git-репозитория, при пустом CLAUDE_TOOL_FILE_PATH и когда в файле нет изменений. Ошибки коммита подавляются, поэтому проверяйте git log.

Исходный текст

smart-commit.json · MIT
{
  "description": "Intelligent git commit creation with automatic message generation and validation. Creates meaningful commits based on file changes.",
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit",
        "hooks": [
          {
            "type": "command",
            "command": "if git rev-parse --git-dir >/dev/null 2>&1 && [[ -n \"$CLAUDE_TOOL_FILE_PATH\" ]]; then git add \"$CLAUDE_TOOL_FILE_PATH\" 2>/dev/null; CHANGED_LINES=$(git diff --cached --numstat \"$CLAUDE_TOOL_FILE_PATH\" 2>/dev/null | awk '{print $1+$2}'); if [[ $CHANGED_LINES -gt 0 ]]; then FILENAME=$(basename \"$CLAUDE_TOOL_FILE_PATH\"); if [[ $CHANGED_LINES -lt 10 ]]; then SIZE=\"minor\"; elif [[ $CHANGED_LINES -lt 50 ]]; then SIZE=\"moderate\"; else SIZE=\"major\"; fi; MSG=\"Update $FILENAME: $SIZE changes ($CHANGED_LINES lines)\"; git commit -m \"$MSG\" \"$CLAUDE_TOOL_FILE_PATH\" 2>/dev/null || true; fi; fi"
          }
        ]
      },
      {
        "matcher": "Write",
        "hooks": [
          {
            "type": "command",
            "command": "if git rev-parse --git-dir >/dev/null 2>&1 && [[ -n \"$CLAUDE_TOOL_FILE_PATH\" ]]; then git add \"$CLAUDE_TOOL_FILE_PATH\" 2>/dev/null; FILENAME=$(basename \"$CLAUDE_TOOL_FILE_PATH\"); git commit -m \"Add new file: $FILENAME\" \"$CLAUDE_TOOL_FILE_PATH\" 2>/dev/null || true; fi"
          }
        ]
      }
    ]
  }
}

© davila7 · MIT · davila7/claude-code-templates

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой