Skip to content
Back to skills

Audit

ASecurity

Аудит обвязки — проверка её устройства чтением. Доктрина, обоснования, справочники, посадка, скиллы и код инструмента читаются дословно, по областям, и называются логические дыры, противоречия, дубли, устаревшие механизмы и то, что держится одной прозой, хотя могла бы держать машина. В проекте тем же порядком читается его документация. Дорогой и редкий; заканчивается отчётом и ожиданием решения, а не правками. Вызывать по «аудит обвязки», «прочитай обвязку на связность», «пройди по докам».

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 19, 2026
ai-agentsgit

Security analysis

A100/100

Scanned November 11, 2026

npx -y skills add Igor-lx/claudeHarness --skill audit --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Audit?

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

Security grade badge for Audit
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/igor-lx-audit/badge)](https://www.skillsdirectory.com/skills/igor-lx-audit)

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: audit
description: Аудит обвязки — проверка её устройства чтением. Доктрина, обоснования, справочники, посадка, скиллы и код инструмента читаются дословно, по областям, и называются логические дыры, противоречия, дубли, устаревшие механизмы и то, что держится одной прозой, хотя могла бы держать машина. В проекте тем же порядком читается его документация. Дорогой и редкий; заканчивается отчётом и ожиданием решения, а не правками. Вызывать по «аудит обвязки», «прочитай обвязку на связность», «пройди по докам».
user-invocable: true
---

# Аудит обвязки: правильно ли она устроена

Обвязку проверяют четыре инструмента, и у каждого свой вопрос:

| Инструмент | Вопрос |
| --- | --- |
| режим `falsify` | ловит ли каждая машинная сверка свой предмет |
| скилл `probe` | справляется ли обвязка как процесс с живой задачей, и чем это удержано |
| скилл `bar-probe` | находит ли свод по планке дефект в коде |
| этот скилл | правильно ли обвязка устроена |

Аудит **читает и рассуждает**, остальные три ломают и смотрят. Чтение не
говорит, держится ли правило на деле, — это меряет `probe`. Слом не говорит,
верно ли правило задумано, — это находит аудит. Поэтому они кормят друг
друга, а не заменяют.

## Заканчивается отчётом, а не правками

Находка аудита — недостающее, лишнее или противоречивое правило, а правка
доктрины — развилка разработчика (`loop.md`, раздел «Найденное чинится сразу,
в том же заходе»). Аудит кладёт перед ним выбор с ценой, а не ставит перед
фактом.

Исключение одно: находка обычного класса — битый адрес, застывшее число,
опечатка, мёртвая отсылка — чинится сразу и называется в отчёте отдельно.

## Два корпуса

| Корпус | Где читают | Что в нём |
| --- | --- | --- |
| **обвязка** | в мастерской — репозитории, откуда обвязку раздают | доктрина и обоснования, справочники инструмента, посадка с семенами и заметками, скиллы, состояние обвязки, код инструмента |
| **документация проекта** | в проекте | документы о продукте: устройство слоёв, решения, настройки, витрина, README рядом с кодом |

Доктрина одна на все проекты, и читать её в каждом проекте значит повторять
работу мастерской. В проекте аудит читает только его документацию: смысл
документа не видит ни одна сверка, и это чтение — единственная его проверка.

## Области: корпус читается частями

Корпус обвязки в один контекст не помещается: проза — около `849 000`
знаков, код инструмента — около `1 890 000` (замер `2026-10-07`). Поэтому
проход берёт **одну область** и читает её целиком и дословно:

1. доктрина, которую среда кладёт каждой сессии, — файлы `.claude/rules/`
   без шапки `paths:`;
2. доктрина по поводу — файлы `.claude/rules/` с шапкой `paths:`; состав и
   повод каждого — `entry.md`, раздел «Правила, которые не зависят от
   проекта»;
3. обоснования — `.claude/rationale/`;
4. посадка — `.claude/seat/`: инструкция, карта, семена, заметки;
5. справочники инструмента — `.claude/tools/graph.md` и
   `.claude/tools/checks.md`;
6. скиллы и состояние — `.claude/skills/`, `.claude/state/`;
7. код инструмента — по сверке: её код, её строка в `checks.md` и её рецепт
   в `falsify.json`; по режиму: его код и его раздел в `graph.md`.

Документация проекта делится по папке документов.

**Какую область брать — решает история.** Пройденная область помечается
последней строкой коммита, которым проход закрыт:

```
Audit-pass: <номер области>; находок: <число>
```

Первыми берутся области, ни разу не пройденные, затем те, что правились
после своего прохода:

```
git log --grep="^Audit-pass:" --format="%cs %h %(trailers:key=Audit-pass,valueonly)"
git log --oneline <коммит прохода>..HEAD -- <папка области>
```

Проход без находок коммита не оставляет, и область считается от последнего
прохода с находками — окно выходит шире нужного, в безопасную сторону.

## Порядок прохода

1. **Прочитать, что уже решено.** Обоснование области — там отклонённые
   варианты; отложенное и открытые вопросы обвязки, в `.claude/state/`; в
   проекте — `02-todo.md`, `09-decisions.md`, `13-questions.md` базы.
   Отклонённое заново не предлагается, если не появилось нового довода — и
   тогда он назван.
2. **Прочитать область целиком и дословно.** Код — вместе с прозой, которая
   его описывает. Не по адресу и не выборочно: дыры этого рода видны при
   сопоставлении разных мест между собой.
3. **Пройти признаки** — оба списка ниже, по каждому файлу области, и четыре
   вопроса — к каждому механизму области.
4. **Держать дисциплину вывода.** Утверждение опирается на якорь — путь и
   строку; без якоря это гипотеза и называется гипотезой. Прежде чем назвать
   противоречие, искать, не разрешено ли оно в другом месте свода. Связный
   вывод на непроверенной посылке проверкой не является.
5. **Отчёт** — раздел ниже.

## Признаки: что ищется в обвязке

- **правило без крючка** — объявлено обязательным, но не входит ни в один
  исполняемый список, ни в форму отчёта, ни в вывод инструмента;
- **крючок без правила** — вывод инструмента, графа отчёта или шаг списка
  требуют того, чего в правилах уже нет или что переформулировали;
- **держится одной прозой, хотя могла бы машина** — признак виден в тексте
  (форма, имя, адрес, число, связь двух файлов), а держит его внимание.
  Предложение — сверка с рецептом; вход — матрица `bar-hold` и записи
  «Держится: вниманием»;
- **код расходится со своим описанием** — сверка или режим делает не то, что
  о нём сказано в `checks.md` или `graph.md`; комментарий описывает прежнее
  поведение;
- **правило против машины** — доктрина требует одного, а сверка, посадка или
  инструмент — другого. Вторая сторона не текст, поэтому её спрашивают у
  прогона;
- **два места об одном** — дословный или смысловой дубль, который разойдётся
  при первой правке одной из копий;
- **противоречие** — два правила требуют разного, и выбор оставлен читателю;
- **неисполнимость** — по формулировке нельзя сказать, выполнено ли правило;
- **устаревший механизм** — правило описывает то, как было устроено раньше;
- **проверка сужена по источнику, а причина её про цель** — исключение
  завели под ложное срабатывание одного источника, и с ним выпали все прочие;
- **мёртвая отсылка прозой** — ссылка без адреса, которую сверка не разбирает:
  «как сказано выше», имя режима или раздела, которого больше нет;
- **форма записи без опознания близких форм** — инструмент читает один
  точный образец, а запись, отличающаяся знаком («## Вопрос 5: …» вместо
  «## Вопрос 5. …»), не читается и не краснит: прогон при этом нулевой;
- **путь сравнивается подстрокой** — «../../CLAUDE.md» содержит
  «../CLAUDE.md», но ведёт выше корня; сравнение обязано разбирать путь;
- **корпус сверки уже слов правила** — правило говорит «в прозе свода», а
  сверка читает часть свода (записи базы и правила проекта, но не доктрину);
  например, конфиг корня с комментарием под решёткой вне сверок комментариев;
- **корпус посчитан по другому предмету** — сверка печатает «осмотрено N» по
  одному множеству, а проверяет другое; проверяемого нет — «осмотрено ноль» не
  встаёт;
- **сверка читает форму записи, которой база больше не пишет** — корпус ноль у
  каждого проекта с нынешней формой;
- **одно опознание размножено по местам** — каждое место со своим словарём и
  своей неполнотой форм;
- **файл машины прочитан без проверки формы** — разбор прошёл, а значение не
  той формы роняет читателя либо переписывается;
- **находка без адреса строки** — два упоминания дают две одинаковые строки;
- **утверждение о пустоте, верное до первой записи** — семя говорит «нет ни
  одного», и это устаревает без признака;
- **находка по семени не называет его семенем** — после обновления обвязки
  семя прежней редакции читается как работа проекта;
- **режим не опознаёт свою площадку** — режим, рассчитанный на особое
  окружение, вызванный вне его, печатает претензию на каждый предмет вместо
  одного отказа;
- **образец в коде — ограде либо блоке с отступом — читается как запись** —
  сверка или сводка берёт показанную форму («TODO», «42 файла», «Держится:
  ничем») за настоящую и краснит там, где форму лишь показывают; прочая проза
  корпуса при этом ограды пропускает;
- **имя сверки в прозе не сверяется** — после переименования сверки слова о
  ней с прежним именем остаются в тексте и отсылают к сверке, которой под этим
  именем нет;
- **открытая ограда прячет хвост файла** — читатели прозы пропускают ограды
  кода, и незакрытая длится до конца файла: всё ниже неё выпадает из сверок;
- **шапка скилла сверена не вся** — окружение подбирает скилл по `description`,
  а сверка читает `name` и признак вызова и молчит о пустом описании;
- **значение, заданное полем настройки, повторено литералом в другом файле**
  — правилах, семени, скилле;
- **термин в двух смыслах** — одно слово означает разное в разных местах;
- **цена чтения не по моменту** — доктрина, которую читает каждая сессия,
  держит то, что нужно только по поводу; кандидат в обоснование или в
  справочник;
- **правило, которого нет** — шаг, который делают всегда, но нигде не записан;
- **храповик держит только сверху** — объявленное число долга не даёт расти,
  а сжатия следом за починкой никто не спрашивает: предмет починен, число
  стоит прежним;
- **починен пример, а не класс** — одно место приведено, а соседние того же
  рода стоят как были: другой сценарий, другой файл, другой ключ;
- **файл есть, а не той формы — читается как отсутствующий** — разбор упал
  либо вернул не объект, и дальше идёт ветка «файла нет» с чужой причиной;
- **сбой посреди работы мимо отката** — откат ловит только ожидаемые отказы,
  а неожиданное исключение оставляет сделанное наполовину;
- **опознание по признакам, которые не смотрят в предмет** — решение
  «удалить как своё» стоит на подписи файла, а не на его содержимом.

У скилла свои классы дыр, потому что скилл — порядок действий, а не свод
утверждений:

- противоречие внутри скилла — норма требует того, чего не даёт его же
  порядок шагов;
- шаг неисполним в записанном виде — команда делает не то, что о ней сказано,
  или нужного предмета на этом шаге ещё нет;
- второй режим скилла наследует правило без упоминания;
- параметр вызова без описанного исхода;
- стоп-условие не покрывает реальную ситуацию;
- шапка обещает не то, что делает тело: по шапке скилл выбирают, и
  расхождение уводит его на чужую задачу.

**Четыре вопроса к каждому механизму** — сверке, правилу, шагу, форме записи:

- что он говорит, когда его предмет исчез;
- что он говорит, когда носителей свойства стало два;
- по какому признаку сужен его корпус, и совпадает ли этот признак с
  причиной, ради которой механизм заведён;
- чем держится он сам и когда в последний раз срабатывал.

## Признаки: что ищется в документации проекта

- **противоречие двух документов** — об одном предмете сказано разное;
- **устаревший механизм** — описано то, как было устроено раньше;
- **пересказ кода вместо «почему»** — абзац получается чтением файла;
- **термин в двух смыслах** — одно слово означает разное в разных документах;
- **решение, отменённое другим решением** — текст читается как действующий;
- **обещание шире предмета** — документ объявляет полный перечень или
  гарантию, которых не даёт;
- **возможность без строки в витрине** — и обратное: витрина обещает
  несуществующее;
- **документ, которого нет в указателе**;
- **README, обещающий не то, что делает папка**.

Источник истины — код: расхождение «код — документ» означает дефект документа.

## Список признаков растёт

Класс, найденный где угодно — пробой, пробой планки, ревью, случайным
чтением, — дописывается в списки выше **тем же заходом**. Иначе аудит ищет
вчерашние классы.

## Обмен с `probe` и `bar-probe`

- **Логическая дыра, найденная здесь, уходит в следующий прогон проб
  отдельной пробой**: чтение показывает, что правило висит, а держится ли оно
  чем-нибудь на деле, показывает только слом.
- **Проба, удержанная одним вниманием, приходит сюда**: её класс — кандидат в
  признак «держится одной прозой, хотя могла бы машина».
- **Критерий, который `bar-probe` пропускает**, читается здесь: его
  формулировка, его держатели, его вопросы модели.

## Отчёт

- область, коммит, на котором её читали, и что из неё не прочитано;
- находки — по каждой: класс, адрес, что не так, чем грозит, предложение и
  его цена, включая то, что оно добавит к обязательному чтению;
- исход по каждой — прямым утверждением: **исправлено** (только для находок
  обычного класса); **вопрос разработчику** — с записью в список вопросов
  (`.claude/state/questions.md`, в проекте — `13-questions.md`), чтобы
  находка пережила сессию; **отклонено** — с причиной;
- прямой вопрос о составе работ — и ожидание ответа.

После ответа работа идёт по обычным правилам. Отклонённое разработчиком
ложится в обоснование того правила, которого касалось, — там его найдёт
следующий проход на шаге 1.

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.

View all in ai-agents →

Comments

Loading comments…

Newsletter

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