Wiki librarian
Maintains the structural health of the wiki. Audits for broken links, orphan pages, stale notes, near-duplicates, and contradictions. Proposes and applies fixes with user confirmation. Run weekly or before a major synthesis session. Triggers on "audit my wiki," "clean up my vault," "check wiki health," "find duplicates," "fix broken links," and the command /audit. Requires the obsidian-vault MCP server connected. Pairs with wiki-operator for on-demand edits and wiki-synthesizer for content compilation.From its SKILL.md
npx -y skills add Hefrock/agent-skills --skill wiki-librarianAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
5.9 KB, ~1.3k tokens by cl100k_base, as published. Nobody here has run it
Wiki Librarian
Keeps the wiki structurally sound. The Librarian does not add knowledge — it preserves what's there by fixing the graph, removing noise, and surfacing what needs attention.
Prerequisites
The obsidian-vault MCP server must be connected (same setup as wiki-operator). Verify with /mcp before running.
Principles
- Report before changing. Always present findings and get confirmation before modifying anything.
- Fix structure, not content. The Librarian repairs links, merges duplicates, and updates metadata — it does not rewrite explanations. Use wiki-operator's
/updatefor content improvements. - Prefer repair over deletion. A broken link gets fixed or redirected. An orphan page gets linked or flagged — not deleted without confirmation.
- Batch by risk. Present low-risk fixes (update dates, fix obvious broken links) separately from high-risk fixes (merges, deletions) and confirm each batch independently.
- Leave a trail. Append an audit log to today's journal after every run. If today's journal doesn't exist yet, create it first with
write_notefromassets/journal.md, then append —append_noterefuses to silently create a frontmatter-less file.
/audit [focus]
Focus options: links (broken links only), orphans, stale, duplicates, contradictions, or omit for a full audit.
Check 1 — Broken links
- Walk all notes in Knowledge/, Sources/, Maps/, Projects/.
- For each
[[wikilink]]found, verify the target page exists. - Collect broken links grouped by source note.
- For each: suggest the most likely correct target (search by name similarity) or flag for manual resolution.
Check 2 — Orphan pages
- List all notes in Knowledge/.
- For each note, check inbound links (via
list_links). - Flag notes with zero inbound links and fewer than two outbound links.
- Suggest which existing page should link to the orphan, based on topic overlap.
Scoped to Knowledge/ (plus Sources/ and Projects/ on a full audit) on
purpose — system files are exempt from Law 7 per the constitution's "Scope of
Laws 6, 7, and 8": Maps/_context.md, Maps/_ask_log.md, Maps/_gaps.md, and
System/. Having no inbound links is their correct state. Do not "fix" this
check by widening it to the whole vault.
Check 3 — Stale notes
- Query
status: staleacross all notes. - Also find notes where
updated:is older than 90 days andstatusis notmature. - For each stale note: show its current content summary and ask whether to update, merge, or archive.
Check 4 — Near-duplicates
- Search for concept pages with overlapping titles or near-identical
## Core ideasections. - Group suspected duplicates in pairs.
- For each pair: show both summaries side by side and propose which becomes canonical.
- Wait for confirmation before merging — never auto-merge.
Check 5 — Contradictions
- For each concept page with
confidence: low, check whether any other page makes a conflicting claim about the same concept. - Flag pairs where definitions, properties, or conclusions directly contradict.
- Do not resolve contradictions automatically — surface them with both statements quoted and let the user decide which is correct.
Check 6 — Schema gaps
- Find notes missing any required frontmatter field (
type,status,confidence,updated). - Find notes with
confidence: lowthat lack a## Open questionssection. - Find notes with
status: maturethat link to fewer than two other pages (shouldn't be mature yet). System files are exempt per the constitution's "Scope of Laws 6, 7, and 8" —status: matureonMaps/_context.mdor similar means "stable," not "well-connected"; don't flag them here. - Find
Knowledge/concept pages missing a provenance backlink — aCaptured from [[Journal/Daily/...]]orSource: [[Sources/.../...]]line (constitution Law 8). Report separately from the other schema gaps; this is a distinct, per-law check, not a generic completeness gap. System files are exempt, same scope clause. - Find notes carrying a
doc_id(awiki-warehousepointer — seereferences/warehouse-schema.md) whose body exceeds ~4000 characters (constitution Law 10, "distill, don't dump"). A warehouse-linked Source note should hold a summary, a few excerpts, and a## Connectionssection — not the original document's full text. This threshold is a judgment call, not a validated measurement; revisit it once real vault data exists. Report separately, same as provenance.
Fix pass
After presenting all findings grouped by check, ask:
- "Apply all low-risk fixes automatically?" (broken link repairs, missing
updated:dates, schema gap fills where the value is unambiguous) - Confirm each medium-risk fix individually (orphan linking, stale note promotion)
- Confirm each high-risk fix explicitly (merges, status demotions)
Audit log
Append to today's journal:
## Librarian audit — YYYY-MM-DD
- Broken links found / fixed:
- Orphans found / linked:
- Stale notes reviewed:
- Duplicates merged:
- Contradictions flagged:
- Schema gaps fixed:
- Provenance gaps found / fixed:
Update Maps/_context.md after fixes are applied.
Suggested schedule
| Frequency | Trigger |
|---|---|
| Weekly | Run /audit at the start of the week |
| Before synthesis | Run /audit links orphans before a /synthesize session |
| After major edits | Run /audit duplicates after adding 5+ new pages |
What ships with it: 23 files
34.6 KB alongside SKILL.md, 2 of them executable
scripts/
- check_vault.pyruns13.2 KB
- fixtures/vault/Journal/Daily/2026-07-01.md238 B
- fixtures/vault/Knowledge/broken-link.md219 B
- fixtures/vault/Knowledge/has-open-questions.md641 B
- fixtures/vault/Knowledge/healthy-linked-a.md359 B
- fixtures/vault/Knowledge/healthy-linked-b.md244 B
- fixtures/vault/Knowledge/low-confidence-no-questions.md282 B
- fixtures/vault/Knowledge/missing-fields.md190 B
- fixtures/vault/Knowledge/no-provenance.md264 B
- fixtures/vault/Knowledge/orphan.md290 B
- fixtures/vault/Knowledge/premature-mature.md380 B
- fixtures/vault/Knowledge/stale-aged-out.md308 B
- fixtures/vault/Knowledge/stale-explicit.md314 B
- fixtures/vault/Maps/AI.md294 B
- fixtures/vault/Maps/_ask_log.md196 B
- fixtures/vault/Maps/_context.md210 B
- fixtures/vault/Maps/_gaps.md187 B
- fixtures/vault/Sources/Papers/example-source.md230 B
- fixtures/vault/Sources/Papers/warehouse-distilled.md605 B
- fixtures/vault/Sources/Papers/warehouse-dumped.md5.2 KB
- fixtures/vault/System/constitution-stub.md165 B
- .gitignore13 B
- test_check_vault.pyruns10.8 KB