Навык, который превращает кодинг-агента в аудитора: разведка, охота по реестру покрытия, состязательная валидация находок и отчёт, где каждая строка подтверждена источником. Смотрим, как это устроено внутри и что нужно, чтобы запустить у себя.
Коротко: security-audit — открытый навык (agent skill) от Cloudflare, который заставляет кодинг-агента проводить аудит безопасности по фиксированному процессу из шести фаз. Агент сначала картует архитектуру и границы доверия, потом охотится за уязвимостями по реестру покрытия, затем отдаёт каждую находку независимому проверяющему, и только подтверждённые записи попадают в отчёт. Репозиторий cloudflare/security-audit-skill — 55 642 звезды и 3 632 форка на 01.11.2026, лицензия MIT.
Agent skill — это папка с файлом SKILL.md и вспомогательными материалами, которую агент подгружает по триггеру. Спецификация описана на agentskills.io: frontmatter с именем и описанием, тело с инструкциями, при необходимости — дополнительные файлы, которые читаются только когда до них дошла работа. Для аудита безопасности такой формат оказался удобен тем, что процесс можно описать один раз и не пересказывать его в каждом промпте.
Внутри security-audit лежит не «промпт про безопасность», а регламент: что считать находкой, какие артефакты создаются на каждой фазе, кто и как проверяет кандидата, в каком виде выходит отчёт. Ключевая мысль авторов: кандидат без конкретного затронутого субъекта, ресурса или последствия для безопасности не является подтверждённой находкой. Это отсекает главную болезнь LLM-аудитов — правдоподобные, но пустые «уязвимости» из чек-листа.
Cloudflare не скрывает происхождение навыка: это публичная, урезанная до одного репозитория версия внутреннего harness, описанного в статье Build your own vulnerability harness. Внутри компании harness вырос в многостадийную систему для целого парка репозиториев; здесь — стартовая точка, которую можно поставить в любой агент.
Процесс линеен только на бумаге: фазы возвращаются назад, если проверяющий нашёл дыру в доказательстве. Ниже — что делает родительский агент, какой артефакт остаётся после фазы и чем эта фаза проверяется.
| Фаза | Артефакт | Чем проверяется |
|---|---|---|
| 1. Разведка | architecture.md, coverage-ledger.json | validate-coverage-ledger.cjs |
| 2. Охота | записи проверок по юнитам реестра | обновление ledger + тот же валидатор |
| 3. Валидация | кандидаты с попыткой опровержения | свежий verifier, не автор находки |
| 4. Выход | findings.json | validate-findings.cjs + report-schema.json |
| 5. Перепроверка | замены материальных claims | независимый агент на каждую замену |
| 6. Отчёт | REPORT.md и два приложения | derive из проверенных записей |
Обратите внимание на пятую фазу: она появилась не для красоты. Агент, который нашёл проблему, склонен её защищать — тот же эффект, что у человека. Поэтому материал проверяет другой агент, а материальные замены проходят ещё один независимый круг. Это состязательная валидация: задача проверяющего — не согласиться, а опровергнуть.
Установка идёт через Skills CLI. Команда ставит навык в выбранный агент; флаг --global делает установку пользовательской, без него навык привязан к проекту. Список поддерживаемых агентов и неинтерактивные флаги смотрите в npx skills --help — набор хостов меняется, поэтому конкретные имена лучше сверять на месте.
npx skills add https://github.com/cloudflare/security-audit-skill \ --skill security-audit
security audit this codebase
ls ~/security-audit-skill/my-project/run-1
Требования короткие, но жёсткие: агент с поддержкой инструментов и параллельных субагентов, Node.js для валидаторов и — главное — песочница, навязанная операционной системой, для запуска сборок, тестов, браузеров и фаззеров проверяемого проекта. Песочница обязана отключать внешнюю сеть, давать пустое окружение по белому списку, ограничивать CPU, память, процессы, размер файлов и время, а писать разрешать только в выделенный scratch-каталог.
Навык не стартует полный процесс на любой вопрос про безопасность. По умолчанию он работает в режиме guidance: отвечает по существу, при необходимости поднимает точечных агентов, но не создаёт каталог вывода и не пишет артефакты. Полный аудит включается только явной просьбой — «проведи аудит кодовой базы», «полный security review», «pentest» — либо когда пользователь просит именно файлы отчёта.
| Критерий | Guidance | Full audit |
|---|---|---|
| Когда включается | вопрос, разбор находки, методика | явный запрос аудита или пентеста |
| Фазы | только релевантные | все шесть |
| Каталог вывода | не создаётся | ~/security-audit-skill/… |
| Артефакты | нет | ledger, findings, отчёты |
| Повторные прогоны | не ведутся | дополняют прошлые |
Отдельно стоит правило про повторные запуски. Несколько прогонов по одному репозиторию складываются: навык читает прежние ledger и findings, целится в пробелы, перепроверяет изменившийся код и переносит актуальные доказательства. Устаревшая или незакрытая работа при этом не считается покрытой — иначе второй прогон лишь повторял бы первый.
Главный файл — findings.json. В нём три разных вердикта, и путать их нельзя: confirmed — полный след до источника и ограниченный наблюдаемый результат; needs_validation — точный нерешённый факт без оценки критичности; rejected — опровергнутый кандидат. Отчёт REPORT.md, детализация FINDINGS-DETAIL.md и список нерешённого NEEDS-VALIDATION.md выводятся из этих записей, а не пишутся отдельно — поэтому текст отчёта не может разойтись с данными.
Правила оценки тоже прописаны. Критичность считается как вероятность, умноженная на последствия, а не как отклонение от чек-листа. Пробел в эшелоне защиты не считается уязвимостью: если слой A атаку предотвращает, отсутствие слоя B — это заметка про усиление, а не находка. Такая дисциплина экономит время: отчёт не тонет в «рекомендациях», которые невозможно проверить.
Agent skills — самый быстрорастущий сегмент вокруг кодинг-агентов. По звёздам на GitHub видно, что это уже не эксперимент: у superpowers 310 244 звезды, у публичного репозитория навыков Anthropic — 186 033. security-audit с его 55 642 звёздами — узкий, но очень плотный представитель класса: не универсальный набор, а один процесс, доведённый до валидируемых артефактов.
Границы честно перечислены в самом навыке. Из обнаруженного: один прогон в тестах авторов находил примерно половину того, что находили несколько прогонов суммарно — то есть повторный запуск по тому же репозиторию полезен, а не избыточен. Дальше начинаются ограничения метода: без песочницы снижается глубина проверки, статический анализ не заменяет динамическую эксплуатацию, а решения об эксплуатационной критичности остаются за командой.