Git — это память проекта. Плохие коммиты — память с провалами. Claude Code умеет писать коммиты сам: смотрит diff, формулирует «почему», делает атомарные изменения. Но чтобы это работало стабильно — нужны правила.

Канал с гайдами и контентом по claude code, выкладываем новости (когда режут лимиты в 10 раз) и какие инструменты через claude реализуем для проектов, канал: https://t.me/claudedevolper

Правила в CLAUDE.md

## Git-стиль

### Коммиты
- Conventional commits: `<type>(<scope>): <subject>`
- Типы: feat, fix, refactor, test, docs, chore
- Subject — строчными, без точки в конце, до 60 символов
- Всегда на английском

### Атомарность
- Один коммит = одно логическое изменение
- Не смешивать фичу и рефакторинг в одном коммите
- Не коммитить авто-форматирование отдельно — только вместе с логикой

### Запреты
- Никогда не использовать `--force` на main/develop
- Не коммитить секреты (проверять `.env`, `credentials.*`)
- Не коммитить от имени другого автора

Шорткат для осмысленного коммита

Slash-команда в .claude/commands/c.md:

---
description: Smart commit with analysis
---

Проанализируй staged изменения:
1. Покажи `git diff --staged --stat`
2. Определи тип коммита (feat/fix/refactor/...)
3. Сформулируй subject по шаблону `<type>(<scope>): <что>`
4. Если изменений на несколько логических блоков — предложи разбить
5. Не коммить сразу — покажи сообщение и спроси подтверждение

Теперь /c делает нормальный ревью diff'а вместо «fix stuff».

Разбиение на атомарные коммиты

Одна из самых ценных команд — git add -p управляется Claude:

Сейчас staged 3 логических блока:
1. Исправление бага в auth.ts (fix)
2. Рефакторинг утилит в lib/date.ts (refactor)
3. Новый тест для auth (test)

Предлагаю 3 отдельных коммита. Стартуем?

Claude сам разложит hunks по коммитам, и каждый получит правильный тип.

Pre-commit hook с проверками

.claude/settings.json:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash(git commit*)",
        "hooks": [
          {
            "type": "command",
            "command": "bash .claude/scripts/pre-commit.sh",
            "timeout": 60
          }
        ]
      }
    ]
  }
}

.claude/scripts/pre-commit.sh:

#!/bin/bash
set -e

# 1. Запрет секретов
if git diff --staged | grep -E "(API_KEY|SECRET|PASSWORD)\s*=\s*['\"]" >/dev/null; then
  echo "ERROR: possible secret in diff" >&2
  exit 1
fi

# 2. Линтер
npm run lint -- --quiet $(git diff --staged --name-only --diff-filter=ACM | grep -E "\.(ts|tsx|js)quot; | tr '\n' ' ') || exit 1

# 3. Типы
npm run typecheck || exit 1

echo "✓ pre-commit checks passed"

PR через gh CLI

Команда /pr:

---
description: Create pull request from current branch
---

1. `gh pr list --head $(git branch --show-current)` — проверь нет ли уже PR
2. Покажи `git log main..HEAD --oneline`
3. Сформулируй заголовок PR (< 70 символов)
4. Сгенерируй body по шаблону:

## Что сделано
- ...

## Как тестировать
- [ ] шаг 1
- [ ] шаг 2

5. Создай через `gh pr create --title "..." --body "..."`

Code review чужих PR

Субагент .claude/agents/pr-reviewer.md:

---
name: pr-reviewer
tools: Bash, Read, Grep
---

Ревьюишь чужой PR. Шаги:

1. `gh pr diff $PR_NUM`
2. Разбери diff по категориям: логика, тесты, стиль, безопасность
3. Для каждой находки:
   - severity: critical / high / medium / low
   - файл:строка
   - почему это проблема
   - как починить (конкретно)
4. В конце — сводка: Approve / Request changes / Comment
5. Постинг комментариев — только после моего подтверждения

Запуск: «ревью PR #142». Агент скачивает diff, комментирует в структурированном виде.

Подводные камни

  • Claude любит --amend. Когда хочешь это отключить, добавь в CLAUDE.md: «никогда не используй --amend — только новые коммиты».
  • git add -A опасен. В .gitignore может не быть свежего .env.local. Требуй явные git add <path>.
  • Force-push на main. Настрой deny в permissions: "Bash(git push --force*)": deny.

Как попробовать

1. Добавь секцию Git в CLAUDE.md 2. Создай /c и /pr команды 3. Включи pre-commit hook 4. Попробуй на реальной задаче — увидишь, как меняется качество коммитов

Канал с гайдами и контентом по claude code, выкладываем новости (когда режут лимиты в 10 раз) и какие инструменты через claude реализуем для проектов, канал: https://t.me/claudedevolper