Skip to content
Back to skills

Answer A Rule

ASecurity

Звать, когда проект отвечает каталогу Engineering-Incidents-Playbook по правилу — пишет или правит запись в `.rules/bindings.json`: разбирает задачу-«входящие», подключается впервые, перечитывает ответы после подъёма номера контракта. До того, как запись уйдёт в изменение.

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

Security analysis

A100/100

Scanned September 25, 2026

npx -y skills add ArtVsMark/Engineering-Incidents-Playbook --skill answer-a-rule --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Answer A Rule?

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

Security grade badge for Answer A Rule
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/artvsmark-answer-a-rule/badge)](https://www.skillsdirectory.com/skills/artvsmark-answer-a-rule)

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: answer-a-rule
description: >-
  Звать, когда проект отвечает каталогу Engineering-Incidents-Playbook по
  правилу — пишет или правит запись в `.rules/bindings.json`: разбирает
  задачу-«входящие», подключается впервые, перечитывает ответы после подъёма
  номера контракта. До того, как запись уйдёт в изменение.
argument-hint: "[номер правила или «входящие»]"
---

# Ответ каталогу по одному правилу

> **Читатель:** агент — окно проекта-потребителя, которое пишет или правит запись в `.rules/bindings.json`.

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

Ответ проекта читает машина: сводка «где действует», доля машинного
соблюдения, долг семьи проектов. Ошибка в записи поэтому не остаётся у
проекта — она сдвигает числа у всех, кто их читает. Каждая ошибка ниже
замерена, а не предположена
([контракт потребления](https://github.com/ArtVsMark/Engineering-Incidents-Playbook/blob/main/export/README.md),
[`VERSIONING.md`](https://github.com/ArtVsMark/Engineering-Incidents-Playbook/blob/main/docs/VERSIONING.md)).

- **Одно слово на три механизма.** Из 44 записей со словом `process-step` три
  указывали на конвейер, четырнадцать — на документ, а двадцать семь не
  указывали ни на что, кроме прозы, то есть означали `none`.
- **Проза вместо адреса.** Семь ответов «держится гейтом» оказались
  утверждениями обо ВСЕХ скриптах сразу, которых не проверял ни один гейт.
  Один из семи вскрыл живой пробел: правило обещало ручную кнопку у каждой
  работы, а у одной её не было.
- **Документ одним словом.** У одного проекта `document` держал 30 правил
  против 25 у `gate`, и доля машинного соблюдения — 181 из 656 по семье —
  считалась со знаменателем, где «законно документом» и «пока документом»
  сложены в одно число.
- **Номер по памяти.** Прозой в ответе стояло «выгрузка правил каталога — 1.2» при
  живой 1.5: отставание на три подъёма, невидимое обеим сторонам.

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

**0. Прочитать правило целиком, а не заголовок.** Раздел «Применимость»
(«Where it applies») решает между `active` и `not-applicable`: правило,
подходящее по заголовку, может прямо не работать в вашем случае.

**1. Статус — один вопрос: есть ли у проекта предмет правила.**

| Статус | Когда | Что рядом |
|---|---|---|
| `not-applicable` | предмета нет | `why`: чем проект отличается |
| `rejected` | предмет есть, решение иное | `why`: какое решение и почему |
| `active` | предмет есть, правило действует | механизм, шаг 2 |
| `unreviewed` | ещё не смотрели | ничего |

`unreviewed` не склеивается с первыми двумя: «не смотрели» — ровно та потеря,
ради различения которой контракт и заведён.

**2. Механизм — по вопросу «что случится, если правило нарушить».** Берётся
сильнейшее из того, что держит правило.

| Механизм | Нарушение |
|---|---|
| `gate` | отвергается до слияния |
| `pipeline` | замечается прогоном, но слияние не держит |
| `skill` | навык агента напомнит в момент вызова, если его позовут |
| `document` | заметит человек, если читал |
| `none` | не заметит ничто |

Слово `process-step` не пишется: оно принимается на входе, но в отчётах не
сводится ни к одному из пяти.

**3. `where` — адрес, который открывается.** Путь к файлу с расширением,
образец вида `.github/workflows/*.yml` или корневой документ по имени. Проза
рядом — пожалуйста, вместо адреса — нет. Проверка: открыть адрес в своём
дереве. Если адрес не называется, механизм, скорее всего, не тот, и честнее
спуститься ступенью ниже, чем описать гейт словами.

**4. Навык — полем `skill`, адресом:** `.claude/skills/<имя>` — навык в
своём дереве, `catalogue:<имя>` — навык этого плагина, так же, как он зовётся
(контракт ответа с 1.7). При `mechanism: skill` поле обязательно; рядом с
`gate` или `pipeline` — когда навык держит вторую половину, которую гейт не
берёт; при `none` запрещено.

**5. Механизм не краснеет (`document`, `skill`, `none`) — ответить,
можно ли держать машиной,** полем `holdable` с причиной в `why`:

- `no` — машинной половины нет вовсе, текст и есть предел;
- `not-yet` — половина есть и не построена: это долг, и он так и считается;
- `conditional` — станет возможна, когда появится предмет; `awaiting` называет
  событие и замер того, что предмета сегодня нет;
- `refused` — половина есть, замерена в `machine_half`, сигнал сперва понизили
  до предупреждения — и отказались и от него
  ([213](https://github.com/ArtVsMark/Engineering-Incidents-Playbook/blob/main/rules/ru/213-a-refusal-measured-and-chosen-is-not-a-debt.md)).

При `mechanism: none` рядом ещё `machine_half`: ЧТО из требования следует из
данных целиком и почему оно всё-таки не построено. «Машинно нельзя» одним
препятствием на всё требование — признак, что его не разбирали надвое
([182](https://github.com/ArtVsMark/Engineering-Incidents-Playbook/blob/main/rules/ru/182-an-unmechanisable-answer-is-split-in-two.md)).

**6. Даты — две, и они про разное.** `analysed` — день, когда запись сверили с
деревом; `decided` — день, когда вынесен нынешний вердикт. Перечитали и
подтвердили — двигается только `analysed`. `decided` не бывает позже
`analysed`: решают, посмотрев.

**7. Номера — из выгрузки, а не по памяти.** `schema` ответа — номер контракта
ответа, который вы читаете (`contracts.bindings` в `export/rules.json`
каталога), `answers_to` — номер выгрузки (`contracts.export`). Сдвинулся номер
— перечитать ответы и назвать в теле изменения, сколько записей перечитано и
сколько изменено
([157](https://github.com/ArtVsMark/Engineering-Incidents-Playbook/blob/main/rules/ru/157-a-contract-version-bump-is-a-re-read.md)).

**8. Прогнать свою проверку ответа**, если она есть, и только после неё
отправлять изменение.

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

- **Не краснеет.** Он не отвергает запись и не останавливает слияние; форму
  ответа держит гейт — ваш или действие каталога, а навык задаёт вопросы,
  которых гейт не задаст.
- **Не решает за проект.** `active` или `rejected` — решение проекта; навык
  спрашивает, что за ним стоит, а не выбирает.
- **Не проверяет чужой механизм.** «Держится гейтом» — утверждение проекта, и
  отвечает за него его конвейер: каталог чужого дерева не видит.
- **Не заполняет задним числом.** `holdable` и `machine_half` спрашиваются у
  записей новых и тронутых; разом по всем старым их начнут проставлять
  формально.

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.