Code Review
Структурированный ревью PR/diff за один запуск: чек-лист, severity, файл:строка, исправление.
Загружай этот скилл когда нужно проверить код (diff, PR, commit) и получить
структурированные замечания с приоритетами. Скилл читает изменения, применяет
чек-лист из шести категорий и выдаёт готовый текст для комментария в PR.
🎯 When to use
Use this skill when:
- Нужно ревью PR/commit/diff перед мержем
- Просят «проверь код», «найди баги», «замечания по коду»
- Нужен чек-лист code quality перед релизом
- Нужно быстро прогнать diff по категориям: correctness, security, performance, style, tests, edge cases, a11y
- Нужен структурированный комментарий к PR с severity и ссылками на файл:строку
Do NOT use when:
- Нужно внести правки — скилл только анализирует и комментирует; исправления вносит агент отдельно по явному запросу
- Нужен полный аудит всего репозитория, а не изменений — скилл работает по diff
- Нужен security-аудит с PoC-доказательством уязвимости — используй специализированный security-скилл
- Это первичное ревью архитектуры без кода — скилл анализирует код, не схемы
📦 What this skill does
Inputs
--repo PATH — git-репозиторий: берётся git diff HEAD (staged + unstaged)
--file PATH — обычный файл: ревьюится целиком, каждая строка считается добавленной
--diff PATH — файл, содержащий git diff
- stdin — git diff (по умолчанию,
git diff | review.py)
Outputs
- Список замечаний:
[severity] файл:строка — правило: проблема + предлагаемое исправление
- Сводка по категориям и severity (critical/warning/nit)
- Markdown-отчёт по шаблону
templates/review-template.md — готов для комментария в PR
🔧 How to use
Шаг 1: получить diff
git diff HEAD > /tmp/pr.diff
Шаг 2: запустить ревью
python3 scripts/review.py --diff /tmp/pr.diff
Или напрямую из репозитория:
python3 scripts/review.py --repo /path/to/repo
Или через stdin:
git diff | python3 scripts/review.py
Шаг 3: отфильтровать и оформить
# только critical/warning — то, что блокирует мерж
python3 scripts/review.py --diff /tmp/pr.diff --severity critical,warning
# только security-категория
python3 scripts/review.py --diff /tmp/pr.diff --category security
# markdown-отчёт по шаблону для комментария в PR
python3 scripts/review.py --diff /tmp/pr.diff \
--format markdown --template templates/review-template.md
# JSON-отчёт для автоматизации
python3 scripts/review.py --diff /tmp/pr.diff --json
📚 Examples
Example 1: ревью PR из репозитория
Input: python3 review.py --repo ./myapp
Output:
[critical] src/db.py:18 — SEC-001: SQL-запрос собирается из f-строки — риск SQL-инъекции.
код: sql = f"INSERT INTO users (name) VALUES ({name})"
fix: используйте параметризованные запросы: cursor.execute(sql, (name,))
[warning] src/db.py:9 — CORR-001: сравнение с None в Yoda-форме.
fix: пишите `x is None`
Example 2: ревью файла целиком
Input: python3 review.py --file src/worker.go
Output:
[critical] worker.go:16 — SEC-009: запуск через `sh -c` с конкатенацией — риск command injection.
fix: передавайте аргументы отдельными элементами без shell.
Example 3: markdown-отчёт для комментария в PR
Input: python3 review.py --diff pr.diff --format markdown --template templates/review-template.md
Output: готовый Markdown с секциями Summary / Findings / Checklist,
подстановкой {{REVIEW_TARGET}}, {{TOTAL}}, {{CRITICAL}}, {{WARNING}},
{{NIT}}, {{SUMMARY}}, {{FINDINGS}}, {{DATE}}.
⚠️ Constraints & gotchas
- Скилл не вносит правки: он читает diff и выдаёт замечания. Исправления вносит агент только по явному запросу пользователя.
- Эвристики: правила — регулярные выражения, возможны ложные срабатывания. Каждое замечание проверяй вручную перед публикацией.
- SEC-007 (innerHTML/XSS) подавляется на строках, где применён escape-хелпер
(
esc(, escapeHtml(, sanitize( и т.п.) — такие находки ложные. Если экранирование
происходит внутри вызываемой функции (например, renderCard()), проверь её вручную.
- EDGE-004 (деление на переменную) не срабатывает внутри CSS
url(...), data:-URI и
URL со схемой (://) — / там не арифметика (например, http://.../svg).
- Только добавленные строки: удалённые строки не ревьюятся, номера строк соответствуют новому файлу.
- Без внешних зависимостей: только Python 3 stdlib;
git нужен только для режима --repo.
- Секреты: если найдены захардкоженные пароли/токены — не публикуй их в комментарии PR, сообщи приватно (DM/личный канал).
- Severity не блокирует: отчёт — материал для ревьюера, а не автоматический gate.
🔗 Related
- Pairs well with
commit-message-writer (ревью до коммита) и github-repo-hygiene (гигиена репозитория после мержа).
- Чек-лист правил:
scripts/checklists.py — расширяй под свой стек (добавляй dict-правила).
- Шаблон отчёта:
templates/review-template.md.
- Пример разбора PR:
examples/example-pr.md.
1---2name: code-review3description: Структурированный code review: читает git diff или путь к репозиторию/файлу, применяет чек-лист категорий (correctness, security, performance, style, tests, edge cases, a11y) и выдаёт замечания вида [severity] файл:строка с предлагаемым исправлением. Скилл только анализирует и комментирует, правки не вносит. Триггеры: 'code review', 'ревью кода', 'review PR', 'проверь код', 'pull request review', 'code quality', 'замечания по коду', 'найти баги', 'review commit', 'проверь изменения', 'review diff', 'ревью пул-реквеста'.4license: MIT5---67# Code Review89> Структурированный ревью PR/diff за один запуск: чек-лист, severity, файл:строка, исправление.1011Загружай этот скилл когда нужно **проверить код** (diff, PR, commit) и получить12структурированные замечания с приоритетами. Скилл читает изменения, применяет13чек-лист из шести категорий и выдаёт готовый текст для комментария в PR.1415## 🎯 When to use1617Use this skill when:18- Нужно ревью PR/commit/diff перед мержем19- Просят «проверь код», «найди баги», «замечания по коду»20- Нужен чек-лист code quality перед релизом21- Нужно быстро прогнать diff по категориям: correctness, security, performance, style, tests, edge cases, a11y22- Нужен структурированный комментарий к PR с severity и ссылками на файл:строку2324Do NOT use when:25- Нужно **внести правки** — скилл только анализирует и комментирует; исправления вносит агент отдельно по явному запросу26- Нужен полный аудит всего репозитория, а не изменений — скилл работает по diff27- Нужен security-аудит с PoC-доказательством уязвимости — используй специализированный security-скилл28- Это первичное ревью архитектуры без кода — скилл анализирует код, не схемы2930## 📦 What this skill does3132### Inputs33- `--repo PATH` — git-репозиторий: берётся `git diff HEAD` (staged + unstaged)34- `--file PATH` — обычный файл: ревьюится целиком, каждая строка считается добавленной35- `--diff PATH` — файл, содержащий git diff36- stdin — git diff (по умолчанию, `git diff | review.py`)3738### Outputs39- **Список замечаний**: `[severity] файл:строка — правило: проблема` + предлагаемое исправление40- **Сводка** по категориям и severity (critical/warning/nit)41- **Markdown-отчёт** по шаблону `templates/review-template.md` — готов для комментария в PR4243## 🔧 How to use4445### Шаг 1: получить diff4647```bash48git diff HEAD > /tmp/pr.diff49```5051### Шаг 2: запустить ревью5253```bash54python3 scripts/review.py --diff /tmp/pr.diff55```5657Или напрямую из репозитория:5859```bash60python3 scripts/review.py --repo /path/to/repo61```6263Или через stdin:6465```bash66git diff | python3 scripts/review.py67```6869### Шаг 3: отфильтровать и оформить7071```bash72# только critical/warning — то, что блокирует мерж73python3 scripts/review.py --diff /tmp/pr.diff --severity critical,warning7475# только security-категория76python3 scripts/review.py --diff /tmp/pr.diff --category security7778# markdown-отчёт по шаблону для комментария в PR79python3 scripts/review.py --diff /tmp/pr.diff \80 --format markdown --template templates/review-template.md8182# JSON-отчёт для автоматизации83python3 scripts/review.py --diff /tmp/pr.diff --json84```8586## 📚 Examples8788### Example 1: ревью PR из репозитория8990**Input:** `python3 review.py --repo ./myapp`91**Output:**9293```94[critical] src/db.py:18 — SEC-001: SQL-запрос собирается из f-строки — риск SQL-инъекции.95 код: sql = f"INSERT INTO users (name) VALUES ({name})"96 fix: используйте параметризованные запросы: cursor.execute(sql, (name,))97[warning] src/db.py:9 — CORR-001: сравнение с None в Yoda-форме.98 fix: пишите `x is None`99```100101### Example 2: ревью файла целиком102103**Input:** `python3 review.py --file src/worker.go`104**Output:**105106```107[critical] worker.go:16 — SEC-009: запуск через `sh -c` с конкатенацией — риск command injection.108 fix: передавайте аргументы отдельными элементами без shell.109```110111### Example 3: markdown-отчёт для комментария в PR112113**Input:** `python3 review.py --diff pr.diff --format markdown --template templates/review-template.md`114**Output:** готовый Markdown с секциями Summary / Findings / Checklist,115подстановкой `{{REVIEW_TARGET}}`, `{{TOTAL}}`, `{{CRITICAL}}`, `{{WARNING}}`,116`{{NIT}}`, `{{SUMMARY}}`, `{{FINDINGS}}`, `{{DATE}}`.117118## ⚠️ Constraints & gotchas119120- **Скилл не вносит правки**: он читает diff и выдаёт замечания. Исправления вносит агент только по явному запросу пользователя.121 - **Эвристики**: правила — регулярные выражения, возможны ложные срабатывания. Каждое замечание проверяй вручную перед публикацией.122 - **SEC-007 (innerHTML/XSS)** подавляется на строках, где применён escape-хелпер123 (`esc(`, `escapeHtml(`, `sanitize(` и т.п.) — такие находки ложные. Если экранирование124 происходит внутри вызываемой функции (например, `renderCard()`), проверь её вручную.125 - **EDGE-004 (деление на переменную)** не срабатывает внутри CSS `url(...)`, `data:`-URI и126 URL со схемой (`://`) — `/` там не арифметика (например, `http://.../svg`).127- **Только добавленные строки**: удалённые строки не ревьюятся, номера строк соответствуют новому файлу.128- **Без внешних зависимостей**: только Python 3 stdlib; `git` нужен только для режима `--repo`.129- **Секреты**: если найдены захардкоженные пароли/токены — не публикуй их в комментарии PR, сообщи приватно (DM/личный канал).130- **Severity не блокирует**: отчёт — материал для ревьюера, а не автоматический gate.131132## 🔗 Related133134- Pairs well with `commit-message-writer` (ревью до коммита) и `github-repo-hygiene` (гигиена репозитория после мержа).135- Чек-лист правил: `scripts/checklists.py` — расширяй под свой стек (добавляй dict-правила).136- Шаблон отчёта: `templates/review-template.md`.137- Пример разбора PR: `examples/example-pr.md`.