Мастер спецификации
Интерактивный мастер спецификации задачи — тонкий оркестратор над discovery и consilium, превращающий черновой бриф в структурированную спецификацию и граф-артефакт.
Что такое мастер
Мастер превращает линейную цепочку discovery → /dr-prd в управляемое интервью по одному вопросу за раз, которое оператор может ветвить, ставить на паузу и перескопировать. Он существует, чтобы устранить ситуацию «агент неверно понял замысел задачи», — PRD пишется совместно с оператором.
Это тонкий оркестратор: он композирует существующие скилы discovery (движок «один вопрос за раз») и consilium (панель по требованию), никогда не переписывая их промптинг, и сохраняет каждый шаг через детерминированный движок состояния.
Четыре возможности
- Вложенное углубление с автозахватом контекста. Оператор может уйти в сложный подвопрос в боковой ветке и вернуть вывод в основную ветку, не таская вручную идентификатор сессии. Состояние привязано к ID задачи; захваченный контекст — это сохранённый кадр углубления, содержащий ссылки на прежние ответы, а не копию; он разрешается при возврате, и вывод записывается как ответ на родительский вопрос.
- Consilium по требованию. Для сложного решения созывается панель через скилл
consilium, а вердикт фиксируется как узел-решение графа и ребро «resolves». - Перескопирование по ходу. Добавление или пересмотр требования, смена цели выставляют флаг «требуется переисследование» или «требуется перепланирование». В v1 само переисследование и перепланирование остаются за подтверждением оператора — отслеживание флагов без автозапуска.
- Эмиссия графа знаний и зависимостей. Концепты, требования и решения, всплывшие в интервью, эмитируются узлами и рёбрами графа в отдельный артефакт для приёмника графа.
Модель состояния
Состояние — это append-only журнал событий JSONL; текущее состояние есть проекция (свёртка) над событиями. Именно это делает интервью возобновляемым и ветвимым:
- Возобновление — воспроизведение журнала; повторный запуск
/dr-wizardпродолжает, а не начинает заново. - Ветвление — производный стек углублений (push / pop) плюс родительские ссылки.
- Идемпотентность — при проекции побеждает последнее событие для каждого идентификатора вопроса.
- Каждое событие несёт версию схемы и монотонный порядковый номер.
- Терминальное событие «finalized» закрывает интервью; открытые кадры углубления снимаются как заброшенные.
/dr-prdпотребляет только финализированный артефакт — незавершённое интервью никогда не авторитетно.
Файлы лежат в gitignore-дереве рантайма: datarim/wizard/{TASK-ID}.wizard.jsonl содержит журнал событий интервью (виды: meta, вопрос, ответ, вход в углубление, выход из углубления, флаг, финализация).
API движка
Потребители подключают библиотеку состояния и вызывают её публичные функции — инициализация, добавление вопроса, ответ, чтение ответа, вход и выход из углубления, перескопирование, флаги, финализация, статус, валидация, узел графа, ребро графа. Движок — единственная точка корректности: запускайте валидацию до того, как любой потребитель доверится журналу. Она проверяет сбалансированность push и pop, монотонность номеров, известность видов событий и версии схемы, а также что каждое ребро графа ссылается на существующий узел. Валидация отклоняет — она никогда не чинит по мере возможности.
Граф-артефакт
datarim/wizard/{TASK-ID}.graph.jsonl — документированный контракт приёма для приёмника графа: по одному JSON-объекту на строку — заголовок meta, затем узлы (тип: концепт, требование или решение) и рёбра (отношение: зависимость, уточнение или разрешение).
Граф уходит НАРУЖУ, поэтому метки узлов редактируются на границе приёмника (формы токенов, bearer-учётные данные, блоки приватных ключей, формы «пользователь-пароль-хост», домашние пути, адреса частных диапазонов) до записи. Локальный журнал интервью хранит сырой текст. Обогащение, слияние и семантика запросов принадлежат приёмнику графа — этот скилл лишь эмитирует по контракту и не строит приёмник.
Композиция с /dr-prd
/dr-prd получает единственный неинвазивный хук: если для задачи существует финализированный артефакт мастера, команда потребляет его сводку требований и граф вместо запуска обычного интервью discovery. Хук идемпотентен — повторный запуск перечитывает тот же артефакт и никогда не потребляет дважды. Если артефакта мастера нет, обычный путь discovery не меняется. Так сохраняется один движок интервью с двумя эргономиками входа, без второго расходящегося прохода discovery.
Безопасность
Обеспечивается движком, а не прозой: гейт инъекций экранирует обратный слеш, кавычку и табуляцию и отклоняет перевод строки, возврат каретки, прочие управляющие символы C0 и DEL; списки разрешённого для идентификаторов вопросов и узлов, слагов категорий и закрытых перечислений типов и отношений; удержание путей строгим шаблоном ID задачи, отказ от целей-симлинков и дозапись под блокировкой; редактирование данных на исходящем приёмнике графа.
Когда остановиться
Тот же контракт, что у discovery: все ветки разрешены (нет открытого кадра углубления), критерии готовности определены, не осталось вопроса, ответ на который изменил бы подход. Затем финализация, валидация и выпуск сводки требований. Не переинтервьюируйте — односложные подтверждения означают, что объём ясен; закругляйтесь.