87 типов UX-интервью. Каждому нужен свой промпт для анализа и пример JSON-выхода. Я думал, что раскидаю по шаблону за пару вечеров - оказалось, что без системы это 174 файла ручной работы на три недели. За 4 часа с субагентами Claude Code собрал пайплайн, который генерирует их сам.
Контекст: делаю платформу для AI-анализа UX-исследований. Discovery, usability, JTBD, exit-интервью - 87 подтипов. Каждый подтип анализируется по-своему. Нужен промпт + пример выхода с computed metrics типа satisfaction_score, feature_demand_score, usability_score.
Сел с Claude Code в 20:00. Встал в 00:00 с готовым пайплайном.
Фаза 1: JSON-структура выхода (~1 час)
Первый час ушёл на согласование формата. Скучная работа, но один кривой формат размножится на 87 кривых выходов.
7 открытых вопросов решили через AskUserQuestion с визуальным превью прямо в терминале. Ключевые развилки:
- Один массив
sections[]вместо двух отдельных - проще парсить на бэкенде - Flat topics + иерархический mindmap с ID - и поиск, и визуализация
confidence: 0-1обязательный на каждый блок - фильтрация шума- Computed metrics: envelope + полиморфные scores - общая обёртка, но внутри каждый тип интервью добавляет свои метрики
9 архитектурных решений задокументированы. Звучит бюрократично. Но когда субагент на 80-м промпте спросит “а какой формат confidence?” - ответ уже есть в _common/schema.md.
Фаза 2: Архитектура массовой генерации (~30 мин)
Главное решение: один ассистент на бэкенде, 87 подставляемых промптов. Одна JSON-схема для всех. Меняется только промпт. Я выбрал единую схему, хотя для некоторых типов интервью (скажем, diary study vs. card sorting) различия существенные - зато бэкенд не превращается в зоопарк парсеров.
Структура папок:
prompts/
├── _common/ # Общие файлы
│ ├── schema.md # JSON-схема
│ └── metrics.md # Формулы метрик
├── discovery/
│ └── general/
│ ├── prompt.md # Промпт для анализа
│ └── example.json # Пример выхода
├── usability/
│ └── moderated/
│ ├── prompt.md
│ └── example.json
└── ... (85 подтипов)
Фаза 3: Субагент-генератор
Создал .claude/agents/insights-prompt-agent.md - автономный агент на Opus. Каждый экземпляр получает один подтип и создаёт два файла: промпт + пример JSON.
Ключевые решения в дизайне агента:
Агент не задаёт вопросов. Всё нужное берёт из _common/ и документа-синтеза по метрикам. При 87 запусках любой вопрос к человеку - это bottleneck, который убивает всю автономность.
Документ-синтез по метрикам - 53KB. Читать целиком бессмысленно: контекст засоряется, галлюцинации растут. Агент грепает по названию подтипа. Первый прогон показал, что без этого ограничения агент начинает путать метрики соседних подтипов.
Каждый example.json прогоняется через python3 -m json.tool. Битый JSON обнаружится сразу, а не когда бэкенд упадёт на 93-м подтипе.
Оркестрация: 18 батчей по 5 субагентов параллельно. Трекер обновляет только оркестратор - субагенты не трогают. Иначе race condition.
Фаза 4: Ресёрч метрик (~40 мин)
Прежде чем генерировать 87 промптов, нужно было понять, какие computed metrics вообще существуют для UX-исследований.
40 источников через Exa + 5 запросов в Perplexity + синтез в Claude. Результат - 53KB документ с классификацией метрик по типам интервью.
Нашёл 10 новых типов метрик, которые не планировал:
satisfaction_trend- динамика удовлетворённости по интервьюfeature_advocacy- насколько пользователь готов рекомендовать фичуtask_completion_confidence- уверенность в завершении задачи
Паттерн: envelope + discriminated union. Общая обёртка с metric_type, value, confidence. Внутри - специфичные поля для каждого типа метрики.
Пороги confidence: >=0.70 показываем, 0.50-0.70 мягкое предупреждение, <0.50 подавляем. За основу взял практики Gainsight по health scores, адаптировал для UX-контекста.
Фаза 5: Агентное ревью через /btw - 8 багов без усилий
Лайфхак, который усиливает любую сессию с Claude Code. Команда /btw запускает параллельного агента прямо из терминала - он работает в фоне, пока ты занят основной задачей. Я попросил его детально проанализировать все созданные файлы, найти ошибки и несоответствия. Через пару минут получил отчёт, скопировал в основной терминал - и Claude сам всё поправил. 8 проблем:
- Интерактивный скилл в автономном агенте - скилл задаёт вопросы, агент автономный. Убрал, вшил логику прямо в промпт
- Race condition на трекере - субагенты обновляли трекер параллельно. Перенёс обновление в оркестратор
- Нет
mkdir -p- агент пытался писать в несуществующие папки - Чтение 53KB целиком - заменил на grep по подтипу
- Нет JSON-валидации - добавил
python3 -m json.tool - Специфика первого подтипа в общей схеме - обобщил
- Нет обработки ошибок - добавил статус FAILED + список на retry
- Нет примера с низким confidence - добавил пример с
confidence: 0.48
Три из восьми потенциально критичные на масштабе. Race condition на трекере сломал бы половину батчей. Чтение 53KB в каждом из 87 агентов - это примерно 4.5MB лишнего контекста, что означает больше галлюцинаций и медленнее работу. А отсутствие mkdir приводит к тому, что агент падает молча, без ошибки.
Результат
За 4 часа:
- 9 архитектурных решений
- 25+ файлов
- 40+ источников ресёрча
- 1 из 87 промптов готов полностью (шаблон для остальных)
- Пайплайн для массовой генерации остальных 86
Один автономный субагент + оркестратор с трекером = масштабирование без потери качества. Написать один хороший промпт - полдела. Спроектировать систему, которая произведёт 87 с предсказуемым качеством - вот где архитектура решает.
И ещё: параллельное ревью через /btw нашло 8 багов, которые основной агент пропустил. Часто забываю запускать - но каждый раз, когда запускаю, находится что-то критичное.
Источники
- Anthropic: Claude Code Subagents
- Claude Code Multi-Agents and Subagents Guide - TURION.AI
- How to Use Claude Code Sub-Agents for Parallel Work - Tim Dietrich
- CascadeAgent: Prompt Engineering at Scale - ICLR 2026
- Orchestrated multi-agents sustain accuracy under clinical-scale workloads - Nature
- Agent Orchestration Patterns - gurusup.com
- Gainsight: Customer Health Scores
- Automated Qualitative Coding - UserCall