Звать, когда надо проверить документ об инциденте, написанный другим заходом: запись правила, фрагмент журнала о починке, разбор после инцидента, тело изменения-починки. Не автору о своём только что написанном тексте — ему нужен другой заход.
Installs into .claude/skills of the current project.
Are you the author of Incident Review?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/artvsmark-incident-review)
---
name: incident-review
description: >-
Звать, когда надо проверить документ об инциденте, написанный другим
заходом: запись правила, фрагмент журнала о починке, разбор после инцидента,
тело изменения-починки. Не автору о своём только что написанном тексте — ему
нужен другой заход.
argument-hint: "[что ревьюировать: файл, изменение или фрагмент]"
---
# Ревью документа об инциденте
> **Читатель:** агент — окно, которое ревьюирует чужой документ об инциденте, в момент до вердикта.
## Зачем это существует
Документ об инциденте здесь подводил не формой — форму держат гейты, — а тем,
что **объявленное оказывалось шире проверенного**, и находил это чаще внешний
взгляд, чем автор.
- **10 сентября, за час:** три ссылки на правила подряд в одном абзаце
фрагмента журнала — 128, потом 154, потом 182, — все мимо собственной
«Применимости». Каждую снял внешний взгляд, ни одну — автор
([204](../../../rules/ru/204-a-citation-is-checked-by-applicability.md), инцидент).
- **10 сентября:** три находки ревью пришли на **уже слитые** изменения той же
смены — висящая запятая в блоке контрактов, слитые воедино «файла нет» и «поля
нет», ответ по 157 без названного механизма
([`CHANGELOG.md`](../../../CHANGELOG.md), запись «Три находки ревью на уже слитых изменениях этой смены — закрыты»).
- **16 сентября:** пять находок ревью подряд на одной починке, #497–#505, и
каждая об одном: граница, объявленная в тексте, была шире исполняемой — в
изменении, которое эту границу и объявляло
([`CHANGELOG.md`](../../../CHANGELOG.md), запись «Заголовок блочного скаляра перестал считаться описанием навыка»).
## Что сделать
**0. Не быть автором.** Второй проход тем же окном видит те же слепые пятна;
ревью окна-автора внешним взглядом не является
([105](../../../rules/ru/105-an-outside-audit-needs-outside-eyes.md)). Внешний
взгляд каталога — отдельный прогон `review.yml` на каждом изменении; этот навык
— для другого захода, другого окна или владельца. Ревьюеру нужна история
решений: без неё находки о намеренных компромиссах — шум.
**1. Сначала то, что держит машина, — запустить, а не перечитать.** Форма
записи — `python scripts/audit_catalogue.py`; вердикт фрагмента —
`python scripts/collect_changelog.py --check`; тело изменения —
`python scripts/pr_body.py --check --body-file <файл>`; ссылки —
`python scripts/check_links.py`; соседи признака —
`python scripts/check_narrowing.py --range "origin/main...HEAD"`. Навык их не
повторяет: ему остаётся то, чего машина не видит.
**2. Задать вопросы, у каждого из которых свой предмет.**
| Вопрос | Где смотреть | Правило |
|---|---|---|
| каждое «(NNN)», «так велит NNN», «> правило NNN» — в границах «Не работает» цитируемого правила? «Смежное» и «см. также» не проверяются | раздел «Применимость» цитируемого, открытый, а не вспомненный | [204](../../../rules/ru/204-a-citation-is-checked-by-applicability.md) |
| утверждение о текущем механизме — что покраснеет, если оно перестанет быть правдой? | тело починки, «Практические границы», комментарии в коде | [183](../../../rules/ru/183-a-claim-about-the-mechanism-is-checked-against-it.md) |
| «откуда известно?» — замер на живом предмете или зелёный прогон? | причина, вывод | [146](../../../rules/ru/146-a-green-gate-does-not-verify-its-premise.md) |
| поведение площадки подтверждено номером прогона или изменения? | «починено», «работает» | [139](../../../rules/ru/139-a-mechanism-is-confirmed-by-a-run.md) |
| эталон, которым мерили, чем подтверждён? | числа и формы «сверено с …» | [055](../../../rules/ru/055-your-own-expectations-are-a-hypothesis.md) |
| «гейт не пропустит X» — назван прогон с X и с соседом у границы? | описание нового или починенного гейта | [140](../../../rules/ru/140-a-gate-is-tested-by-what-it-must-reject.md) |
| починка проверяющего инструмента — закреплены обе ошибки, ложное «прошло» и ложный отказ? | набор починки | [097](../../../rules/ru/097-a-checker-has-two-error-types.md) |
| правка признака — названы соседние случаи строкой `Соседи:`? Не для нового механизма | фрагмент журнала | [195](../../../rules/ru/195-a-narrowed-predicate-names-its-neighbour.md) |
| «тест краснеет до починки» — доказано полу-откатом? | тело починки | [014](../../../rules/ru/014-red-before-fix-needs-partial-revert.md) |
| связи с задачами полны: `Closes` против номеров, названных во фрагментах того же изменения; остаток правдив | тело изменения | [128](../../../rules/ru/128-a-required-field-is-checked-for-completeness.md), [173](../../../rules/ru/173-a-change-closes-the-task-or-names-the-rest.md) |
| отклонённое — с причиной? | вердикт «правилом не становится», отвергнутые гипотезы | [026](../../../rules/ru/026-rejected-findings-must-be-recorded.md) |
| запись самого каталога — применил ли он к себе то, что требует от потребителей? | записи и починки каталога | [197](../../../rules/ru/197-a-publisher-uses-what-it-publishes.md) |
**3. Вопросы, у которых правила нет, — задать и так назвать.** У владельца
действия, срока и отсутствия обвинения опоры в каталоге нет; измеримость
держится только аналогиями. Навык спрашивает о них, но находку по ним
называет «без правила каталога» — а не выдаёт за нарушение.
**4. Каждую находку — воспроизвести до выдачи.** Утверждение «нет X» в
документе проверяется поиском по поведению, а не по имени
([044](../../../rules/ru/044-check-the-premise-before-fixing.md)). У находки —
место и способ воспроизвести.
**5. Тяжесть не ставить.** Её ставит не тот, кто нашёл: находка идёт с местом
и способом воспроизвести, а уровень выносит автор документа или владелец
([086](../../../rules/ru/086-the-finder-does-not-grade-the-finding.md)).
**6. Вердикт — после последнего вопроса.** Не прочитан документ или не
отработала команда шага 1 — это третий исход, а не «находок 0»
([159](../../../rules/ru/159-a-set-verdict-comes-after-the-last-case.md)).
## Что выдать
Той же формой, что у `review.yml`: по строке `НАХОДКА: <что не так, одной
строкой>` на каждую находку с местом и способом воспроизвести, последней
строкой — `ВЕРДИКТ: находок N` либо «ВЕРДИКТ: не отработало — <что именно>».
Форма та же ради сравнимости; в задачу находок #473 такой вывод сам **не**
попадает — её пополняет только прогон ревью.
## Чего навык НЕ делает
- **Не краснеет и не держит слияние.** Ревью советует, а не запрещает; то,
что берётся машинно, — гейты шага 1.
- **Не заменяет внешний взгляд.** Прогон `review.yml` — отдельная учётная запись
и отдельный заход; навык в окне автора им не является.
- **Не ставит тяжесть** находке — только место и способ воспроизвести.
- **Не правит ревьюируемый документ.** Находка уходит автору, и закрывает её
его починка. Строкой `Разобрано: <отпечаток>` снимаются только находки
прогона ревью из #473: у вывода навыка отпечатка нет.