LLM Wiki
lewislulu/llm-wiki-skill
Build and maintain a Karpathy-style LLM knowledge base — a self-compiling Obsidian markdown wiki where an Agent ingests raw sources, compiles cross-linked concept/entity/summary pages, answers…
Find recurring concept combinations across the wiki that lack an explicit synthesis page, then create cross-cutting synthesis pages.
$ npx skills add Ar9av/obsidian-wiki --skill wiki-synthesize -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Ar9av/obsidian-wiki wiki-synthesize --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Ar9av/obsidian-wiki.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.skills/wiki-synthesize .claude/skills/wiki-synthesize && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "wiki-synthesize" agent skill from https://github.com/Ar9av/obsidian-wiki/tree/main/.skills/wiki-synthesize into .claude/skills/wiki-synthesize/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "wiki-synthesize", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Ar9av/obsidian-wiki/tree/main/.skills/wiki-synthesizeType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Ar9av/obsidian-wiki --skill wiki-synthesize -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Ar9av/obsidian-wiki wiki-synthesize --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Ar9av/obsidian-wiki.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.skills/wiki-synthesize .agents/skills/wiki-synthesize && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "wiki-synthesize" agent skill from https://github.com/Ar9av/obsidian-wiki/tree/main/.skills/wiki-synthesize into .agents/skills/wiki-synthesize/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "wiki-synthesize", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Ar9av/obsidian-wiki --skill wiki-synthesize -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Ar9av/obsidian-wiki wiki-synthesize --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Ar9av/obsidian-wiki.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.skills/wiki-synthesize .cursor/skills/wiki-synthesize && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "wiki-synthesize" agent skill from https://github.com/Ar9av/obsidian-wiki/tree/main/.skills/wiki-synthesize into .cursor/skills/wiki-synthesize/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "wiki-synthesize", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Ar9av/obsidian-wiki.git --path .skills/wiki-synthesize--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Ar9av/obsidian-wiki --skill wiki-synthesize -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Ar9av/obsidian-wiki wiki-synthesize --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Ar9av/obsidian-wiki.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.skills/wiki-synthesize .gemini/skills/wiki-synthesize && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "wiki-synthesize" agent skill from https://github.com/Ar9av/obsidian-wiki/tree/main/.skills/wiki-synthesize into .gemini/skills/wiki-synthesize/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "wiki-synthesize", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Ar9av/obsidian-wiki wiki-synthesizeInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Ar9av/obsidian-wiki --skill wiki-synthesize -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Ar9av/obsidian-wiki.git skills-src && mkdir -p .github/skills && cp -r skills-src/.skills/wiki-synthesize .github/skills/wiki-synthesize && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "wiki-synthesize" agent skill from https://github.com/Ar9av/obsidian-wiki/tree/main/.skills/wiki-synthesize into .github/skills/wiki-synthesize/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "wiki-synthesize", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Ar9av/obsidian-wiki --skill wiki-synthesize -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Ar9av/obsidian-wiki wiki-synthesize --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Ar9av/obsidian-wiki.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.skills/wiki-synthesize .opencode/skills/wiki-synthesize && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "wiki-synthesize" agent skill from https://github.com/Ar9av/obsidian-wiki/tree/main/.skills/wiki-synthesize into .opencode/skills/wiki-synthesize/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "wiki-synthesize", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
wiki-synthesizeFind recurring concept combinations across the wiki that lack an explicit synthesis page, then create cross-cutting synthesis pages.
Wiki Synthesize is an agent skill from Ar9av/obsidian-wiki. 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.
Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Knowledge Management, covering LLM wikis. It works with Obsidian. The repository describes itself as: Framework for AI agents to build and maintain a digital brain through Obsidian wiki | Memory System for Agents. The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 4a0630b. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
rgFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Wiki Synthesize loads about 2.3k tokens when it runs. Until then it costs about 56 tokens; SKILL.md has 911 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
line `@name` override → walk up CWD for `.env` → global config → prompt setup). This gives `OBSIDIAN_VAULT_PATH` and `OBAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from Ar9av/obsidian-wiki at commit 4a0630b, republished under its MIT licence (© Ar9av). 911 words, ~2,278 tokens.
.claude/skills/wiki-synthesize/SKILL.md (or your agent's skills folder).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.
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.
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).index.md to get the full page inventory.hot.md if it exists — it surfaces recent activity and active threads that may already point to synthesis opportunities._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.
Scan every non-special page in the vault (skip index.md, log.md, hot.md, _insights.md, _meta/*, _archives/*, _raw/*).
For each page, collect:
[[wikilinks]] it contains (outgoing links)tags frontmattercategory frontmatterBuild 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.
Check the synthesis/ directory for existing pages. For each existing synthesis page:
sources frontmatter or its body for [[wikilinks]]Remove covered pairs from your candidate list.
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.
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.
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.
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
...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.
summary: field (≤200 chars)index.md and log.md updatedhot.md updated_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 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} updateIf the output says vectors are needed or embeddings may be stale, run:
${QMD_CLI:-qmd} embedVerify 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 5Record one of:
QMD refreshed: update + embed + verifiedQMD refreshed: update only + verifiedQMD skipped: QMD_WIKI_COLLECTION unsetQMD skipped: qmd CLI unavailableQMD failed: <short error summary>© Ar9av, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .skills/wiki-synthesize of Ar9av/obsidian-wiki.
Open the folder on GitHubat commit 4a0630b
Wiki Synthesize next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Wiki Synthesize this skillAr9av/obsidian-wiki | 3.5k | — | ~2.3k | Automated safety check: Notes | MIT | |
| LLM Wikilewislulu/llm-wiki-skill | 655 | — | ~3.7k | Automated safety check: Pass | None | |
| LLM Wikizosmaai/pi-llm-wiki | 608 | — | ~4.4k | Automated safety check: Pass | MIT | |
| LLM Wikipraneybehl/llm-wiki-plugin | 118 | — | ~5.7k | Automated safety check: Pass | MIT | |
| Karpathy WikiSherwinQ/karpathy-wiki | 114 | — | ~967 | Automated safety check: Pass | MIT | |
| My LLM WikiMartinLwx/dotfiles | 140 | — | ~2.7k | Automated safety check: Pass | None |
lewislulu/llm-wiki-skill
Build and maintain a Karpathy-style LLM knowledge base — a self-compiling Obsidian markdown wiki where an Agent ingests raw sources, compiles cross-linked concept/entity/summary pages, answers…
zosmaai/pi-llm-wiki
Build and maintain a persistent, interlinked Obsidian-compatible markdown wiki using Karpathy's LLM Wiki pattern.
praneybehl/llm-wiki-plugin
Build and maintain an LLM-curated knowledge base from papers, articles, transcripts, notes and project findings.
SherwinQ/karpathy-wiki
A skill your agent uses when building or maintaining a personal knowledge base with LLM assistance.
MartinLwx/dotfiles
Provides access to the user's personal wiki, including notes, research, project documentation, decisions, and archived knowledge.
xoai/sage-wiki
Reference skill for sage-wiki — local-first knowledge graph with MCP server, REST API, compiled wiki, and Obsidian-compatible output.
Ar9av/obsidian-wiki
Ingest Codex CLI conversation/session history into Obsidian as distilled knowledge.
Ar9av/obsidian-wiki
Ingest GitHub Copilot CLI/session history into Obsidian as distilled knowledge.
Ar9av/obsidian-wiki
Ingest Hermes agent history into Obsidian as distilled knowledge.
Ar9av/obsidian-wiki
Adjust the user's Obsidian visual layout with CSS snippets. An agent skill from Ar9av/obsidian-wiki.
Ar9av/obsidian-wiki
Ingest OpenClaw session/history data into Obsidian as distilled knowledge.
Ar9av/obsidian-wiki
Turn the current conversation or finding into a structured permanent wiki note.
Works with
Categories
Find recurring concept combinations across the wiki that lack an explicit synthesis page, then create cross-cutting synthesis pages. Wiki Synthesize is an agent skill from Ar9av/obsidian-wiki. Find recurring concept combinations across the wiki that lack an explicit synthesis page, then create cross-cutting synthesis pages.
Wiki Synthesize fits situations like: knowledge synthesis after the vault has accumulated enough material; tasks that involve LLM wikis.
Run `npx skills add Ar9av/obsidian-wiki --skill wiki-synthesize -a claude-code`. Or copy the skill folder (.skills/wiki-synthesize in Ar9av/obsidian-wiki) into .claude/skills/wiki-synthesize in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Ar9av/obsidian-wiki --skill wiki-synthesize -a codex`. Or copy the skill folder (.skills/wiki-synthesize in Ar9av/obsidian-wiki) into .agents/skills/wiki-synthesize in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Ar9av/obsidian-wiki --skill wiki-synthesize -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/wiki-synthesize, .gemini/skills/wiki-synthesize, .github/skills/wiki-synthesize and .opencode/skills/wiki-synthesize in your project.
Going by SKILL.md and its folder, Wiki Synthesize needs the command-line tools its instructions call (rg).
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Wiki Synthesize is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.3k tokens (SKILL.md is roughly 9.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Wiki Synthesize: LLM Wiki (lewislulu/llm-wiki-skill, 655 stars), LLM Wiki (zosmaai/pi-llm-wiki, 608 stars), LLM Wiki (praneybehl/llm-wiki-plugin, 118 stars) and Karpathy Wiki (SherwinQ/karpathy-wiki, 114 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Ar9av (a GitHub user) maintains it in Ar9av/obsidian-wiki, which has 3,544 GitHub stars. The repository holds 39 skills in this directory. The repository was last updated on October 8, 2026.
Source: Ar9av/obsidian-wiki on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.