# Code Review Skill

Комплексный ревью кода: качество, безопасность, производительность, архитектура.

## Когда использовать автоматически
- Даня просит «проверь код», «ревью», «review», «что не так с кодом», «посмотри на код»
- Даня отправляет ссылку на PR
- Даня просит оценить качество кода или найти проблемы

## Алгоритм

### 1. Определение scope
- Если `$ARGUMENTS` содержит PR URL → получить diff через `gh pr diff`
- Если `$ARGUMENTS` — путь к файлу/директории → читать через **Read** / **Glob**
- Если `$ARGUMENTS` пустой → `git diff` (незакоммиченные изменения)
- Если diff пуст → `git diff --staged`

### 2. Code Quality
- Code smells и anti-patterns
- Мёртвый код, неиспользуемые импорты
- Нарушения стиля и консистентности
- Дублирование кода (DRY)
- Именование переменных, функций, классов

### 3. Security
- OWASP Top 10: injection, XSS, CSRF, auth issues
- Хардкод секреты (API keys, пароли, токены)
- Input validation и sanitization
- Небезопасные зависимости

### 4. Performance
- Bottlenecks и неэффективные алгоритмы
- Лишние аллокации памяти
- N+1 запросы, неоптимальные SQL
- Отсутствующее кеширование

### 5. Architecture
- Модульность и coupling
- SOLID принципы
- Абстракции — слишком много или слишком мало
- Scalability concerns

### 6. Testing
- Покрытие тестами — есть ли gaps
- Качество существующих тестов
- Рекомендации: какие тесты добавить

### 7. Итог
- Приоритизированный список находок
- Общая оценка кода (1–10)

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

### Находки

| Severity | Файл:строка | Проблема | Рекомендация |
|----------|-------------|----------|--------------|
| CRITICAL | ... | ... | ... |
| HIGH | ... | ... | ... |
| MEDIUM | ... | ... | ... |
| LOW | ... | ... | ... |

### Общая оценка: N/10

**Сильные стороны:** ...
**Основные риски:** ...

## Правила
- Не выдумывать проблемы — указывать только реальные находки с конкретными строками
- CRITICAL и HIGH — объяснить подробно с примером исправления
- MEDIUM и LOW — кратко, одной строкой достаточно
- Если код хороший — сказать об этом, не искать проблемы ради количества
- Не ревьюить автосгенерированные файлы (lock files, build artifacts)
- Фокус на изменениях, а не на всём файле (если это diff/PR)

## Запрос: $ARGUMENTS
