wiki-synthesize
Skill3 starsChanged 12 days agoMITView on GitHub
Systematically discover synthesis opportunities across the Obsidian wiki — pairs or clusters of concepts that co-occur frequently across pages but have no synthesis page connecting them. Creates new synthesis/ pages that draw explicit cross-cutting conclusions. Use when the user says "synthesize my wiki", "find connections", "what concepts keep coming up together", "/wiki-synthesize", or after a large ingest when the vault has grown significantly.
- Reads credentials
3 other projects use a version of this, 2 of them edited.
Adopted by
Most recently taken up by
- Ar9av/obsidian-wikiedited, first seen Nov 8, 2026
- sponge-b0b/Polaristheir own version, first seen Aug 3, 2026
- Ivy-Chen1999/llm-wiki-kitedited, first seen Jun 23, 2026
Other versions3 projects use a version of this.
Word for word · 0
None found.
Edited · 2
- Ar9av/obsidian-wiki★ 3.7k76% same
- Ivy-Chen1999/llm-wiki-kit★ 2195% same
Wrote their own version · 1
- sponge-b0b/Polaris★ 4same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository30 other files it gives its agents.
- claude-history-ingestSkill
- cross-linkerSkill
- daily-updateSkill
- graph-colorizeSkill
- hermes-history-ingestSkill
- impl-validatorSkill
- llm-wikiSkill
- memory-bridgeSkill
- skill-creatorSkill
- tag-taxonomySkill
- vault-skill-factorySkill
- wiki-agentSkill
- wiki-captureSkill
- wiki-context-packSkill
- wiki-dashboardSkill
- wiki-dedupSkill
- wiki-digestSkill
- wiki-exportSkill
- wiki-history-ingestSkill
- wiki-importSkill
- wiki-ingestSkill
- wiki-lintSkill
- wiki-querySkill
- wiki-rebuildSkill
- wiki-researchSkill
- wiki-setupSkill
- wiki-stage-commitSkill
- wiki-statusSkill
- wiki-switchSkill
- wiki-updateSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
13 rules. 5 are common, 0 are distinctive, and 8 are very specific to this project.
5
Common
Most of the 3 edited versions we read keep these.
0
Distinctive
This author's own choices. Worth a look.
8
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 18
Read index.md to get the full page inventory.
- Very specific: line 19
Read hot.md if it exists — it surfaces recent activity and active threads that may already point to synthesis opportunities.
- Very specific: line 20
Read _meta/taxonomy.md to understand the tag vocabulary.
- Very specific: line 23
When writing internal links in synthesis pages, apply the link format from llm-wiki/SKILL.md (Link Format section) using the …
- Common: line 42
Run this for your top candidate concepts and intersect the result sets.
- Very specific: line 46
Check the synthesis/ directory for existing pages (when it's a shared catch-all folder, the synthesis pages are the ones whose category: is …
- Very specific: line 47
Read its sources frontmatter or its body for [[wikilinks]]
- Common: line 50
Remove covered pairs from your candidate list.
- Very specific: line 135
If the concept page has no ## Related section, add one at the bottom.
- Common: line 139
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.
- Common: line 173
Don't synthesize for synthesis's sake: If two concepts just happen to appear together a lot without a real conceptual link, skip them.
- Common: line 174
Three-way syntheses are powerful but rare: Only create them when three concepts form a genuine triangle of mutual influence — not just …
- Very specific: line 182
When it is set, read llm-wiki/references/qmd.md and follow the *Refresh* section after this skill has written vault markdown.
“Common” is measured: kept by at least 6 in 10 of the 3 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
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
- Resolve config — follow the Config Resolution Protocol in
llm-wiki/SKILL.md(inline@nameoverride → walk up CWD for.env→~/.llm-wiki/config→ prompt setup). This givesOBSIDIAN_VAULT_PATHandOBSIDIAN_LINK_FORMAT(default:wikilink). - Read
index.mdto get the full page inventory. - Read
hot.mdif it exists — it surfaces recent activity and active threads that may already point to synthesis opportunities. - Read
_meta/taxonomy.mdto understand the tag vocabulary. - Find the synthesis folder: the CATEGORIES row with the
synthesisrole inAGENTS.md(orroles.synthesisfromllm-wiki layout --json). It'ssynthesis/in a standard vault; when no row claims the role, it's the catch-all folder. "synthesis/" below means that folder.
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
tagsfrontmatter - Its
categoryfrontmatter
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:
grep -rl "\[\[ConceptA\]\]" "$OBSIDIAN_VAULT_PATH" --include="*.md"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 (when it's a shared catch-all folder, the synthesis pages are the ones whose category: is synthesis or that combine several pages). For each existing synthesis page:
- Read its
sourcesfrontmatter 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:
---
title: <Concept A> × <Concept B>
category: synthesis # the folder you wrote it to (in a single-folder vault: 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:
- [[Concept A × Concept B]] — synthesisIf 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
index.md — Add entries for all new synthesis pages.
log.md — Append:
- [TIMESTAMP] WIKI_SYNTHESIZE pages_scanned=N synthesis_created=M candidates_skipped=Khot.md — Read $OBSIDIAN_VAULT_PATH/hot.md (create from the template in wiki-ingest if missing). Update Recent Activity with what was synthesized — e.g. "Synthesized 5 cross-cutting pages: Caching × Consistency, Testing × Observability, …". Update Active Threads with any open questions the synthesis surfaced. Update updated timestamp.
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.mdandlog.mdupdatedhot.mdupdated
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.mdfirst. 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
GUARD: If $QMD_WIKI_COLLECTION is unset — the default — skip this step. QMD is a
search index, not the source of truth.
When it is set, read llm-wiki/references/qmd.md and follow the Refresh section
after this skill has written vault markdown. If refresh fails, do not roll back the
vault changes; report the QMD status separately.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

