agentsclimarketplace

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

Install
npx -y skills add matvej-melikhov/karpathy-llm-wiki --skill brainstorm

Assembled 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 --randomRandom 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. Резюме:

  1. Загрузить wiki/meta/embeddings.json
  2. Найти топ-3 пар страниц с similarity ≥0.6, без wikilink в обе стороны
  3. Фильтр: хотя бы одна страница из пары должна быть type: idea (entity-entity или domain-domain пары не предлагаем)
  4. Показать пользователю как нумерованный список, спросить выбор
  5. Если кандидатов <3 — fallback на random

Setup phase

После выбора seed — одно сообщение агента, в котором:

  1. Объявить seed и его источник (explicit / bridge / random / continue).
  2. Озвучить правила игры:
    • пиши тезисами ~абзац, не одним словом и не эссе;
    • агент не предлагает содержание, только продвигающие вопросы;
    • закончим, когда наберётся минимум 2 тезиса, на которые ты сам киваешь;
    • закончить раньше можно явной командой («хватит», «всё», «стоп») — тогда сессия запишется только в raw/brainstorm/, без mind.
  3. Спросить: «С чего начинаешь?»

Divergence loop

Цикл тезис ↔ probing. Каждая итерация:

  1. Пользователь даёт тезис (~абзац, 3-7 предложений своими словами).
  2. Агент задаёт 1-2 продвигающих вопроса. Они диагностические, не содержательные:
    • «что в этом неочевидно?»
    • «это про тебя или про систему?»
    • «что бы ты добавил для себя через год?»
    • «какое поведение убрало бы это ощущение?»
  3. Пользователь развивает / даёт следующий тезис.

Прерывания. Если пользователь начинает писать сводку или абзац-синтез вместо тезиса — мягко вернуть к формату:

Это уже синтез. Что приходит ДО синтеза — какая прямая мысль?

Условие выхода: пользователь сказал «достаточно/хватит/готово» И в копилке ≥2 тезиса. Если тезисов <2 — переход в lazy escape (см. ниже).


Cross-link suggestion

После того как тезисы набраны, агент:

  1. Собирает текст всех тезисов в один query-string.

  2. Запрашивает семантически близкие существующие страницы:

    python3 bin/embed.py query "<concatenated theses>" -k 8
    
  3. Фильтрует результат: исключает meta/wiki-root, оставляет только idea/entity/domain/question/mind.

  4. Показывает пользователю топ-5 кандидатов как таблицу:

    СтраницаБлизостьПочему может резонировать
    [[X]]0.78(краткое наблюдение агента по теме страницы)
    .........
  5. Пользователь отмечает резонирующие. Только подтверждённые попадают в 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

Обязательный шаг. Перед записью показать пользователю целиком оба будущих файла:

  1. wiki/minds/<title>.md (frontmatter + тело)
  2. raw/brainstorm/<date>-<slug>.md (transcript-сессия — см. ниже)

Спросить: «Коммитим? (да / правки)». На правки — Edit указанных мест, повторный preview. Без согласия пользователя ничего не пишем.


Commit

После согласия — атомарная серия записей:

  1. Write wiki/minds/<title>.md — финальная mind по шаблону _templates/mind.md.

  2. 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]]
    
  3. Edit wiki/log.md — append сверху:

    ## YYYY-MM-DD — brainstorm: <seed> (N тезисов)
    - seed: <explicit | bridge | random | continue> «<текст>»
    - создано: [[Имя mind]]
    - обновлено: —
    - источник: [[raw/brainstorm/<date>-<slug>]]
    
  4. Write wiki/cache.md с учётом сессии:

    • ## Последнее обновление — строка про эту brainstorm-сессию.
    • ## Ключевые факты — если новая mind важна поперёк wiki, добавь буллет, вытесни наименее актуальный.
    • ## Недавние изменения — добавь строку сверху.

    Формат и бюджет — CLAUDE.md раздел «Кэш контекста».

  5. НЕ запускать /lint автоматически. Сессия одиночная — lint имеет смысл после серии. Пользователь может запросить вручную.

  6. НЕ запускать 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:

  1. Read целевой mind.
  2. Прогнать divergence loop как обычно (новые тезисы + probings).
  3. Cross-link suggestion (пересечение уже существующих related НЕ повторять; новые добавлять).
  4. Crystallize — агент склеивает новые абзацы из новых реплик и вставляет их в тело mind (либо в конце, либо в осмысленное место — спросить пользователя).
  5. Frontmatter: bump updated, добавить новый source в sources ([[raw/brainstorm/<new-date>-<slug>]]), расширить related подтверждёнными новыми связями.
  6. 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)

Пользователь хочет пересмотреть мысль:

  1. Стандартный divergence loop с нуля.
  2. Crystallize — новая mind. Имя файла: <base> 2.md (или <base> <YYYY-MM-DD>.md, если первая ревизия уже имела суффикс).
  3. В frontmatter новой: supersedes: ["[[Старая]]"].
  4. В старой mind:
    • status: deprecated;
    • updated: текущая дата;
    • в начало тела (после H1) добавить callout:
      > [!warning] Deprecated
      > Эта mind пересмотрена — см. [[Имя новой]] (YYYY-MM-DD).
      
  5. 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 тезисов или вообще без тезисов:

  1. Сессия записывается только в raw/brainstorm/<date>-<slug>.md (для аналитики потерь и возможного будущего возвращения к теме).
  2. Frontmatter сессии: minds_created: [], pages_updated: [], dropped_branches: 0 (плоские поля, не nested).
  3. mind не создаётся.
  4. log: запись «brainstorm: <seed> — прерван без mind».
  5. 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/

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.