wiki-graph
Skill1 starsChanged 7 months agoApache-2.0View on GitHub
Build a typed knowledge graph (Understand-Anything-compatible JSON) from a vault's wiki — articles, entities, claims, sources, topics, and their relationships — so it can be visualised in an interactive graph dashboard. Use when the user says "build the knowledge graph", "graph my vault", "make a knowledge-graph.json", "visualise my wiki as a graph", "/wiki-graph", "construis le graphe de connaissance", "graphe du vault", or wants to explore their wiki's structure visually / feed it to Understand-Anything's dashboard.
2 other projects use a version of this.
Adopted by
Most recently taken up by
- leiverkus/research-superpowerstheir own version, first seen Nov 1, 2026
- galaxyuliana/wiki-graphtheir own version, first seen Jul 20, 2026
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 2
- leiverkus/research-superpowers★ 4same name
- galaxyuliana/wiki-graph★ 0same 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 repository49 other files it gives its agents.
- AGENTS.mdAGENTS.md
- auto-modeSkill
- autoresearchSkill
- bind-workspaceSkill
- build-search-indexSkill
- canvasSkill
- conventionsSkill
- decision-consolidateSkill
- defuddleSkill
- discover-list-filesSkill
- discover-list-vaultsSkill
- force-new-port-startSkill
- hot-compactSkill
- lockSkill
- manage-deleteSkill
- manage-moveSkill
- meta-attach-vaultSkill
- meta-audit-bridge-readinessSkill
- meta-setupSkill
- meta-statusSkill
- meta-sync-templateSkill
- obsidian-basesSkill
- obsidian-markdownSkill
- read-frontmatterSkill
- read-getSkill
- read-searchSkill
- read-search-smartSkill
- saveSkill
- sync-from-githubSkill
- template-executeSkill
- unlockSkill
- who-is-speakingSkill
- wiki-boundarySkill
- wiki-exportSkill
- wiki-foldSkill
- wiki-ingestSkill
- wiki-lintSkill
- wiki-neighborsSkill
- wiki-pathSkill
- wiki-querySkill
- wiki-refresh-digestsSkill
- wikiSkill
- wiki-tourSkill
- write-appendSkill
- write-bundleSkill
- write-create-or-replaceSkill
- write-frontmatter-mergeSkill
- write-frontmatter-setSkill
- write-patchSkill
The file
We split this skill into the rules it gives an agent
4 rules. About 0 are common, 1 is distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- could be automatic: a setting could enforce it
- Very specific: line 88
Run /understand-dashboard <vault-path> — it reads our JSON directly (no need to run /understand-knowledge.
- Distinctive: line 100
Don't hand-edit the generated JSON — it's derived.
- Very specific: line 101
Don't add wiki-meta/graph/ or .understand-anything/ as *content* sources — they're derived artifacts, excluded by the default .wikiignore.
- Very specific: line 102
Don't expect builds_on/contradicts edges yet — those need the LLM enrich pass (roadmap #1 step 3), not in this deterministic version.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
wiki-graph
Assemble a typed knowledge graph from a vault's wiki and write it as JSON. The graph uses the Understand-Anything schema verbatim (Lum1104/Understand-Anything) so it can be visualised directly in that plugin's dashboard — see "Viewing it" below. Reference: [[understand-anything-roadmap]] item #1.
This skill is the deterministic core (--deterministic-only semantics): it maps existing vault data into a graph with no LLM calls. The LLM enrichment layers (auto-generating missing digests, discovering builds_on/contradicts edges) and Louvain community detection are roadmap follow-ons, not in this version.
What it produces
A knowledge-graph.json written to two locations:
| Path | Role |
wiki-meta/graph/knowledge-graph.json | Canonical source of truth — read by the future native viewer, agents, get_wiki_context_pack. |
.understand-anything/knowledge-graph.json | Derived copy — read directly by Understand-Anything's /understand-dashboard (zero extra step). |
Both files are byte-identical. The derived copy is regenerated each run.
How the graph is built (deterministic)
| Vault data | → Graph |
each wiki/ page | article node (with knowledgeMeta: wikilinks, frontmatter) |
digest concepts (wiki-meta/digests/) | entity nodes (deduped globally) + related edges |
digest claims | claim nodes (page-namespaced) + related edges |
[[wikilinks]] between pages | related edges |
referenced sources — frontmatter sources:, ^[file:42-58] citations, ![[x.pdf]] embeds | source nodes (lightweight, unparsed) + cites edges |
wiki-meta/catalog.md sections | topic nodes + categorized_under edges + layers[] |
Key invariant (the binaries rule): a file a page references becomes a source node even if it matches .wikiignore. .wikiignore excludes files from becoming content (article nodes / lint / export), NOT from being referenceable as sources. So you can always trace a page back to its PDF/image and click through to it.
Pre-conditions
- Vault is online (
list_vaults). - Vault has a
wiki/directory with content pages. Richer graphs come from richer digests — if few pages have digests underwiki-meta/digests/, suggest running/wiki-refresh-digestsfirst for fuller entity/claim extraction.
Steps
1. Resolve vault + options
vault— target vault (default vault if omitted).--dry-run→ passdryRun: trueto preview counts WITHOUT writing.--no-ua-copy→ passwriteUnderstandAnythingCopy: falseto skip the.understand-anything/copy.
2. (Optional) dry-run preview
For a first build or a big vault, preview first:
mcp__obsidian-router__build_wiki_graph({ vault, dryRun: true })Report the counts (nodes/edges by type) so the user can sanity-check before writing.
3. Build + write
mcp__obsidian-router__build_wiki_graph({ vault })The tool enumerates wiki/** + wiki-meta/digests/**, reads .wikiignore + wiki-meta/catalog.md, builds the graph, validates it against the schema (refuses to write an invalid graph), and writes the two files.
4. Report
Surface the returned summary:
counts— pages, digests, nodes, edges, layers + per-type breakdownwritten— the two pathswarnings— e.g.index-not-found,no-content-pages-found,page-enumeration-truncated,understand-anything-copy-failed
5. Log
Append to wiki-meta/journal.md:
- YYYY-MM-DD HH:MM — wiki-graph — <vault> · <nodes> nodes / <edges> edges / <layers> layersViewing it (the interop — roadmap #2a)
The derived .understand-anything/knowledge-graph.json is written where Understand-Anything's dashboard expects it. To explore the graph interactively:
- Install the Understand-Anything plugin (
/plugin marketplace add Lum1104/Understand-Anything→/plugin install understand-anything). - Run
/understand-dashboard <vault-path>— it reads our JSON directly (no need to run/understand-knowledge; we already produced the graph).
A native in-Obsidian viewer (obsidian-mcp-router-graph) is the roadmap #2b deliverable — until it ships, the UA dashboard is the visualisation path.
When NOT to use
- A single page's links → use
get_wiki_context_pack(it returnsgraphNeighborsfor a query) instead of building the whole graph. - A portable text dump for an external LLM → use
wiki-export(llms.txt). - Code-repo analysis → out of scope (that's Understand-Anything's
/understandon the code side).
Anti-patterns
- Don't hand-edit the generated JSON — it's derived; re-run the skill instead.
- Don't add
wiki-meta/graph/or.understand-anything/as content sources — they're derived artifacts, excluded by the default.wikiignore. - Don't expect
builds_on/contradictsedges yet — those need the LLM enrich pass (roadmap #1 step 3), not in this deterministic version.
Quirks
- Deterministic given fixed input: same vault state ⇒ same graph (only
project.analyzedAtvaries by run). - Enumeration is bounded (5000 files / depth 12); a
*-enumeration-truncatedwarning means the vault exceeded a bound. layers[]currently come fromcatalog.mdsections. Louvain community detection (roadmap #4, folded into #1) will enrich them later.
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.

