Brainstorm
Skill matvej-melikhov/karpathy-llm-wiki/.claude/skills/brainstorm
Запускает brainstorm-сессию по заданной теме (или bridge-gap паре далёких страниц), модерирует поток тезисов пользователя через продвигающие вопросы и в конце склеивает permanent note (тип `mind`) из реплик пользователя дословно. Один цикл = один источник в `raw/brainstorm/` + одна или больше страница в `wiki/minds/`. Реализация ножки Mind Mapping из гибридного фреймворка организации знаний. Триггеры: /brainstorm, "поразмышляем", "хочу подумать про X", "брейнсторм", "давай развей мысль".From its SKILL.md
npx -y skills add matvej-melikhov/karpathy-llm-wiki --skill brainstormAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
18.9 KB, ~4.8k tokens by cl100k_base, as published. Nobody here has run it
brainstorm: ассоциативное мышление в permanent notes
Brainstorm — это режим создания узлов из процесса мышления, не выжимки источника.
Главный принцип. Содержание пишет пользователь, агент — модератор: задаёт продвигающие вопросы, ищет связи, склеивает финальный текст из реплик пользователя дословно. Агент не предлагает ассоциации и тезисы по теме — это инверсия Mind Mapping.
Стандарт синтаксиса: wiki-страницы пишутся в Obsidian Flavored Markdown (wikilinks [[...]], properties как YAML frontmatter). Детали — скилл obsidian-markdown.
Команды и флаги
| Команда | Поведение |
|---|---|
/brainstorm [тема] | Explicit seed: пользователь задаёт тему словами или wikilink на существующую страницу |
/brainstorm (без аргументов) | Bridge-gap mode: предложить 3 пары семантически близких страниц без wikilink |
/brainstorm --random | Random seed: случайная страница из wiki/{ideas,entities,domains}/ |
/brainstorm --continue [[mind-name]] | Явное продолжение существующей mind. Аргумент обязателен — без него ошибка |
Триггер на естественном языке (например, «хочу подумать про X») — explicit seed с темой X.
Pre-flight checks
Перед запуском сессии — две короткие проверки. Обе на семантической близости через эмбеддинги, никаких временных эвристик (никаких «давно», «недавно», «сегодня»).
Dedup по seed
Если seed — explicit-тема или wikilink, проверь, нет ли уже mind с близким seed:
python3 bin/embed.py query "<seed text>" -k 5
Если в топ-5 есть wiki/minds/...md с similarity >0.7 — спроси:
Нашёл существующую mind: [[Имя]] (similarity 0.78). Развиваешь старую (Edit), это новый виток мысли (новая mind с supersedes), или нет — это разные темы?
Три ответа:
- Развиваешь старую → переход в continuation flow (
--continueбез явного флага) - Новый виток → создаём новую mind, в frontmatter новой
supersedes: [[Старая]], у старойstatus: deprecated+ callout - Разные темы → продолжаем как обычная новая сессия
Bridge-gap selection (только если seed не задан)
Алгоритм — в references/seed-strategies.md. Резюме:
- Загрузить
wiki/meta/embeddings.json - Найти топ-3 пар страниц с similarity ≥0.6, без wikilink в обе стороны
- Фильтр: хотя бы одна страница из пары должна быть
type: idea(entity-entity или domain-domain пары не предлагаем) - Показать пользователю как нумерованный список, спросить выбор
- Если кандидатов <3 — fallback на random
Setup phase
После выбора seed — одно сообщение агента, в котором:
- Объявить seed и его источник (explicit / bridge / random / continue).
- Озвучить правила игры:
- пиши тезисами ~абзац, не одним словом и не эссе;
- агент не предлагает содержание, только продвигающие вопросы;
- закончим, когда наберётся минимум 2 тезиса, на которые ты сам киваешь;
- закончить раньше можно явной командой («хватит», «всё», «стоп») — тогда сессия запишется только в
raw/brainstorm/, без mind.
- Спросить: «С чего начинаешь?»
Divergence loop
Цикл тезис ↔ probing. Каждая итерация:
- Пользователь даёт тезис (~абзац, 3-7 предложений своими словами).
- Агент задаёт 1-2 продвигающих вопроса. Они диагностические, не содержательные:
- «что в этом неочевидно?»
- «это про тебя или про систему?»
- «что бы ты добавил для себя через год?»
- «какое поведение убрало бы это ощущение?»
- Пользователь развивает / даёт следующий тезис.
Прерывания. Если пользователь начинает писать сводку или абзац-синтез вместо тезиса — мягко вернуть к формату:
Это уже синтез. Что приходит ДО синтеза — какая прямая мысль?
Условие выхода: пользователь сказал «достаточно/хватит/готово» И в копилке ≥2 тезиса. Если тезисов <2 — переход в lazy escape (см. ниже).
Cross-link suggestion
После того как тезисы набраны, агент:
-
Собирает текст всех тезисов в один query-string.
-
Запрашивает семантически близкие существующие страницы:
python3 bin/embed.py query "<concatenated theses>" -k 8 -
Фильтрует результат: исключает meta/wiki-root, оставляет только idea/entity/domain/question/mind.
-
Показывает пользователю топ-5 кандидатов как таблицу:
Страница Близость Почему может резонировать [[X]] 0.78 (краткое наблюдение агента по теме страницы) ... ... ... -
Пользователь отмечает резонирующие. Только подтверждённые попадают в
relatedфинальной mind. Несогласованные отбрасываются и уходят в разделdroppedсессии.
Crystallization
Агент собирает draft-mind:
- Тело страницы: реплики пользователя дословно, склеенные в связный текст. Можно вырезать речевой мусор («думаю», «короче»), исправить опечатки, расставить wikilinks к выбранным cross-link'ам. Своё содержание агент НЕ добавляет. Если в репликах не было ясного тезиса — соответствующий абзац просто не пишем.
- Frontmatter: заполняется по шаблону
_templates/mind.md. Поля:summary: одно предложение ≤120 символов в одинарных кавычках, отжимающее главную мысль.seed: тема сессии (текст explicit-seed, или slug bridge-pair вида «X × Y»).seed_strategy:explicit/bridge/random/continue.created,updated: текущая дата (YYYY-MM-DD).tags: 1-3 тематических тега в block-стиле (regression:tags: [a]inline запрещено).status:draft(всегда для новых mind;stable/deprecated— позже).domain: опционально, если тема явно связана с существующим domain (wikilink наwiki/domains/X.md); иначе пустой список[].related: только подтверждённые cross-link'и; минимум 2 (lint-требование).sources:[[raw/brainstorm/<date>-<slug>]]— обязательно.supersedes:[]для новых,[[Старая]]для пересмотров.
- Имя файла: предложить 1-3 слова из
summary, спросить пользователя «коротко так? или ты сам?». Override — пользователь даёт своё.
Preview / commit gate
Обязательный шаг. Перед записью показать пользователю целиком оба будущих файла:
wiki/minds/<title>.md(frontmatter + тело)raw/brainstorm/<date>-<slug>.md(transcript-сессия — см. ниже)
Спросить: «Коммитим? (да / правки)». На правки — Edit указанных мест, повторный preview. Без согласия пользователя ничего не пишем.
Commit
После согласия — атомарная серия записей:
-
Write wiki/minds/<title>.md— финальная mind по шаблону_templates/mind.md. -
Write raw/brainstorm/<date>-<slug>.md— транскрипт сессии. Frontmatter и формат:--- type: source source_type: brainstorm seed: "..." seed_strategy: explicit created: <ISO datetime> minds_created: - "[[Имя mind]]" pages_updated: [] dropped_branches: <int — сколько cross-link кандидатов отброшено> --- # Brainstorm: <seed> (YYYY-MM-DD) ## Тезисы ### Тезис 1 <реплика пользователя дословно> ### Тезис 2 (после probing'а) <реплика> ... ## Probings 1. <вопрос агента> 2. ... ## Cross-link decisions ✓ [[X]], [[Y]] ✗ [[Z]] (отброшен как «слишком общий») ## Итог → [[Имя mind]] -
Edit wiki/log.md— append сверху:## YYYY-MM-DD — brainstorm: <seed> (N тезисов) - seed: <explicit | bridge | random | continue> «<текст>» - создано: [[Имя mind]] - обновлено: — - источник: [[raw/brainstorm/<date>-<slug>]] -
Write wiki/cache.mdс учётом сессии:## Последнее обновление— строка про эту brainstorm-сессию.## Ключевые факты— если новая mind важна поперёк wiki, добавь буллет, вытесни наименее актуальный.## Недавние изменения— добавь строку сверху.
Формат и бюджет —
CLAUDE.mdраздел «Кэш контекста». -
НЕ запускать
/lintавтоматически. Сессия одиночная — lint имеет смысл после серии. Пользователь может запросить вручную. -
НЕ запускать
bin/embed.py/bin/gen_index.py/bin/gen_dashboards.py— это сделает Stop-хук в.claude/settings.jsonсам.
После записи — короткое подтверждение: «Записал [[Имя mind]] и сессию в raw/brainstorm/. Ничего не запускал — Stop-хук обновит embeddings и index сам».
Continuation flow (--continue или dedup-эвристика)
Develop existing (Edit)
Пользователь хочет дополнить существующую mind:
- Read целевой mind.
- Прогнать divergence loop как обычно (новые тезисы + probings).
- Cross-link suggestion (пересечение уже существующих
relatedНЕ повторять; новые добавлять). - Crystallize — агент склеивает новые абзацы из новых реплик и вставляет их в тело mind (либо в конце, либо в осмысленное место — спросить пользователя).
- Frontmatter: bump
updated, добавить новый source вsources([[raw/brainstorm/<new-date>-<slug>]]), расширитьrelatedподтверждёнными новыми связями. - Commit:
Edit wiki/minds/<title>.md(не Write — точечная правка).Write raw/brainstorm/<new-date>-<slug>.md. В frontmatter использоватьpages_updated: ["[[Имя]]"],minds_created: [].- log/cache — как в обычном flow.
New revision (новая mind с supersedes)
Пользователь хочет пересмотреть мысль:
- Стандартный divergence loop с нуля.
- Crystallize — новая mind. Имя файла:
<base> 2.md(или<base> <YYYY-MM-DD>.md, если первая ревизия уже имела суффикс). - В frontmatter новой:
supersedes: ["[[Старая]]"]. - В старой mind:
status: deprecated;updated: текущая дата;- в начало тела (после H1) добавить callout:
> [!warning] Deprecated > Эта mind пересмотрена — см. [[Имя новой]] (YYYY-MM-DD).
- Commit:
Write wiki/minds/<title> 2.md(новая).Edit wiki/minds/<base>.md(старая, статус + callout).Write raw/brainstorm/<new-date>-<slug>.md. В frontmatter:minds_created: ["[[Имя новой]]"],pages_updated: [].- log/cache.
Lazy escape
Если пользователь явной командой («хватит», «всё», «стоп», «закончили») прерывает сессию до набора 2 тезисов или вообще без тезисов:
- Сессия записывается только в
raw/brainstorm/<date>-<slug>.md(для аналитики потерь и возможного будущего возвращения к теме). - Frontmatter сессии:
minds_created: [],pages_updated: [],dropped_branches: 0(плоские поля, не nested). - mind не создаётся.
- log: запись «brainstorm: <seed> — прерван без mind».
- cache: только обновление
## Последнее обновление(без новой mind в фактах).
Никаких дополнительных вопросов — пользователь сказал «хватит» и сессия закрывается.
Дисциплина токенов
- Сначала прочитай
wiki/cache.md. Если есть релевантный контекст к seed — не углубляйся в ту же тему через/query. bin/embed.py queryдля cross-link suggestion — один вызов на сессию. Не дёргай по каждому тезису.- Не читай больше 3-5 существующих страниц за всю сессию (только то, что пользователь явно подтвердил для cross-link).
- Mind держи короткой: 150-500 слов тела. Длиннее — сигнал, что ты добавляешь что-то от себя.
Чего не делать
- Не предлагай содержание тезисов. Пробинги — диагностические вопросы, не «вот варианты ответа». Если пользователь застрял, задай вопрос про его собственное состояние, не подсказывай ответ.
- Не редактируй existing idea/entity/question/domain. brainstorm пишет ТОЛЬКО
wiki/minds/иraw/brainstorm/. Если в сессии всплыла фактическая правка чужой страницы — это работа/saveили/ingest, не brainstorm. Можно упомянуть пользователю, но не делать. - Не пиши mind без preview-gate. Запись только после явного «коммитим».
- Не вписывай в mind свои абзацы. Crystallization — это редактура реплик пользователя, не написание текста. Если в репликах не сказано — в mind тоже не сказано.
- Не используй временных эвристик («недавно», «давно», «сегодня»). Все эвристики — на семантической близости через эмбеддинги.
- Не запускай
/lintавтоматически. Один brainstorm — слишком мало для full-audit. - Не запускай
embed.py/gen_index.py/gen_dashboards.pyруками — Stop-хук это делает. - Не нарушай минимум 2 related в финальной mind. Если cross-link suggestion дал <2 подтверждённых — попроси пользователя добавить руками или предложи отложить запись (escape без mind).
- Не путай brainstorm с
/save.saveфиксирует уже сформулированную мысль (одношагово).brainstorm— диалоговая сессия с probing'ом для рождения новой формулировки.
What ships with it: 1 file
7.0 KB alongside SKILL.md
references/
- seed-strategies.md7.0 KB