# Commit Skill

Умный коммит: анализ изменений, проверка безопасности, conventional commit message.

## Когда использовать автоматически
- Даня просит «закоммить», «commit», «сделай коммит», «зафиксируй изменения», «коммитни»
- Даня завершил работу над задачей и говорит «готово, сохрани» в контексте git-репозитория

## Алгоритм

### 1. Анализ изменений
- Выполнить `git status` — список изменённых файлов
- Выполнить `git diff --staged` — что уже в stage
- Выполнить `git diff` — что ещё не в stage
- Выполнить `git log --oneline -5` — стиль предыдущих коммитов
- Если ничего не staged → предложить Дане какие файлы добавить

### 2. Проверка безопасности
- Проверить diff на наличие секретов:
  - API keys (`sk-`, `pk_`, `api_key`, `secret`)
  - Пароли и токены
  - Файлы `.env`, `credentials.json`, приватные ключи
- Если найдены → **предупредить Даню** и НЕ коммитить без явного подтверждения

### 3. Генерация commit message
- Формат: **Conventional Commits**
  - `feat:` — новая функциональность
  - `fix:` — исправление бага
  - `refactor:` — рефакторинг без изменения поведения
  - `docs:` — документация
  - `chore:` — рутина (конфиги, зависимости)
  - `test:` — тесты
  - `style:` — форматирование
- Первая строка: до 72 символов, фокус на «почему», а не «что»
- Тело (если нужно): детали изменений
- Футер: `Co-Authored-By: Claude <noreply@anthropic.com>`

### 4. Подтверждение
- Показать Дане:
  - Список файлов для коммита
  - Предложенный commit message
- **Ждать одобрения** перед коммитом

### 5. Коммит
- `git add` конкретных файлов (НИКОГДА `git add .` или `git add -A`)
- `git commit` с message через HEREDOC
- `git status` после коммита для подтверждения

## Формат ответа

```
Файлы для коммита:
  M  src/utils/auth.ts
  A  src/components/Login.tsx
  M  package.json

Commit message:
  feat: add login component with OAuth support

  Implements Google OAuth flow for user authentication.
  Adds Login component with error handling and loading states.

  Co-Authored-By: Claude <noreply@anthropic.com>

Коммитить? (да/нет)
```

## Правила
- НИКОГДА не коммитить без показа message Дане
- НИКОГДА не использовать `git add .` — только конкретные файлы
- Не коммитить файлы с секретами (.env, credentials, private keys)
- Если репозитория нет (не git) — сообщить
- Если нет изменений — сообщить, не создавать пустой коммит
- Не пушить автоматически — только коммит. Push только если Даня явно попросит

## Запрос: $ARGUMENTS
