Skip to content
Back to skills

Incident Communications

ASecurity

Звать, когда об инциденте надо написать — владельцу в окне, в теле или комментарии изменения, в задаче дежурного, в живой задаче-передаче следующему окну, потребителям каталога, — и перед отправкой уже написанного. Не для самого разбора и не для выбора меры.

  • 5 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 25, 2026
developmentpythongo

Security analysis

A100/100

Scanned September 28, 2026

npx -y skills add ArtVsMark/Engineering-Incidents-Playbook --skill incident-communications --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Incident Communications?

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

Security grade badge for Incident Communications
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/artvsmark-incident-communications/badge)](https://www.skillsdirectory.com/skills/artvsmark-incident-communications)

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: incident-communications
description: >-
  Звать, когда об инциденте надо написать — владельцу в окне, в теле или
  комментарии изменения, в задаче дежурного, в живой задаче-передаче
  следующему окну, потребителям каталога, — и перед отправкой уже написанного.
  Не для самого разбора и не для выбора меры.
argument-hint: "[кому и о чём]"
---

# Сообщение об инциденте

> **Читатель:** агент — окно, которое пишет об инциденте человеку, машине или следующему окну, в момент до отправки.

## Зачем это существует

Сообщения здесь подводили не отсутствием, а тем, что **читатель понимал из
них больше, чем в них было проверено**, — или не получал их вовсе.

- **2 сентября** дежурный сообщил «ветка зелёная», когда `attribution-history`
  была красной: работа стояла у него в исключениях, а сообщение об этом
  молчало. Два изменения уехали на сломанном основании
  ([`AGENTS.md`](../../../AGENTS.md) § «Открытая работа», пункт 0).
- **4 сентября** «чисто» прогона перед толчком снималось на Python 3.11.15
  при планке 3.12 — а все семь прогонов конвейера шли на 3.12, и ни один
  механизм этого не спрашивал. Поверхность в докладе названа не была
  ([`AGENTS.md`](../../../AGENTS.md) § «Перед толчком»).
- **8 сентября** из 29 слитых изменений с прогоном ревью вердикт успел к
  слиянию у 10: #392 слилось на 2,3 минуты раньше вердикта, и две верные
  находки не увидел никто — у сообщения не было адресата после слияния
  ([`scripts/review_findings.py`](../../../scripts/review_findings.py)).
- **10 сентября** снятия находок в теле #475 были написаны словами —
  `Разобрано: 202-boundary` вместо отпечатка. Человеку это выглядело разобранным,
  машине не значило ничего; поймано чтением за минуты до слияния
  ([`CHANGELOG.md`](../../../CHANGELOG.md), запись «Снятие заметки внешнего взгляда проверяется машинно»).

## Что сделать

**1. Назвать адресата — от него зависят место и минимум.**

| Адресат | Куда | Что сообщение несёт само |
|---|---|---|
| владелец в окне | ответ в разговоре | факты с адресами; у владельца полный доступ, дублировать журналы не нужно |
| следующее окно | живая задача-передача в трекере, собранная по ходу, а не в конце: решения с причиной и отвергнутым, где остановились — ссылками, что пробовали и не сработало, чего окно не знает, как работаем — ссылкой на свод ([138](../../../rules/ru/138-the-handover-is-assembled-as-you-go.md)) | работу, тест и первую строку ошибки: ссылка на журнал, который окно не откроет, следом не считается ([151](../../../rules/ru/151-the-trail-goes-where-the-fixer-can-reach.md)) |
| красное по расписанию | задача, которую завёл дежурный `main-red.yml`; вторая не заводится — адресат уже есть ([142](../../../rules/ru/142-a-scheduled-red-needs-an-addressee.md), граница «не работает») | что красное, с какого прогона, что проверено |
| изменение | тело — из первого коммита ветки, ставится конвейером один раз при открытии; правка тела после этого идёт отдельно | строки для машины — шаг 5 |
| потребители каталога | их трекер или задача-адресат из прогона сверки | полные адреса, а не пути в нашем дереве: у получателя его нет ([076](../../../rules/ru/076-messages-point-at-what-the-user-actually-has.md)) |

**2. У каждого слова статуса — поверхность и то, чего оно НЕ означает**
([056](../../../rules/ru/056-a-signal-states-what-it-does-not-mean.md)).

| Слово | Что обязано стоять рядом | Чего оно НЕ означает |
|---|---|---|
| «чисто», «прошло» | где снято: локально на какой версии, на изменении #N, на `main`; и сколько проверок создано ([010](../../../rules/ru/010-empty-checklist-is-not-green.md)) | не «проверено везде»: снятое не на площадке — гипотеза ([037](../../../rules/ru/037-finding-status-depends-on-window.md)) |
| «починено» | номер изменения или прогона, на котором отработало | не «причина устранена», пока нет живого исхода |
| «причина» | замер, которым она подтверждена | без замера — «гипотеза», и слово другое |
| «не отработала» | что именно не отработало | не «чисто»: третий исход при пересказе не сворачивается во второй |

**3. Неполное и пустое — называть.** Частичный перечень находок, проверок,
тестов пишется «N из M» ([016](../../../rules/ru/016-no-silent-truncation.md)).
Пустой раздел — фактом, датой и причиной: «не запускался» и «ничего не
найдено» — разные сообщения ([027](../../../rules/ru/027-empty-state-is-a-state.md)).

**4. Отвергнутое — с причиной.** Гипотеза о причине, которую проверили и
отбросили, остаётся в сообщении с тем, чем она опровергнута: иначе её проверят
заново ([026](../../../rules/ru/026-rejected-findings-must-be-recorded.md)).

**5. Строки для машины — её формой, отдельным абзацем над трейлерами.** Их
читает не человек, и выглядеть верно им мало:

- `Closes #N`, либо `Part of #N` со строкой `Остаётся:`, либо «Без задачи,
  потому что…» — форма в [`scripts/pr_body.py`](../../../scripts/pr_body.py);
- `Разобрано: <семь шестнадцатеричных знаков>` — отпечаток из задачи находок,
  а не слова;
- трейлеры — последним абзацем: машина читает их только там
  ([156](../../../rules/ru/156-trailers-live-in-the-tail-not-in-the-prose.md)).

Перед толчком тело проверяется той же командой, что стоит в конвейере:
`python scripts/pr_body.py --check --body-file <файл>`. После публикации строки,
на которые должна ответить машина, перечитываются по месту: код ответа 201
доставки не доказывает ([188](../../../rules/ru/188-published-is-not-delivered.md)).

**6. Срок — только с источником.** Срок, зависящий от чужого события — релиз,
площадка, сосед, — сверяется с живым источником
([203](../../../rules/ru/203-experimental-is-a-claim-about-someone-elses-calendar.md)).
Для своих сроков правила в каталоге нет, и сообщение их не обещает.

**7. Куда НЕ писать.** Ход инцидента не вписывается в документы о текущем
состоянии — `AGENTS.md`, `CLAUDE.md`, `README` ([024](../../../rules/ru/024-no-worklog-in-active-docs.md)).
Номер задачи уместен в сообщении и во фрагменте журнала; вывод, переезжающий в
свод, идёт туда без номера ([025](../../../rules/ru/025-issue-links-by-zone.md)).

## Что выдать

1. **Адресат и место** — из таблицы шага 1.
2. **Текст** — факты с адресом и поверхностью, гипотезы названы гипотезами,
   неполное — числом, пустое — с датой и причиной.
3. **Что не проверено** — отдельной строкой, а не молчанием.
4. **Строки для машины** — отдельным абзацем, формой из шага 5, и результат
   `pr_body.py --check`, если это тело изменения.

## Чего навык НЕ делает

- **Не краснеет.** Форму машинных строк держит гейт `pr_body.py` и сторож
  толчка; навык её не заменяет, а зовёт.
- **Не публикует от имени человека.** Тело изменения ставит конвейер, из
  облачного окна такие записи не делаются
  ([131](../../../rules/ru/131-no-writes-from-a-cloud-session.md)).
- **Не разбирает и не выбирает меру** — это
  [`/incident-triage`](../incident-triage/SKILL.md) и
  [`/incident-mitigation`](../incident-mitigation/SKILL.md).
- **Не обещает сроков** без источника.

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.