---
name: opus-review
description: Ревью через второй независимый инстанс Opus. Навык учит агента запускать независимое ревью артефактов через субагент Task с изолированным контекстом. Используй при вызове /review-opus, /review-all, или когда пользователь просит проверить план, спецификацию, код или архитектуру независимым взглядом той же модели.
---
# Ревью через второй независимый инстанс Opus
Независимое ревью через Task tool (субагент с изолированным контекстом). Результат синхронный — мониторинг не нужен. Отличие от `codex-review`: не требует CLI, мгновенный старт, но та же модель — Opus и GPT дополняют друг друга.
---
## Когда применять
| Триггер | Действие |
|---------|----------|
| Пользователь вызывает `/review-opus` | Запустить ревью через Task субагент |
| Пользователь вызывает `/review-all` | Запустить Opus-ревью параллельно с GPT |
| Пользователь просит «второе мнение» | Предложить `/review-opus` как быстрый вариант |
| Сложная архитектура, > 5 файлов | Рекомендовать ревью |
| Перед реализацией спецификации | Предложить ревью плана |
---
## Формирование промпта
Промпт для ревьювера состоит из трёх обязательных блоков. Подробный шаблон: [references/prompt-template.md](references/prompt-template.md).
### Блок 1: Роль и задача
Роль задаётся явно — это критически важно для качества ревью:
```
Ты — старший ревьюер 1С BSL с опытом 10+ лет. Ревьюишь независимо от автора.
Находишь реальные проблемы, а не придираешься к мелочам.
Критика конструктивна: не «это плохо», а «это плохо, потому что X, исправь так: Y».
Задача: проведи ревью <тип> — <описание и контекст>.
```
### Блок 2: Артефакт
Конкретный объект проверки. **Всегда передавать пути к файлам — ревьювер читает их самостоятельно. Никогда не вставлять содержимое файлов в промпт.**
Правила по типу:
- **Спецификация** — путь к файлу спецификации + пути к исходным материалам (задача, анализ)
- **Код** — основание изменений (спека или задача) + подсказка использовать `git diff --name-only HEAD~1` + ключевые файлы
- **Тесты** — путь к файлам/каталогу тестов + тестируемый модуль + основание (спека)
- **Форма** — путь к модулю формы + основание изменений
- **Архитектура** — путь к архитектурному документу + ключевые файлы реализации
- **Если файлов нет** (артефакт только в чате) — передать текстом как исключение
### Блок 3: Навыки (критерии ревью)
Пути к файлам `SKILL.md`, которые ревьювер прочитает сам:
| Тип артефакта | Навыки |
|---------------|--------|
| Код BSL | `coding-standards`, `error-handling`, `query-patterns`, `ssl-patterns`, `form-patterns` |
| Спецификация / план | `spec-standard` |
| Форма (UI) | `form-patterns`, `form-visual-requirements` |
| Архитектура | `ssl-patterns`, `query-patterns`, `coding-standards` |
| Тесты | `coding-standards`, `error-handling` |
Пути относительно корня проекта:
```
framework/skills/bsl-practices/<name>/SKILL.md
framework/skills/spec-writing/<name>/SKILL.md
```
### Блок 4: Формат ответа (обязательный)
Субагенту нужно явно задать формат — иначе ответ может быть произвольным:
```
## Формат ответа
Для каждого замечания:
[BLOCK|WARN|INFO] <файл>:<строка> (или <раздел> для спецификаций)
Проблема: <что не так>
Причина: <почему это проблема>
Исправление: <направление исправления>
В конце — сводка:
- Количество BLOCK / WARN / INFO
- Общая оценка: принято | нужны исправления | требуется переработка
- Топ-3 проблемы по приоритету
Если артефакт чистый — скажи «замечаний нет» и не выдумывай проблемы.
```
---
## Вызов субагента
### Команда
Использовать Task tool с `subagent_type: "general-purpose"`:
```
Task(
subagent_type: "general-purpose",
description: "Независимое ревью <тип> через Opus",
prompt: "<сформированный промпт>"
)
```
### Особенности
- **Синхронный вызов** — результат возвращается напрямую, не нужен мониторинг фонового процесса
- **Изолированный контекст** — субагент не видит историю текущей сессии, только то что в промпте
- **Доступ к файлам** — субагент использует те же инструменты (Read, Glob, Grep, Bash), видит весь проект
- **Параллельный запуск** — можно запустить несколько Task одновременно (в одном сообщении)
### Пример вызова
```
Task(
subagent_type: "general-purpose",
description: "Ревью спецификации резервирования товаров",
prompt: """
Ты — старший ревьюер 1С BSL с опытом 10+ лет. Ревьюишь независимо от автора.
Находишь реальные проблемы, а не придираешься к мелочам.
Задача: проведи ревью спецификации механизма резервирования товаров.
Контекст: доработка типовой УТ, задача #42.
# Артефакт
Тип: спецификация
Прочитай: docs/specs/SPEC-резервирование-товаров.md
Исходные материалы: docs/tasks/task-42.md
# Навыки (критерии)
Прочитай и используй как критерии:
- framework/skills/spec-writing/spec-standard/SKILL.md
# Формат ответа
[BLOCK|WARN|INFO] <раздел>
Проблема: ...
Причина: ...
Исправление: ...
Сводка: BLOCK/WARN/INFO, общая оценка, топ-3 проблемы.
"""
)
```
---
## Получение результата
Task возвращает отзыв синхронно. Показать пользователю. Если есть BLOCK-замечания — предложить исправить. Финальное решение за пользователем.
---
## Обработка ошибок
| Ситуация | Действие |
|----------|----------|
| Task вернул пустой результат | Повторить с более явным промптом — добавить «Начни ревью прямо сейчас» |
| Субагент не нашёл файл артефакта | Проверить путь, передать правильный путь относительно корня проекта |
| Субагент пишет общие слова без привязки к коду | Уточнить промпт: «Привязывай каждое замечание к конкретному файлу и строке» |
| Субагент отказывается критиковать | Усилить роль в промпте: «Ты обязан найти проблемы — если их нет, объясни почему» |
---
## Типичные ошибки
| Ошибка | Последствие |
|--------|------------|
| Нет роли ревьювера в промпте | Субагент ведёт себя как помощник, а не критик |
| Нет блока «Формат ответа» | Произвольная структура |
| Содержимое навыков вместо путей | Раздувание промпта — передавать только пути |
| Артефакт без описания задачи | Субагент не понимает контекст |
| Ожидание контекста сессии | Субагент изолирован — включать все пути явно |
---
Шаблон промпта: `references/prompt-template.md`. GPT-ревью: `codex-review`.
---
depends_on:
- framework/skills/bsl-practices/coding-standards/SKILL.md
- framework/skills/bsl-practices/error-handling/SKILL.md
- framework/skills/bsl-practices/query-patterns/SKILL.md
- framework/skills/bsl-practices/ssl-patterns/SKILL.md
- framework/skills/bsl-practices/form-patterns/SKILL.md
- framework/skills/bsl-practices/form-visual-requirements/SKILL.md
- framework/skills/spec-writing/spec-standard/SKILL.md
---