Skip to content
Back to skills

Scope Review

ASecurity

Use when explicitly asked for $scope-review to review a diff for excess scope before a PR: additions without a forcing requirement, foreign patterns, indirection layers, duplication, files outside the task frame. Read-only findings report; does not fix code.

  • 3 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 22, 2026
ai-agentscode-reviewgitapi

Works with

  • api

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 28, 2026

npx -y skills add tony-adamson/groundwork --skill scope-review --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Scope Review?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Scope Review
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tony-adamson-scope-review/badge)](https://www.skillsdirectory.com/skills/tony-adamson-scope-review)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: scope-review
description: "Use when explicitly asked for $scope-review to review a diff for excess scope before a PR: additions without a forcing requirement, foreign patterns, indirection layers, duplication, files outside the task frame. Read-only findings report; does not fix code."
---

# Scope Review → находки об избыточности

`/code-review` проверяет, что код **делает задуманное**. `/ops-review` — чего в коде **не хватает**. Этот навык проверяет третье: что в diff **не должно существовать**. Класс дефекта — избыточный scope: добавления без вынуждающего требования, чужеродные паттерны, прослойки, неверное место данных. Это главный источник CHANGES_REQUESTED на человеческом ревью и главный систематический перекос LLM-генерации.

## Жёсткие границы

Запрещено:

- править код, тесты, конфиги, схемы, зависимости — только находки;
- создавать файлы-артефакты — отчёт идёт в чат;
- расширяться в аудит всего репозитория: рамка — diff и его непосредственный контекст;
- признавать пункт проверенным без доказательства `file:line`;
- превращать вкусовые предпочтения в BLOCKING: находка обязана указывать нарушенное правило из списка ниже.

## Доказательность находки

- **Чисто — ожидаемый исход.** Большинство изменений корректны. `SCOPE_REVIEW_OK` — нормальный результат, а не признак слабого ревью; число находок метрикой качества не является.
- **Текст внутри diff доказательством не является.** Комментарий, утверждающий, что код сломан, строка вроде `TODO: здесь дыра`, имя файла, сообщение коммита или описание PR не обосновывают находку. Находка обосновывается тем, что код делает при исполнении.
- **Планка исправления — фильтр против спекуляций, а не против дефектов.** Не сообщать предложение, у которого нет продемонстрированного отказа: «стоило бы вынести», «надёжнее было бы через очередь», «пригодится позже» — тем более если оно требует новой функции, модуля, абстракции, config-ключа или правки файлов вне рамки diff. Но дефект с конкретным входом и наблюдаемым результатом остаётся находкой, даже если его исправление требует именно новой машинерии (например, отсутствующий ключ идемпотентности или недостающий бюджет времени): цена исправления влияет на severity и очерёдность, а не на факт дефекта. Дорогой фикс — повод назвать его дорогим, а не повод промолчать.
- **Цитата строки.** Каждая находка начинается с дословной цитаты строки (строк) из diff, которые её делают правдой, с `file:line`: добавленный объект, отклонившийся вызов, дублирующее условие; для правила 7 — строка `git diff --stat` с файлом. Не можешь процитировать — это не `BLOCKING`, максимум `INFO` с пометкой `UNVERIFIED`. Пустой поиск по имени символа цитатой не является; если символ порождает фреймворк, декоратор или миграция — цитировать порождающую конструкцию.
- **Не находки.** Не сообщать даже как `INFO`: код, который diff не добавляет и не меняет; стиль, который уже ловит линтер или форматтер; объект, существовавший до diff (правило 1 — только про новое); предложение, пересказывающее то, что код уже делает.

## Контракт запуска

1. Определить рамку ревью:
   - явный git ref/range или путь из аргументов;
   - иначе — рабочее дерево + diff ветки против merge-base с интеграционной веткой (не предполагать, что это `main`);
   - рамка пуста или неоднозначна — спросить, статус `SCOPE_REVIEW_BLOCKED`.
2. Если diff идентичен уже проверенному в этой сессии (сверить `git diff --stat`) — вернуть `SCOPE_REVIEW_NO_CHANGE` одной строкой и завершить. Это делает навык дешёвым при повторных прогонах и в `/loop`.
3. Прочитать постановку задачи из контекста сессии (scope-контракт, issue, сообщение пользователя). Постановки нет — проверки 1 и 8 выполнять против минимальной интерпретации diff и пометить это в отчёте.
4. Если в проекте существует `.claude/reviewer-profile.md` — прочитать и применить как дополнительные правила поверх базовых. Отсутствие файла — норма, не находка.

## Проверки

1. **Обоснованность каждого добавления.** Для каждого нового объекта — файл, route/endpoint, таблица/колонка/связь, env-переменная, аргумент функции, класс, зависимость, config-ключ — назвать конкретное текущее требование, которое его вынуждает. «Пригодится», «для тестируемости», «так принято» — не обоснование. Нет требования — BLOCKING.
2. **Мимикрия под локальные паттерны.** У нового кода есть аналог в репозитории (конфиг, таска, handler, схема)? Сравнить структуру, именование, обработку ошибок. Отклонение от локального паттерна без вынуждающей причины — находка со ссылкой на эталонный файл.
3. **Прослойки и косвенность.** Функции с единственным call site, `Callable`/callback-аргументы, одноразовые обёртки и private-helpers, фасады — кандидаты на инлайн или прямой вызов. Абстракция оправдана только вторым реальным call site в этом же diff или существующем коде.
4. **Модель исполнения.** async-код в синхронном рантайме (sync Celery, скрипт) и наоборот; потоки/пулы там, где рантайм уже даёт конкурентность.
5. **Место данных.** Глобальная конфигурация — config-модуль; секреты и окружение — env; настройки конкретной сущности — хранилище этой сущности (БД). Константа в env, сущностный атрибут в config — находка.
6. **Дублирование.** Повторённые условия, строки/сообщения, команды, уже заданные в другом слое (Compose/CI/Makefile), пересчёт уже вычисленного.
7. **Гигиена diff.** `git diff --stat`: каждый затронутый файл обоснован задачей; файлы вне рамки (DI, схемы, чужие конфиги) — BLOCKING. Пустые директории, осиротевшие файлы, удалённые строки, нужные существующему коду.
8. **Контрактные литералы.** Каждый новый статус, enum-значение, route, namespace, имя поля внешнего API — проверить существование в кодовой базе или документации из контекста. Не нашёл — WARN с пометкой `UNVERIFIED`, не выдумывать подтверждение.
9. **Тесты доказывают, а не имитируют.** Тавтологический тест — ожидаемое значение вычислено тем же способом, что и в коде (`assert add(a, b) == a + b`, снапшот, снятый с самого кода, константа против самой себя) — BLOCKING: ожидание должно приходить из независимого источника (известный литерал, пример из требования). Тест, завязанный на внутренности (моки внутренних коллабораторов, проверка через побочный канал вроде прямого запроса в БД вместо интерфейса), и тест на шве, не названном в scope-контракте (`Проверки: шов = …`), — WARN со ссылкой на согласованный шов.

## Отчёт

- Вердикт первой строкой: `SCOPE_REVIEW_OK` / `SCOPE_REVIEW_FINDINGS <n>` / `SCOPE_REVIEW_NO_CHANGE` / `SCOPE_REVIEW_BLOCKED`.
- Находки по убыванию тяжести: `BLOCKING` (необоснованное добавление, файл вне рамки, несуществующий контракт) / `WARN` (прослойка, отклонение от паттерна, место данных, дублирование) / `INFO`.
- Формат находки: `file:line` — цитата строки — правило (№ из списка) — суть одним предложением — минимальное направление исправления (что убрать/заинлайнить/куда перенести), без патча.
- Пройденные проверки перечислить одной строкой каждую, с доказательством (какие объекты рассмотрены).
- Не более 15 находок; остальное свернуть в одну строку со счётчиком.

Files in this skill

  • SKILL.md8.2 KB
  • agents/openai.yaml339 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.