К основному содержанию
скилл CX Codex

wiki-synthesize — скилл для Claude Code: синтез в вики

Сканирует вики в Obsidian, ищет концепции, которые часто соседствуют на страницах, но своей страницы синтеза не имеют, и создаёт связующие страницы.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add Ar9av/obsidian-wiki --skill wiki-synthesize -a claude-code
Открыть на GitHub

Что делает wiki-synthesize

Скилл проходит по хранилищу Obsidian и ищет пары концепций, которые встречаются на одних и тех же страницах, а отдельной страницы, где они связаны, у них нет. Считает он по совместной встречаемости: собирает [[wikilinks]], теги и category из frontmatter, а потом смотрит, сколько страниц ссылаются сразу на оба понятия. Вес пары растёт, если концепции из разных категорий или если синтез снимает помеченное противоречие.

Работа разбита на шаги. Сначала разрешается конфиг, читаются index.md, hot.md и _meta/taxonomy.md. Дальше отсеиваются пары, уже закрытые в synthesis/, и остаются 5 лучших кандидатов. Новая страница получает заголовок вида A × B, раздел с сильнейшим возражением и тестовым поисковым запросом, а страницы самих концепций — обратную ссылку. Пропущенные кандидаты скилл перечисляет в отчёте, чтобы их можно было взять на следующем прогоне.

Заранее нужны две вещи: путь к хранилищу в OBSIDIAN_VAULT_PATH и утилита obsidian-wiki — без неё финальный obsidian-wiki memory sync WIKI_SYNTHESIZE не пройдёт, и index.md, log.md, hot.md останутся без обновления. Обратные ссылки ищутся через rg, так что ripgrep тоже должен стоять в системе. Раздел с возражением в шаблоне стоит воспринимать серьёзно: если связь не выдерживает критики, страница так и останется черновиком.

Какие задачи решает

  • найти пары концепций, которые часто соседствуют, но не связаны страницей
  • отсеять темы, уже закрытые в synthesis/
  • собрать карту совместной встречаемости по ссылкам и тегам
  • проставить обратные ссылки из страниц обеих концепций
  • записать пропущенные кандидаты на следующий прогон

Примеры запросов агенту

  • Просканируй вики и создай страницы синтеза для пяти самых частых пар концепций
  • Синтезируй всё, что в вики есть про observability
  • Покажи, какие пары встречаются вместе, но ещё не связаны, и что ты пропустил в прошлый раз

Как установить wiki-synthesize

1Через Skills CLI (Vercel)

npx skills add Ar9av/obsidian-wiki --skill wiki-synthesize -a claude-code

2Вручную: положить файлы

~/.claude/skills/wiki-synthesize/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/wiki-synthesize/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора38

graph-colorize Настраивает цвета графа Obsidian по тегам, папкам или уровню видимости через правку .obsidian/graph.json. Пригодится для наглядной раскраски заметок в хранилище. CX Codex +1 2 800установок wiki-dashboard Скилл собирает живые таблицы и карточки по заметкам Obsidian: фильтры по папкам и тегам, группировка, вычисляемые колонки. Пригодится, когда нужен обновляемый индекс хранилища. CX Codex +1 2 800установок wiki-research Гоняет несколько раундов поиска по теме, сводит найденное и раскладывает результат по страницам Obsidian-вики. CX Codex +1 2 800установок wiki-capture Превращает текущий диалог и результаты отладки в структурированные заметки Obsidian. Поддерживает быстрый сброс черновиков в папку _raw/ и точечные исправления. CX Codex +1 2 800установок codex-history-ingest Разбирает логи сессий Codex CLI и складывает из них страницы Obsidian. Пригодится, если накопились сотни rollout-файлов, а знаний из них не достать. CX Codex +1 2 600установок memory-bridge Скилл показывает, какой ИИ-инструмент что записал в вашу Obsidian-вики, и сравнивает наборы знаний между агентами. Полезно, когда сессии Claude, Codex и Copilot копятся в разных углах. CX Codex +1 2 400установок wiki-agent Скилл ищет решения в истории диалогов конкретного ИИ-агента, переносит найденное в базу Obsidian и формирует готовый ответ. Пригодится для точечного обмена контекстом между разными ассистентами. CX Codex +1 2 400установок hermes-history-ingest Собирает знания из памяти и истории Hermes в Obsidian. Нужен для регулярного импорта сессий и поиска устойчивых выводов. CX Codex +1 2 400установок

Похожие

wiki-ingest sanyuan0704 Собирает статьи, документы и заметки в связанную базу знаний с отдельными страницами сущностей. Пригодится для пополнения проектной вики из текста, файлов или каталогов. CX Codex +1 2 700установок llm-wiki nashsu Скилл подключает агента к локальному приложению LLM Wiki по HTTP API: поиск по страницам, чтение, граф связей и переиндексация источников. CX Codex +1 1 800установок wiki-query AgriciDaniel Отвечает на вопрос по выбранному хранилищу Obsidian и не меняет в нём ни одного файла. Полезен, когда источником доказательств назначена сама вики. CX Codex +1 462установок wiki-lint AgriciDaniel Прогоняет детерминированную проверку Obsidian-вики: битые ссылки, страницы-сироты, пробелы во frontmatter. Ничего не правит — только показывает. CX Codex +1 460установок li gasserane Ведёт личную библиотеку документов и MEL Wiki: каталогизирует, находит и перекладывает материалы по запросу. Доменные вопросы не разбирает. CX Codex +1 652установок second-brain coreyhaines31 Скилл превращает папку с заметками в вики: складывает источники в raw/, компилирует их в связанные страницы и отвечает на вопросы по ним. CX Codex +1 355установок

Рядом в теме «Настройка агента: память, контекст, субагенты»

Все скиллы по теме «Настройка агента: память, контекст, субагенты» →

Вопросы о wiki-synthesize

Как установить wiki-synthesize в Claude Code?

Выполните npx skills add Ar9av/obsidian-wiki --skill wiki-synthesize -a claude-code. Скилл окажется в ~/.claude/skills/wiki-synthesize/SKILL.md и подхватится в следующей сессии.

Что делает wiki-synthesize?

Ищет концепции, которые часто встречаются на одних страницах, но не имеют общей страницы синтеза, оценивает такие пары и создаёт для лучших кросс-связующие страницы с обратными ссылками.

Что нужно, чтобы скилл заработал?

Путь к хранилищу в OBSIDIAN_VAULT_PATH и утилита obsidian-wiki для синхронизации индекса, лога и кэша. Поиск обратных ссылок идёт через rg.

Исходный текст

SKILL.md · MIT
---
name: wiki-synthesize
description: >
  Find recurring concept combinations across the wiki that lack an explicit synthesis page, then create cross-cutting synthesis pages. Use for knowledge synthesis after the vault has accumulated enough material.
---

# Wiki Synthesize — First-Class Synthesis Discovery

You are scanning the wiki for concepts that co-occur across many pages but have no dedicated synthesis page connecting them. Your job is to surface these gaps and fill the most valuable ones with cross-cutting synthesis pages.

## Before You Start

**Writing profile:** Before drafting or rewriting natural-language Markdown, read and apply the `Writing Profile Resolution` section in `llm-wiki/SKILL.md`. Framework schema, provenance, safety, and operation-specific requirements take precedence.
`WRITING.md` preferences apply only to newly drafted or rewritten natural-language Markdown; preserve source content and structured records.

1. **Resolve config** — follow the Config Resolution Protocol in `llm-wiki/SKILL.md` (inline `@name` override → walk up CWD for `.env` → global config → prompt setup). This gives `OBSIDIAN_VAULT_PATH` and `OBSIDIAN_LINK_FORMAT` (default: `wikilink`).
2. Read `index.md` to get the full page inventory.
3. Read `hot.md` if it exists — it surfaces recent activity and active threads that may already point to synthesis opportunities.
4. Read `_meta/taxonomy.md` to understand the tag vocabulary.

When writing internal links in synthesis pages, apply the link format from `llm-wiki/SKILL.md` (Link Format section) using the `OBSIDIAN_LINK_FORMAT` value.

## Step 1: Build the Co-occurrence Map

Scan every non-special page in the vault (skip `index.md`, `log.md`, `hot.md`, `_insights.md`, `_meta/*`, `_archives/*`, `_raw/*`).

For each page, collect:
- All `[[wikilinks]]` it contains (outgoing links)
- Its `tags` frontmatter
- Its `category` frontmatter

Build a co-occurrence matrix: for every pair of concept/entity pages (A, B), count how many other pages link to **both** A and B. This is their co-occurrence score.

You don't need to be exhaustive — aim for the top 20-30 pairs by co-occurrence score. Use Grep to find backlinks efficiently:

```bash
rg -l --glob '*.md' "\[\[ConceptA\]\]" "$OBSIDIAN_VAULT_PATH"
```

Run this for your top candidate concepts and intersect the result sets.

## Step 2: Filter Out Already-Synthesized Pairs

Check the `synthesis/` directory for existing pages. For each existing synthesis page:
- Read its `sources` frontmatter or its body for `[[wikilinks]]`
- Mark those concept pairs as already covered

Remove covered pairs from your candidate list.

## Step 3: Score and Rank Candidates

For each remaining candidate pair (or cluster of 3+), assign a synthesis value score:

| Signal | Points |
|---|---|
| Co-occurrence count ≥ 5 | +3 |
| Co-occurrence count 3-4 | +2 |
| Co-occurrence count 1-2 | +1 |
| Concepts are in different categories (cross-domain) | +2 |
| Concepts share tags but live in different folders | +1 |
| One or both concepts are tagged as hubs in `_insights.md` | +1 |
| A synthesis would resolve a flagged contradiction | +2 |

Pick the top 5 candidates. If the user asked for a specific topic ("synthesize everything about observability"), filter candidates to that domain first.

## Step 4: Draft Synthesis Pages

For each top candidate, create a page in `synthesis/` using this template:

```markdown
---
title: <Concept A> × <Concept B>
category: synthesis
tags: [<shared tags>, <domain tags>]
sources: [<all pages that link to both>]
created: TIMESTAMP
updated: TIMESTAMP
summary: "Cross-cutting synthesis of how <A> and <B> interact, with implications for <domain>."
provenance:
  extracted: 0.2
  inferred: 0.7
  ambiguous: 0.1
base_confidence: <min(base_confidence of all input pages)>
lifecycle: draft
lifecycle_changed: TIMESTAMP_DATE
---

# <Concept A> × <Concept B>

## The Connection

*What makes these two concepts worth synthesizing together — the non-obvious relationship that pages about each individually don't capture.*

## Where They Co-occur

*The pages and contexts where both appear. What situations bring them together.*

## Cross-cutting Insight

*The conclusion that only becomes visible when you look at both together. This is the point of the page — the thing you couldn't see from either concept page alone.*

## Tensions and Trade-offs

*Where the two concepts pull in opposite directions. Unresolved contradictions. Cases where applying one undermines the other.*

## Strongest Objection

*The best skeptical reading of THIS page's cross-cutting insight — the case a sharp critic would make that the connection is spurious, overstated, or an artifact of how the sources were written. Follow it with a testable search query (e.g. `> test: does X actually hold when Y is controlled for?`), never an invented citation. A synthesis that can't name its own strongest objection hasn't earned its conclusion.*

## Open Questions

*What this synthesis surfaces that the wiki doesn't yet have an answer for. Good candidates for future research.*

## Related

- [[<Concept A>]]
- [[<Concept B>]]
- [[<other related pages>]]
```

**Synthesis pages are mostly `^[inferred]`.** You are drawing connections across sources — that's synthesis by definition. Apply `^[inferred]` to cross-cutting conclusions and `^[ambiguous]` where sources disagree.

**The title format is `A × B`** — this signals to readers that it's a synthesis page, not a page about either concept alone.

## Step 5: Back-link from Source Pages

For each synthesis page you created, add a link to it from the two (or more) concept pages it synthesizes. In the concept page, add to its `## Related` section:

```markdown
- [[Concept A × Concept B]] — synthesis
```

If the concept page has no `## Related` section, add one at the bottom.

## Step 6: Report Synthesis Opportunities Not Taken

After creating pages for the top 5, list the next 10 candidates in your output — pairs that scored well but you didn't write pages for. This gives the user visibility into what the wiki thinks is worth exploring without forcing every synthesis in one run.

Format:
```
Skipped (consider next time):
- [[Caching]] × [[Consistency]] — co-occurs in 4 pages, cross-domain
- [[Testing]] × [[Observability]] — co-occurs in 3 pages, shares tags
...
```

## Step 7: Update Special Files

One locked call updates the index, the log, and the hot cache:

```bash
obsidian-wiki memory sync WIKI_SYNTHESIZE \
  pages_scanned=<N> synthesis_created=<M> candidates_skipped=<K> \
  --takeaways "Synthesized 5 cross-cutting pages: Caching × Consistency, Testing × Observability, …"
```

Open questions the synthesis surfaced are threads, not takeaways — record each one:
`obsidian-wiki memory todo add "<question>" --origin synthesis/<page>.md`.

Never hand-edit `index.md`, `log.md`, or `hot.md` — the command takes the lock that keeps a parallel writer from dropping your update.

See `.skills/llm-wiki/references/MEMORY.md` for the full procedure.

## Quality Checklist

- [ ] Every synthesis page has a `summary:` field (≤200 chars)
- [ ] Every synthesis page links back to its source concepts
- [ ] Source concept pages link forward to the synthesis page
- [ ] No synthesis page just restates what's already on the source pages — it must add a cross-cutting insight
- [ ] Every synthesis page names its Strongest Objection with a testable search query (not an invented source)
- [ ] `index.md` and `log.md` updated
- [ ] `hot.md` updated

## Tips

- **A synthesis page that only summarizes its sources is useless.** The value is the connection — the thing neither source page says explicitly.
- **Don't synthesize for synthesis's sake.** If two concepts just happen to appear together a lot without a real conceptual link, skip them.
- **Three-way syntheses are powerful but rare.** Only create them when three concepts form a genuine triangle of mutual influence — not just because all three appear in the same project page.
- **Check `_insights.md` first.** The wiki-status skill may have already flagged synthesis candidates there — start with those before running the co-occurrence scan from scratch.

## QMD Refresh After Vault Writes

QMD is a search index, not the source of truth. If `$QMD_WIKI_COLLECTION` is empty or unset, skip this step. Run it only after this skill has written or rewritten vault markdown. If QMD refresh fails, do not roll back the vault changes; report the QMD status separately.

Use `$QMD_CLI` if set; otherwise use `qmd`.

```bash
${QMD_CLI:-qmd} update
```

If the output says vectors are needed or embeddings may be stale, run:

```bash
${QMD_CLI:-qmd} embed
```

Verify the collection with either:

```bash
${QMD_CLI:-qmd} ls "$QMD_WIKI_COLLECTION"
```

or, when a specific page path is known:

```bash
${QMD_CLI:-qmd} get "qmd://$QMD_WIKI_COLLECTION/<page>.md" -l 5
```

Record one of:
- `QMD refreshed: update + embed + verified`
- `QMD refreshed: update only + verified`
- `QMD skipped: QMD_WIKI_COLLECTION unset`
- `QMD skipped: qmd CLI unavailable`
- `QMD failed: <short error summary>`

© Ar9av · MIT · Ar9av/obsidian-wiki

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой