| name | code-review |
| description | Systematic code review with security, performance, and quality checklists. Use when user asks to "проревьюй код", "сделай code review", "review this code", "check code quality", or when task requires reviewing pull requests, analyzing code changes, or evaluating code quality. |
Code Review Skill — систематическое ревью кода
Методология глубокого и структурированного code review с акцентом на безопасность, производительность и поддерживаемость.
Когда использовать
- Review pull request или изменений
- Оценка качества существующего кода
- Pre-merge проверка
- Аудит безопасности
- Проверка соответствия стандартам
Методология Code Review
Структура Review
Code review проходит в 4 этапа:
- Quick Scan — первый взгляд (2-5 мин)
- Deep Analysis — глубокий анализ (15-30 мин)
- Security & Performance — проверка критичных аспектов (10-15 мин)
- Recommendations — выводы и рекомендации (5 мин)
Этап 1: Quick Scan (Быстрый взгляд)
Цель: Получить общее впечатление от изменений
Что проверяем
✅ Scope изменений
- Сколько файлов изменено?
- Какой объём кода (строки добавлены/удалены)?
- Соответствует ли scope заявленной задаче?
✅ Структура
- Логичная ли организация файлов?
- Нет ли смешанных concerns?
- Правильное ли место для нового кода?
✅ Первое впечатление
- Код читаемый?
- Naming понятный?
- Есть ли очевидные проблемы?
Красные флаги на Quick Scan
🚩 STOP и спроси:
- Изменено >500 строк в одном PR (слишком большой)
- Изменения в несвязанных модулях (scope creep)
- Отсутствуют тесты для новой логики
- Commented-out код или debug statements
Вывод Quick Scan:
## Quick Scan
**Scope:** [Описание изменений]
**Файлов изменено:** N
**Строк:** +XXX / -YYY
**Первое впечатление:**
- ✅ [Что хорошо]
- ⚠️ [Что требует внимания]
- 🚩 [Критичные проблемы]
Этап 2: Deep Analysis (Глубокий анализ)
Цель: Детально понять логику и качество кода
Чеклист Deep Analysis
📖 Читаемость (Readability)
🧱 Архитектура (Architecture)
🔄 Логика (Logic)
✅ Тестирование (Testing)
Вывод Deep Analysis:
## Deep Analysis
### Читаемость: ⭐⭐⭐⭐☆ (4/5)
- ✅ Naming понятный
- ⚠️ Функция `processData` слишком большая (80 строк)
### Архитектура: ⭐⭐⭐☆☆ (3/5)
- ✅ Separation of concerns соблюдён
- ❌ Дублирование логики в файлах X и Y
### Логика: ⭐⭐⭐⭐⭐ (5/5)
- ✅ Корректная обработка ошибок
- ✅ Edge cases учтены
### Тестирование: ⭐⭐☆☆☆ (2/5)
- ❌ Отсутствуют unit tests для новых функций
- ⚠️ Integration test только happy path
Этап 3: Security & Performance
Цель: Проверить критичные аспекты безопасности и производительности
🔒 Security Checklist
Input Validation
Authentication & Authorization
Common Vulnerabilities
Data Protection
⚡ Performance Checklist
Algorithms & Data Structures
Database
Memory & Resources
Network & I/O
Вывод Security & Performance:
## Security & Performance
### 🔒 Security: ⚠️ ISSUES FOUND
- ❌ **CRITICAL:** SQL запрос без параметризации (`db.query(${userId})`)
Файл: `src/users/repository.ts:42`
Риск: SQL Injection
Fix: Использовать prepared statements
- ⚠️ **WARNING:** Пароль логируется в debug mode
Файл: `src/auth/login.ts:15`
Риск: Утечка credentials
Fix: Убрать из логов
### ⚡ Performance: ⚠️ NEEDS IMPROVEMENT
- ⚠️ N+1 проблема при загрузке связанных данных
Файл: `src/posts/service.ts:67`
Impact: Медленные запросы при >100 записей
Fix: Использовать eager loading или dataloader
Этап 4: Recommendations (Рекомендации)
Цель: Дать конструктивную обратную связь
Категории комментариев
Используй префиксы для приоритизации:
- 🚨 BLOCKER — нельзя мержить без исправления
- ❌ CRITICAL — нужно исправить (security, bug, breaking)
- ⚠️ MAJOR — серьёзная проблема (performance, architecture)
- 💡 SUGGESTION — улучшение (refactoring, best practice)
- 📝 NITPICK — мелочь (style, naming)
- ✅ POSITIVE — отметь хорошие решения
Структура комментария
### [Категория] [Файл:строка] — [Краткое описание]
**Проблема:**
[Что не так]
**Почему это важно:**
[Impact или риск]
**Как исправить:**
[Конкретное решение или пример кода]
**Пример:**
```language
// ❌ Текущий код
bad code here
// ✅ Предлагаемый вариант
good code here
### Итоговый отчёт
```markdown
# Code Review Summary
## Overall Rating: ⭐⭐⭐☆☆ (3/5)
**Можно мержить:** ❌ НЕТ (есть блокеры)
---
## 🚨 Blockers (2)
1. [SQL Injection в user repository](файл:строка)
2. [Missing authentication check](файл:строка)
## ❌ Critical Issues (1)
1. [Password logging in debug mode](файл:строка)
## ⚠️ Major Issues (3)
1. [N+1 query problem](файл:строка)
2. [Code duplication across modules](файл:строка)
3. [Missing unit tests](файл:строка)
## 💡 Suggestions (5)
1. Refactor large function into smaller pieces
2. Consider using custom hook for state management
3. Add TypeScript strict mode
4. Extract magic numbers to constants
5. Improve error messages for better UX
## ✅ What went well
- Clean separation of concerns
- Good naming conventions
- Comprehensive integration tests
- Well-documented complex logic
---
## Action Items
**Before merge:**
- [ ] Fix SQL injection vulnerability
- [ ] Add authentication middleware
- [ ] Remove password from logs
**After merge (create tasks):**
- [ ] Add unit tests for new service methods
- [ ] Refactor duplicated code into shared utility
- [ ] Optimize database queries (N+1 problem)
**Future improvements:**
- [ ] Consider migration to TypeScript strict mode
- [ ] Extract business logic into domain services
Инструменты Code Review
Поиск паттернов проблем
rg "\.query\(.*\$\{" --type ts
rg -i "password.*=.*['\"]" --type js
rg "console\.(log|debug|warn)" --type js
rg "TODO|FIXME|HACK|XXX" -i
rg "^\\s*//.*;" --type js
Анализ тестов
npm run test:coverage
rg "describe.*MyComponent|test.*myFunction"
Best Practices Code Review
DO ✅
-
Будь конструктивным
- Объясняй "почему", не только "что"
- Предлагай конкретные решения
- Отмечай хорошие решения
-
Будь объективным
- Фокусируйся на коде, не на человеке
- Используй факты и примеры
- Ссылайся на стандарты проекта
-
Приоритизируй
- Сначала critical issues
- Потом major improvements
- Nitpicks в конце
-
Используй примеры
- Покажи как исправить
- Дай ссылки на документацию
- Укажи похожие места в кодовой базе
DON'T ❌
-
Не будь субъективным
- ❌ "Мне не нравится этот код"
- ✅ "Этот код нарушает принцип SRP"
-
Не перфекционизируй
- Мелкие стилистические правки — низкий приоритет
- Не блокируй PR из-за nitpicks
- Лучше done чем perfect
-
Не игнорируй context
- Учитывай deadlines
- Понимай constraints проекта
- Помни о technical debt trade-offs
Шаблоны запросов
Полный review:
Проревьюй этот код, проверь security и performance
Фокусированный review:
Проверь только безопасность этого SQL query
Pre-merge check:
Сделай quick review перед merge в main
Review изменений:
Проанализируй изменения в этом PR
Интеграция с другими skills
- Перед review → используй research для понимания контекста
- После review → используй debugging если нашёл баги
- После review → предложи refactoring для улучшений
- Результаты review → сохрани в комментарии к PR или в Todoist