Skip to content
cccskills
FreePublished on GitHub

wiki-synthesize

Find concepts repeatedly linked together across an Obsidian wiki and create synthesis pages that explain their connections, trade-offs, and open questions. Add links between the new pages and their source concepts.

OriginalShow the original 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.

See how to install

Good for

  • Connect ideas scattered across research notes
  • Explore relationships between concepts from different fields
  • Identify contradictions and questions for further research
  • Find promising topics for future synthesis

Files included (1)

  • SKILL.md9.0 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

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:

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:

SignalPoints
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
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]] — 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:

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.

${QMD_CLI:-qmd} update

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

${QMD_CLI:-qmd} embed

Verify the collection with either:

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

or, when a specific page path is known:

${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>

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Extract reusable knowledge from Claude Code conversations, memory files, and desktop agent audit logs. Organize findings by topic in Obsidian, preserving source attribution and distinguishing project details from patterns shared across projects.

  • Preserve project decisions from past Claude sessions
  • Turn debugging conversations into reusable notes
  • Document workflows found in desktop audit logs
Ar9av/obsidian-wiki3.6KUpdated Oct 21, 2026

code-understand

FreeSummary

Explore an unfamiliar codebase before editing it. Produce a ranked map of important files, functions, callers, and dependencies, with source locations and evidence types to guide code reading and assess the likely impact of changes.

  • Understanding an unfamiliar module before editing
  • Finding callers of a function
  • Assessing the impact of changed files
Ar9av/obsidian-wiki3.6KUpdated Oct 21, 2026

Extract reusable knowledge from Codex CLI conversation and session logs, then organize it into topic-based Obsidian wiki pages. Combine insights across sessions, process new or changed files, and remove sensitive information rather than copying raw transcripts.

  • Turning Codex conversations into reusable wiki knowledge
  • Adding only new or changed session history
  • Consolidating recurring debugging techniques across sessions
Ar9av/obsidian-wiki3.6KUpdated Oct 21, 2026

Turn GitHub Copilot CLI and VS Code conversation history into topic-based Obsidian wiki pages. Extract decisions, debugging approaches, and project knowledge from summaries, conversations, and saved notes, processing only new or changed sessions by default.

  • Preserve design decisions from past Copilot conversations
  • Combine debugging knowledge across multiple sessions
  • Add knowledge from new or updated sessions
Ar9av/obsidian-wiki3.6KUpdated Oct 21, 2026

cross-linker

FreeSummary

Find missing references between wiki pages using names, aliases, shared tags, and project context. Add links in the text or a related section, record relationship types, and report confidence levels and pages that remain disconnected.

  • Connect newly imported pages to existing wiki content
  • Turn unlinked mentions of page names into references
  • Find disconnected pages and project filing candidates
Ar9av/obsidian-wiki3.6KUpdated Oct 21, 2026

daily-update

FreeSummary

Maintain an Obsidian wiki by checking source freshness, updating its index and activity summary, and recording maintenance status. Set up a daily 9 AM schedule and optional terminal reminders for overdue updates.

  • Refresh a wiki each morning
  • Check for changed or missing source files
  • Set up daily maintenance and terminal reminders
Ar9av/obsidian-wiki3.6KUpdated Oct 21, 2026

See all skills by Ar9av

Report a problem with this skill