framework/skills/framework-meta/brainstorm/SKILL.md
Use for структурированного мозгового штурма при выборе подхода, поиске альтернатив или явном вызове /brainstorm. Helps развернуть пространство гипотез и свести результат к 3 различным жизнеспособным вариантам, борясь с mode collapse LLM.
npx skillsauth add steelmorgan/1c-agent-based-dev-framework brainstormInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Цель — развернуть полное пространство решений задачи, а не выдать первую правдоподобную идею. Навык борется с типичной болезнью LLM: давать «гладкий ответ из моды распределения», теряя альтернативы, которые могли бы оказаться лучше.
| Триггер | Действие |
|---------|----------|
| Пользователь вызвал /brainstorm <тема> | Пройти все фазы 0–5, опционально 6 |
| Запрос вида «как лучше сделать X», «какие есть варианты», «давай подумаем над Y» | Предложить запустить /brainstorm, при согласии — пройти фазы |
| Перед написанием спецификации, когда не выбран подход | Использовать как подготовку к Considered Options/ADR |
| В фазе 1 полного цикла (Analyst), задача допускает несколько подходов | Запустить как внутренний шаг анализа |
Шесть фаз, идущих от расширения к сужению, плюс опциональная седьмая (внешний red team).
0. FRAME — какую задачу мы вообще решаем?
1. AXES — по каким осям может различаться решение?
2. SAMPLE — какие точки в этом пространстве рассмотрим?
3. GENERATE — формулируем гипотезу для каждой точки
4. STRESS — что её ломает?
5. CONVERGE — три финалиста, максимально различных
6. EXT-RED — (опционально) red team от другой модельной семьи
Что гибко: выбор техник внутри каждой фазы (5 Whys vs JTBD во FRAME, SCAMPER vs аналогии в GENERATE, экстремумы vs латинский квадрат в SAMPLE). Это руководство, не догма.
Что жёстко: порядок фаз и гейты между ними (см. следующий раздел). Их пропускать запрещено.
Брэйнсторм — это совместная работа с пользователем, а не монолог агента. Если агент сам прошёл все фазы и выдал финал — это не брэйнсторм, это презентация в обёртке. Цель навыка теряется ровно в этот момент: пользователь не успевает скорректировать оси до того, как по этим осям уже сгенерированы гипотезы.
| Требование | Описание |
|-----------|----------|
| Не вываливать всё одним сообщением | Запрещено пройти 2+ фазы подряд без обратной связи от пользователя |
| Остановка после каждой обязательной фазы | Вывод результата → конкретный вопрос → ждать ответ перед следующей фазой |
| Минимум 4 STOP за сессию | Phase 0, Phase 1, Phase 3+4, Phase 5 — обязательные гейты |
| Использовать AskUserQuestion для дискретных гейтов | Выбор финалиста, добавление осей из готового набора, выбор стратегии выборки — это закрытые вопросы. Открытый ответ — обычный текстовый вопрос |
| Задал вопрос — остановись | Текстовый вопрос без остановки = риторический. Не использовать как декорацию монолога |
| После фазы | Что показать | Что спросить | STOP | |-----------|--------------|--------------|------| | 0 FRAME | Переформулировка задачи + критерии успеха + ограничения | «Фрейминг корректен? Что поправить?» | ✓ обязательно | | 1 AXES | Список осей и значений | «Все важные оси на месте? Чего не хватает?» | ✓ обязательно | | 2 SAMPLE | Стратегия выборки + список точек | (опционально) «Добавить wild point из конкретного домена?» | можно идти дальше | | 3+4 GENERATE+STRESS | Гипотезы со стресс-тестами | «Какие развить глубже? Что обрезать?» | ✓ обязательно | | 5 CONVERGE | 3 финалиста + рекомендация | «Какой выбираешь?» | ✓ обязательно |
Phase 2 — единственная необязательная остановка: если пользователь уже подтвердил оси, выборка точек — техническая работа агента, её можно показать вместе со стартом Phase 3+4 одним блоком. Фазы 0, 1, 3+4, 5 — STOP обязательно.
Прежде чем отправить сообщение пользователю, агент проверяет:
Если хотя бы один пункт «нет» — переписать сообщение и обрезать до текущей фазы.
Перед генерацией убедиться, что решаем правильную задачу.
Сигнал пропустить фазу: задача чёткая, критерии явные, ограничения известны. Даже в этом случае — короткий чек-ин «понял задачу так-то, продолжаю?» перед Phase 1.
Антипаттерн: прыгнуть в генерацию идей без подтверждения, что мы решаем то, что нужно. Это самая частая причина бесполезного брэйнсторма.
[STOP] После Phase 0. Вывод: переформулировка + критерии + ограничения. Вопрос: «Фрейминг корректен? Что поправить?». Не идти к Phase 1 без ответа пользователя.
Извлечь 3–6 осей, по которым решения могут принципиально различаться. Это морфологический анализ Цвикки.
Антипаттерн: оси-маркетинг («простое vs сложное», «лучшее vs быстрое»). Это не оси, это оценки.
[STOP] После Phase 1. Вывод: список осей и их значений. Вопрос: «Все важные оси на месте? Чего не хватает?». Не идти к Phase 2 без ответа. Сгенерировать гипотезы по неподтверждённым осям = впустую сжечь раунд.
Полный грид редко нужен (5 осей × 3 значения = 243 комбинации). Выбираем стратегию покрытия:
Бюджет по умолчанию: 6–9 точек. Меньше 5 — теряем покрытие, больше 10 — теряем внимание.
К отобранным точкам полезно добавить:
references/prompt-techniques.md → Provocation)Опциональная остановка после Phase 2. Если пользователь активен и есть смысл — спросить «добавить wild point из конкретного домена?». Если нет — переходить к Phase 3 без отдельного сообщения, объединить вывод выборки с гипотезами в Phase 3+4.
На каждую точку — формулировка гипотезы решения. Здесь главные риски — анкоринг и diversity theater.
См. references/prompt-techniques.md для конкретных приёмов генерации (SCAMPER, аналогии, reversal, first-principles).
Короткий проход по всем гипотезам.
Антипаттерн: проводить стресс-тест в той же роли/контексте, что и генерацию. Внутренний критик ленив. Лучше — явный сдвиг рамки («теперь я инвестор-скептик»).
[STOP] После Phase 3+4. Вывод: гипотезы со стресс-тестами (можно объединить с выборкой из Phase 2). Вопрос: «Какие гипотезы стоит развить глубже? Что обрезать сразу?». Не идти к Phase 5 без ответа. Конвергенция по неотфильтрованному пользователем списку = выбор за пользователя, что нарушает суть навыка.
Финал — три варианта. Не пять, не один.
Финальный вывод MUST соответствовать шаблону references/output-template.md — он совместим с разделом Considered Options в спецификациях по spec-standard.
[STOP] После Phase 5. Вывод: 3 финалиста + рекомендация + отвергнутые ветви. Вопрос: «Какой выбираешь?» — через
AskUserQuestionс тремя опциями. Не действовать на основе своей рекомендации, пока пользователь не выбрал.
Для тяжёлых задач (архитектурный выбор, продуктовая стратегия, дорогая ошибка) — финалисты прогоняются через cross-provider-review в режиме advisory как идею-критику.
Когда применять:
Когда НЕ применять:
Что подавать:
output-template.mdРезультат red team — отдельная секция в финальном выводе, не автоматически меняет рекомендацию. Решение по итогам — за пользователем.
Брэйнсторм по одной задаче часто идёт в несколько проходов. Чтобы не повторять отвергнутые ветви и не терять оси, навык ведёт лёгкий контекст.
| Контекст | Путь |
|----------|------|
| Брэйнсторм привязан к задаче из tasks/<id>/ | tasks/<id>/.context/brainstorm.md |
| Брэйнсторм без задачи (свободное обсуждение) | .context/brainstorm-<topic-slug>.md в текущем рабочем каталоге |
| Универсальные паттерны брэйнсторма по проекту | MEMORY.md через стандартный механизм памяти (если есть) |
/brainstorm — проверить, есть ли релевантный файл по контексту задачиbrainstorm.<дата>.md для архива, не удалятьСм. references/output-template.md — он же используется и как формат финального вывода, и как формат файла памяти. Дополнительно в начале файла:
# Brainstorm: <тема>
**Задача:** <ID или slug>
**Итерация:** <N>
**Дата:** <ISO>
**Статус:** in_progress | finalized | archived
| Сигнал | Действие | |--------|----------| | Все три финалиста похожи | Оси не были ортогональны — вернуться к Phase 1 | | Не получается извлечь 3 оси | Задача либо тривиальная (брэйнсторм не нужен), либо плохо отфреймлена (вернуться к Phase 0) | | Гипотезы получаются «правильными и скучными» | Добавить аналогию из чужого домена или provocation в Phase 3 | | Пользователь говорит «но я хотел не это» | Phase 0 была пропущена/некачественна — переделать фрейминг | | Финалисты все — варианты одного и того же | Конвергенция шла по сумме баллов, а не по diversity-aware правилу | | Решение тяжёлое и долгосрочное | Включить Phase 6 (external red team) | | Брэйнсторм возобновляется по той же теме | Сначала прочитать файл памяти, потом расширять, не повторять | | Агент прошёл 2+ обязательные фазы в одном сообщении | Нарушен принцип диалога. Откатиться к точке последней реальной сверки с пользователем, извиниться, продолжить с гейтами | | Агент задал вопрос, но в том же сообщении уже выдал ответ за следующую фазу | Вопрос риторический — не считается. Переписать сообщение, оборвать на вопросе, ждать ответ | | Финал из 3 финалистов получен без участия пользователя на гейтах 0/1/3+4 | Это не брэйнсторм, это презентация. Признать ошибку, спросить, на каком гейте откатываться, переиграть |
Базовое правило диалога описано в разделе «Принцип диалога» выше (таблица гейтов + самопроверка). Здесь — дополнения по формату:
AskUserQuestion вместо текстового вопросаreferences/output-template.md), отвергнутые ветви списком, рекомендация с обоснованиемДля тяжёлых задач можно делегировать фазы разным агентам:
Это дороже, но даёт меньше «диверсити-театра». В лёгких задачах — один агент проходит все фазы сам.
| Навык/правило | Связь |
|---------------|-------|
| spec-standard | Финал брэйнсторма ложится в Considered Options/ADR спецификации в формате output-template.md |
| cross-provider-review | Используется в Phase 6 (опционально) для внешней red team финалистов |
| framework/workflows/full-cycle.md | В фазе 1 (Analyst) брэйнсторм — внутренний шаг анализа |
| agent-context-protocol | Файл памяти brainstorm.md лежит рядом с {role}-context.md в .context/ |
depends_on:
testing
MUST use BEFORE making a judgment about the cause of a conflict, a test failure, or an artifact dispute. Defines the end-to-end verification method L1→L6 and the classification of the first broken link.
development
MUST use AFTER a work cycle with ≥2 iterations (wrote → error → fixed → success). Provides the retrospective procedure and the format for recording practice/anti-patterns in references/learned-patterns.md or {project}/.context/learned-patterns.md.
tools
MUST use WHEN you are writing reusable knowledge into RLM (pattern / architectural decision / stable domain fact) OR reading it before a non-trivial task/solution in the domain. Provides the breakdown of native-push vs RLM-pull, tools for writing and reading RLM, H-MEM levels, and hygiene.
testing
MUST use WHEN the task is classified as simple (< 20 lines, 1 file, no new metadata objects, no architectural decisions). Provides a short cycle of 3 steps with a guard on the self path and mandatory verify.