unlazy — навык для ИИ-агентов, которым поручают большую работу над проектом: он предлагает заранее записать, что считать готовым результатом, а затем проверить это командами. Если агент исправил один файл, но забыл про тесты, миграции или соседний модуль, unlazy помогает обнаружить незавершённую часть до отчёта «готово». Это не отдельная нейросеть и не замена проверке кода человеком.
Как unlazy превращает задачу в проверяемые шаги
Основа навыка — метод Depth Tree, или «дерево глубины». Агент делит большую задачу на более мелкие ветви, назначает каждой ожидаемый результат и возвращается к проверке после выполнения. Такой подход рассчитан на работу, где одного ответа в чате мало: например, когда нужно изменить несколько частей проекта и убедиться, что они согласованы.
Проверки записываются в файл GATES.md. В README их называют gates — «ворота»: через них задача проходит только при выполнении заданного условия. Для автоматической проверки вы указываете команду в строке CHECK: и ожидаемый текст в EXPECT:. Успех означает, что команда завершилась с кодом 0 и её вывод совпал с указанным ожиданием. Строка EVIDENCE: хранит свидетельство проверки; для проверок, которые нельзя автоматизировать, можно оставить человеческое свидетельство.
Команды проверяет скрипт gate-check.mjs. Режим —status показывает состояние без запуска команд, —approve подтверждает просмотренные проверки и запускает их, а —reverify повторно выполняет все запускаемые проверки, включая уже отмеченные готовыми. Это важно после новых правок: старая отметка об успехе не доказывает, что текущая версия проекта всё ещё работает. Если проверку пришлось оставить невыполненной, инструмент отмечает передачу задачи человеку, а не засчитывает успех.
Для задач с несколькими исполнителями unlazy предлагает хранить план и проверки в отдельной папке .unlazy/
Когда навык пригодится в Claude Code, а когда добавит лишнюю работу
Представьте, что вы ведёте проект в Claude Code и просите изменить платёжный модуль вместе с миграциями. Вместо расплывчатого «проверь всё» вы получите план с отдельными результатами и командами проверки. Другой сценарий — рефакторинг, где один агент меняет API, а другой работает с независимой частью проекта: unlazy описывает, кому принадлежат файлы и когда можно передать следующую задачу.
Ещё один случай — вайб-кодинг с длинной цепочкой изменений. Когда агент уже написал «готово», вы можете потребовать повторного запуска проверок, а не полагаться на прежний вывод или уверенный ответ. Навык не определяет качество проверки сам: если CHECK: запускает бесполезную команду, зелёный результат ничего не скажет о нужном поведении программы.
Если вы просите нейросеть кратко объяснить термин, переписать абзац или выполнить другую небольшую задачу без файлов и тестов, unlazy вам, скорее всего, не нужен. Он добавляет план, критерии и процедуру подтверждения — это работа, которая окупается только тогда, когда есть что проверять. Среди навыков для Claude и других агентов его отличает именно проверка завершённости, а не новая база знаний.
Установка навыка и первый запуск проверки
README предлагает установить навык через skills CLI для поддерживаемых агентов:
npx skills add Leonxlnx/unlazy
Флаг -g предназначен для установки на уровне пользователя, --all — для всех обнаруженных агентов. Если устанавливаете вручную, склонируйте репозиторий в соответствующую папку:
Claude Code: ~/.claude/skills/unlazy
Codex CLI: ~/.codex/skills/unlazy
В среде с поддержкой slash-навыков вызовите /unlazy, в Codex — $unlazy. README также допускает запуск по естественной формулировке запроса из описания навыка. Основные инструкции находятся в SKILL.md. Для скрипта проверки и необязательного хука нужен Node 16 или новее; сторонних пакетов для их выполнения README не указывает.
Для одиночной задачи скопируйте шаблон templates/gates-leaf.md в GATES.md и замените все заполнители своими критериями. Сначала посмотрите состояние без исполнения команд:
node <path-to-skill>/scripts/gate-check.mjs --status GATES.md
Подставьте вместо <path-to-skill> путь к установленному навыку. При первом обычном запуске для команды без точной записи об одобрении скрипт показывает разрешённую команду, ожидание, рабочую папку, оболочку и PATH, но не исполняет проверку. После одобрения обычный режим уже может выполнять её, поэтому считайте гарантированно неисполняющим только —status.
node <path-to-skill>/scripts/gate-check.mjs GATES.md
node <path-to-skill>/scripts/gate-check.mjs --approve GATES.md
node <path-to-skill>/scripts/gate-check.mjs --reverify GATES.md
Необязательный Stop hook для Claude Code может блокировать завершение ответа, пока проверки не выполнены или параллельная работа не закончена. Он сам команды не запускает. Устанавливайте его только с согласия владельца проекта:
node <path-to-skill>/scripts/install-hooks.mjs
node <path-to-skill>/scripts/install-hooks.mjs --uninstall
По умолчанию установщик пишет настройки в .claude/settings.local.json. README просит исключить этот файл, .unlazy/ и .unlazy-hook-state.json из файлов, отправляемых в репозиторий.
Три примера из README: запрос, критерии и повторная проверка
Первый пример — прямая постановка большой задачи агенту:
/unlazy tree 5 refactor the payment module and verify every migration path
Здесь вы просите переработать платёжный модуль и проверить каждый путь миграции, используя дерево с глубиной 5. Это инструкция агенту о способе работы, а не обещание, что пять уровней автоматически улучшат код. Проверять содержимое плана и реальные результаты всё равно придётся по критериям задачи.
Второй пример — критерии для расчёта цен и оформления покупки. README показывает такой фрагмент GATES.md:
# Gates: pricing behavior
- [ ] G1: pricing fixtures render the expected tiers
CHECK: node scripts/verify-pricing.mjs
EXPECT: pricing verification passed
EVIDENCE: pending
- [ ] G2: checkout integration succeeds from its package
CHECK: node scripts/verify-checkout.mjs
EXPECT: checkout verification passed
CWD: packages/checkout
EVIDENCE: pending
Вы задаёте две разные проверки: соответствие цен тестовым данным и успешную работу интеграции оформления покупки. Строка CWD: у второй проверки задаёт рабочую папку для команды. При успехе скрипт запишет свидетельство, связанное с определением проверки и её выводом; сами scripts/verify-pricing.mjs и scripts/verify-checkout.mjs в этом примере — скрипты проекта, а не встроенные функции unlazy.
Третий пример — повторная проверка после того, как агент вернул работу. Запустите команду —reverify из предыдущего раздела: она выполнит и те проверки, которые уже числились завершёнными. Вы получите новый результат вместо вывода «раньше проходило». README отдельно предупреждает: даже такое повторение подтверждает только те условия, которые действительно проверяют ваши команды.
Что проверить перед доступом unlazy к проекту
Строки CHECK: — это код оболочки. Перед —approve прочитайте каждую команду и вызываемый ею скрипт: проверки работают с обычным доступом процесса к файлам, переменным окружения, учётным данным и сети. Одобрение команды не создаёт изолированную среду. Если позже изменится вызываемый скрипт или зависимость, прежнее одобрение не означает, что их содержимое проверено заново.
У проекта лицензия MIT. Репозиторий создан 9 августа 2026 года; на момент обзора у него 4204 звезды, 329 форков, а последний коммит датирован 3 сентября 2026 года. Исходники ориентированы на версию 2.1.0, но README не называет её опубликованным тегированным релизом и советует закреплять точный коммит, если нужна неизменная установка.
Авторы ссылаются на исследования о неполных ответах и преждевременном завершении рассуждений моделей, но прямо пишут: эти работы не доказывают фиксированного прироста качества от unlazy. Практическая ценность навыка зависит от того, насколько точно вы сформулируете ожидаемый результат и насколько содержательными будут проверки.
Источник: репозиторий Leonxlnx/unlazy на GitHub.