Rigor Dial - ручка громкости для критичности AI-ассистента

Что такое Rigor Dial?

Rigor Dial — это slash-skill для Claude Code, который управляет степенью критичности AI-ассистента по шкале от 0 (молчаливый исполнитель) до 10 (оспаривает каждое решение). Позволяет переключаться между режимом быстрого выполнения и режимом devil's advocate без загрузки отдельных промптов.

TL;DR

  • -/rigor — slash-skill со шкалой 0–10: 0 = молчаливый исполнитель, 10 = оспаривает каждое решение
  • -На уровне 0 Claude просто пишет код. На уровне 10 — сначала допрашивает по бизнес-логике
  • -AI-ассистенты по умолчанию сикофантичны — выполняют, а не оспаривают, даже плохие архитектурные решения
  • -Skill — один markdown-файл, который инжектит правила поведения в контекст Claude без системных хаков
  • -Установка занимает 30 секунд: git clone + симлинк в ~/.claude/skills/

Claude Code работает в одном режиме. Задаёшь вопрос - получаешь ответ. Просишь написать код - пишет. Иногда задаёт уточняющий вопрос, иногда нет. Настроить степень критичности нельзя.

Исправление опечатки в README и проектирование нового сервиса с платёжной интеграцией - для Claude это одинаковые задачи. Он ведёт себя где-то посередине между «делаю молча» и «давай обсудим». Для простых задач слишком много вопросов. Для сложных - слишком мало.

Проблема одного режима

AI-ассистенты склонны к sycophancy - соглашательству. Модель скорее выполнит запрос, чем оспорит его. На Reddit регулярно всплывают треды вроде «Claude gives performative pushback on trivial decisions but agrees with actually bad architecture».

Решения есть - devil’s advocate команды для конкретных сценариев. /devils-advocate для code review перед PR. Adversarial reasoning protocol для архитектурных решений. Но всё это одноразовые штуки: включил, получил критику, выключил.

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

Rigor Dial: шкала от 0 до 10

/rigor - slash-skill для Claude Code. Один параметр: число от 0 до 10.

УровеньНазваниеПоведение
0BroНоль вопросов. Делает что просят. «Готово.» - валидный ответ
1–2ChillПредупреждает только если код сломает прод прямо сейчас
3–4GentleМягко предлагает альтернативы, упоминает трейдоффы
5BalancedСтандартный режим - баланс скорости и качества
6–7CriticalЧелленджит архитектуру, требует обоснования
8–9ParanoidEdge cases, worst-case сценарии, «какой план отката?»
10Dushnila«Зачем мы вообще это делаем? Покажи данные.»

Десятый уровень - «душнила». Тот человек в команде, который не пропустит ни одно решение без обоснования. Иногда раздражает. Иногда спасает от дорогих ошибок.

Один промпт, три уровня

Задача: «Давай добавим Redis для кэширования ответов AI-чата».

/rigor 0

Добавляю Redis-клиент и middleware для кэширования в ai-chat-send-message. Готово.

/rigor 5

Пара вопросов перед реализацией:

  • Какой TTL для кэша? AI-ответы зависят от контекста разговора - одинаковые промпты с разной историей дают разные ответы.
  • Redis managed (Upstash?) или self-hosted? Сейчас Redis нет в стеке - это новая инфраструктура.

/rigor 10

Стоп. Несколько вопросов:

  1. Какую метрику улучшаем? Latency? Cost? Сколько стоят AI-вызовы сейчас, какой процент запросов потенциально кэшируемый?
  2. Cache hit rate будет околонулевой. Чат - контекстуальный диалог. Два одинаковых сообщения с разной историей = разные ответы.
  3. Redis - +$30/месяц, новый сервис в мониторинге, новая точка отказа. Кто дежурит когда он ляжет в 3 часа ночи?
  4. Альтернативы без новой инфры: Anthropic prompt caching (встроено в API), response streaming для perceived latency.
  5. Юзеры вообще жалуются на скорость чата? Есть данные из аналитики? Или оптимизируем то, что не болит?

Та же задача. Те же знания у ассистента. Разница только в том, насколько агрессивно он ставит решения под сомнение.

Как это работает

Технически /rigor - markdown-файл с описанием поведения для каждого уровня. При вызове /rigor 7 Claude Code инжектит инструкции в контекст разговора. Модель получает правила: задавай уточняющие вопросы, челленджи архитектуру, требуй обоснования.

Никаких system prompt хаков, fine-tuning или сложной инфраструктуры. Один файл. Работает потому, что Claude хорошо следует поведенческим инструкциям - особенно когда они конкретные и структурированные.

Уровень влияет на как Claude коммуницирует, а не на что он знает. На нулевом уровне код будет таким же корректным - просто без вопросов. На десятом - тот же код, но только после допроса.

# Установка — 30 секунд
git clone https://github.com/spyrae/rigor-dushno.git ~/.claude/rigor-dushno
ln -s ~/.claude/rigor-dushno/skills/rigor ~/.claude/skills/rigor

# Использование
/rigor 0    # для тайпо-фиксов
/rigor 5    # для обычных фич
/rigor 10   # для архитектурных решений

Когда какой уровень

0–2 - механика. Переименовать переменную, поправить конфиг, обновить зависимость. Вопросы тут только мешают.

3–5 - стандартная разработка. Новый виджет, рефакторинг метода, тест. Claude упоминает трейдоффы, но не блокирует работу.

6–7 - фичи с неочевидной архитектурой. API-дизайн, изменения в auth-потоке, новые data models. Нужен кто-то, кто спросит «а ты подумал про edge case X?».

8–10 - решения, которые дорого откатывать. Выбор базы данных, структура платёжного флоу, изменение auth-архитектуры. Лучше потратить 10 минут на обоснование, чем неделю на откат.

Ограничения

Контекст не бесконечный. Инструкции скилла занимают ~800 токенов в контекстном окне. Для большинства задач незаметно, но в длинных сессиях с большой кодовой базой каждый токен на счету.

Уровень не сохраняется между сессиями. Новый разговор - дефолтное поведение. Нужно вызывать /rigor заново. Обходной путь - прописать уровень в CLAUDE.md проекта, тогда он станет дефолтным.

Субъективность шкалы. Разница между уровнями 6 и 7 не всегда очевидна. Модель интерпретирует инструкции, а не выполняет алгоритм. Иногда на уровне 8 Claude задаст вопрос, который ближе к шестёрке. Это гайдлайн, не тумблер.

Не заменяет code review. Даже на десятке Claude не видит проект так, как коллега, который полгода в кодовой базе. Это self-check, не замена человеку.

Зачем вообще регулировать пушбэк

Стоимость ошибки зависит от контекста. Тайпо в README - ноль. Архитектура платёжного сервиса - недели переделок.

AI-ассистент с одинаковой критичностью ко всему либо тормозит простые задачи лишними вопросами, либо пропускает сложные без проверки. /rigor убирает friction на мелочах и добавляет scrutiny на важном.

Вообще, devil’s advocate по расписанию - это привычка. Но привычки, превращённые в процесс, масштабируются лучше добрых намерений.


Исходники: github.com/spyrae/rigor-dushno. Есть /dushno - русскоязычный вариант для полного погружения.

FAQ

Сохраняется ли уровень, если перезапустить сессию Claude Code в середине задачи?

Нет — каждый новый разговор сбрасывается до поведения по умолчанию. Обходной путь: прописать нужный уровень в CLAUDE.md проекта, тогда он будет применяться автоматически без ручного вызова /rigor. Для длинных задач, разбитых на несколько сессий, команды обычно фиксируют активный уровень в описании задачи.

На уровне 10 Claude отказывается писать код, пока не получит ответы на все вопросы?

Уровень 10 включает режим допроса, но Claude всё равно выполнит задачу, если ответить «просто сделай это». Уровень управляет порогом для пушбэка, а не самим фактом выполнения. На практике достаточно краткого «мы это обдумали, двигаемся дальше» — ценность в том, что это подтверждение приходится проговорить явно, прежде чем приступать к дорогостоящим решениям.

Высокий уровень строгости заметно увеличивает расход токенов?

Да, но рост ограничен. Инструкции скилла занимают около 800 токенов за сессию вне зависимости от уровня. На уровнях 8–10 модель генерирует больше текста на каждый ответ (уточняющие вопросы, альтернативные предложения), что может добавить 500–1 500 токенов на взаимодействие. В длинных сессиях с большой кодовой базой это заметно, но для большинства задач расход пренебрежимо мал по сравнению с тем, сколько токенов занимает сам контекст проекта.