№121

13 ноября 2026

агенты · инструменты · бизнес

Чек-лист безопасности перед релизом одной командой в Claude Code

Перед выкладкой проекта Claude Code проверит его на утёкшие ключи, закоммиченный .env и CORS, открытый для любого сайта, а затем пройдёт чек-лист из 18 пунктов и вынесет вердикт по каждому.

2 мин чтения · бесплатно · 10–15 минут

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

Как повторить

  1. Скачайте репозиторий LenaWhynot/whynot-skills целиком или только папку pre-release/.
  2. Положите папку pre-release в ~/.claude/skills/. Для Codex путь другой: ~/.agents/skills/. Установки в один клик через каталог плагинов у этого навыка нет, папку копируют вручную.
  3. Откройте корень проекта в Claude Code и вызовите /pre-release.
  4. Агент запустит два скрипта. Их можно запустить и вручную:
bash "/путь/к/pre-release/detect_stack.sh"
bash "/путь/к/pre-release/scan_leaks.sh"

detect_stack.sh определяет фреймворк, базу данных и место деплоя. scan_leaks.sh ставит каждой находке красную, жёлтую или зелёную метку и в конце печатает строку SUMMARY: FAIL=X WARN=Y PASS=Z.

  1. Затем агент проходит checklist.md: приватность, RLS (правила доступа к строкам в базе), неудачные попытки входа, security-заголовки, OWASP, серверная валидация, rate limiting, CAPTCHA, CORS, вебхуки, миграции, откат. По вашей просьбе он сохранит отчёт в .pre-release-report.md. В коммит этот файл не добавляйте.
  2. Вердикты: PASS ставится, если критичные проверки пройдены и блокеров нет. FAIL означает найденный красный блокер. NEEDS REVIEW означает, что автоматически проверить пункт нельзя.

Как проверить результат

После вызова должны появиться два блока: вывод detect_stack.sh со строками frontend:, backend:, db/auth:, деплой: и вывод scan_leaks.sh с итоговой строкой SUMMARY. Если реальных утечек в проекте нет, вставьте заведомо ложный ключ вида sk-... в тестовый файл: скрипт должен отметить его красным. Если SUMMARY не печатается или скрипт падает молча, проверьте пути и права на файлы.

Как это устроено

Нижний слой состоит из bash-скриптов на grep. Они ищут префиксы ключей sk-, AKIA, ghp_, AIza (Anthropic/OpenAI, AWS, GitHub, Google), закоммиченный .env, CORS со звёздочкой и str(e) в ответе API, то есть текст серверной ошибки, который уходит пользователю. Скрипты ничего не решают сами: они печатают находку с файлом и строкой.

Верхний слой: чек-лист, который читает модель. Политику RLS в Supabase или поведение платёжного вебхука при повторной доставке события шаблоном не проверить, здесь нужно понимать код. Так модель тратит контекст только на пункты, где требуется суждение.

Ссылки

  • Папка pre-release в whynot-skills: навык целиком, включая SKILL.md, checklist.md, security-zones.md с разбором вебхуков и миграций и оба скрипта.

Источник: lena.whynot, Instagram.

Больше подобного

Разбираю по находке в день и складываю сюда. Свежее и то, что до сайта не доехало, выходит в канале «Евдокимов как обычно».