agentsclimarketplace

Brainstorm

Skill matvej-melikhov/karpathy-llm-wiki/.claude/skills/brainstorm

Программная реализация паттерна LLM Wiki (А. Карпаты). ВКР СПбГЭТУ "ЛЭТИ" 2026

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.

2 things to look at

  • 18 days oldThe repository was created 18 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
  • 0 stars0 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.

What its author says it does

Copied from the file, not written here

Запускает brainstorm-сессию по заданной теме (или bridge-gap паре далёких страниц), модерирует поток тезисов пользователя через продвигающие вопросы и в конце склеивает permanent note (тип `mind`) из реплик пользователя дословно. Один цикл = один источник в `raw/brainstorm/` + одна или больше страница в `wiki/minds/`. Реализация ножки Mind Mapping из гибридного фреймворка организации знаний. Триггеры: /brainstorm, "поразмышляем", "хочу подумать про X", "брейнсторм", "давай развей мысль".

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 328,083. 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.