wiki-operator
Skill0 starsChanged 4 months agoMITView on GitHub
Operates a Karpathy-style personal knowledge wiki by reading and writing an Obsidian vault directly via MCP — searching before creating, updating existing concept pages over adding new ones, merging duplicates, and keeping all notes linked. Use this skill for any vault operation: processing new learning into wiki notes, improving a concept page, finding connections between ideas, reviewing note quality, generating study prompts, or running maintenance. Triggers on "add this to my wiki," "update my notes on X," "what do I know about Y," "connect these ideas," "clean up my vault," and the commands /learn /update /connect /ask /review /quiz /map /source /clean /health. Requires an Obsidian MCP server connected with read and write tool access.
- Installs packages
In this repository19 other files it gives its agents.
- agent-evalSkill
- agent-redteamSkill
- broadcastSkill
- deid-reid-harnessSkill
- fiction-workshopSkill
- issue-reconcilerSkill
- privacy-linterSkill
- privacy-threat-oracleSkill
- repo-pincerSkill
- research-ledgerSkill
- review-and-planSkill
- style-obfuscatorSkill
- wiki-governorSkill
- wiki-librarianSkill
- wiki-privacy-auditSkill
- wiki-synthesizerSkill
- wiki-teacherSkill
- wiki-warehouseSkill
- my-skill-nameSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
35 rules. About 0 are common, 21 are distinctive, and 14 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈21
Distinctive · estimate
This author's own choices. Worth a look.
14
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 31
Verify with /mcp — should show obsidian-vault connected with 10 tools.
- Distinctive: line 43
Search before write: Always search the vault before creating anything.
- Distinctive: line 44
One canonical page per concept: If two pages cover the same idea, merge them — preserve both sets of details, do not truncate either.
- Distinctive: line 54
Every note must carry this frontmatter:
- Distinctive: line 114
Search the vault for existing pages on the topic.
- Distinctive: line 115
If a concept page exists: retrieve it, update the explanation, add new context, add any missing links.
- Very specific: line 116
If no page exists: create one using assets/concept.md, set status: draft.
- Very specific: line 119
Update the relevant map page in Maps/ if the concept is new to that area.
- Distinctive: line 125
Add or repair links to related concepts.
- Very specific: line 133
Add a link sentence to each page's ## Related section, naming the relationship explicitly.
- Distinctive: line 142
If the retrieved content answers the question, compose the answer from it alone:
- Very specific: line 143
Every substantive claim carries an inline [[link]] to its source note.
- Very specific: line 144
If the only relevant page is status: draft or confidence: low, say so — don't present it with more authority than the vault itself claims.
- Distinctive: line 145
If sources disagree, surface the disagreement rather than smoothing it over.
- Very specific: line 146
If the answer draws on two clusters that aren't linked to each other yet, note it and offer to run /connect.
- Very specific: line 147
If nothing vetted is found, check Journal/Daily/ as a last resort — but flag any journal-sourced content explicitly as unprocessed, not yet …
- Distinctive: line 149
If still nothing relevant exists, or what's found doesn't actually answer the question:
- Distinctive: line 159
Do not rewrite automatically.
- Distinctive: line 160
If more than three issues are found, list them and ask which to address first.
- Distinctive: line 166
Do not show answers — wait for the user to respond before discussing.
- Distinctive: line 169
Update a navigation/index page for an area of the vault.
- Distinctive: line 173
Add missing pages to the map.
- Very specific: line 178
If raw content exists in Sources/raw/, read it first.
- Very specific: line 179
Create a compiled page in the appropriate Sources/ subfolder (e.g.
- Very specific: line 184
If the source relates to an active project, add a backlink in Projects/[project].md.
- Distinctive: line 185
Delete or archive the raw file once the compiled page is complete.
- Distinctive: line 189
Search for near-duplicate concept pages (same topic, different naming).
- Distinctive: line 191
Wait for confirmation before changing anything.
- Distinctive: line 192
After confirmed: move content into the canonical page, fix or remove the absorbed page, repair backlinks throughout the vault.
- Very specific: line 203
After fixes are applied, update Maps/_context.md to reflect current vault state.
- Very specific: line 207
After any write operation, confirm in one line what changed: "Updated Knowledge/AI/transformers.md — added attention-scaling section, …
- Distinctive: line 208
Never silently create a note.
- Distinctive: line 209
Never silently merge or delete.
- Very specific: line 210
Never blend a vault-grounded answer with general knowledge without saying so explicitly (see /ask).
- Distinctive: line 211
If MCP tools are unavailable, stop and tell the user — do not simulate vault operations in the conversation.
≈ “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 Operator
Claude acts directly on an Obsidian vault via MCP — not as a suggestion engine. The wiki is the source of truth; conversations are ephemeral.
Prerequisites
The obsidian-vault MCP server (in mcp/obsidian-vault/) must be running and connected. Set it up once:
cd mcp/obsidian-vault && npm install && npm run buildAdd to ~/.claude.json:
{
"mcpServers": {
"obsidian-vault": {
"command": "node",
"args": ["/absolute/path/to/agent-skills/mcp/obsidian-vault/dist/index.js"],
"env": { "OBSIDIAN_VAULT_PATH": "/absolute/path/to/your/vault" }
}
}
}Verify with /mcp — should show obsidian-vault connected with 10 tools. If MCP tools are unavailable, stop and tell the user — do not simulate vault operations in the conversation.
Note on commands: The trigger phrases like /learn, /update, /synthesize, etc. shown in this skill are natural-language shorthand — they work when written in the chat window as plain text (e.g. type /learn or "add this to my wiki: ..."). They are NOT Claude Code CLI slash commands. Typing /learn in the Claude Code terminal will hit the CLI parser and fail — use the phrase in a chat message instead.
Session start
At the beginning of any wiki session, read Maps/_context.md first if it exists. It contains a compact summary of the wiki's current state — active areas, recently updated pages, open questions — so you don't start cold. After any session that makes significant changes, update _context.md to reflect what changed.
Principles
These are the working rules for this skill. The vault's System/constitution.md is the authoritative statement of the wiki's laws (and System/page-standard.md of page format and provenance); if anything here disagrees with either, they win.
- Search before write. Always search the vault before creating anything. If a relevant page exists, update it — do not create a duplicate.
- One canonical page per concept. If two pages cover the same idea, merge them — preserve both sets of details, do not truncate either.
- Prefer durable over ephemeral. Extract durable knowledge from journals into
Knowledge/. Leave dates and session context in the journal; promote only the insight. - Preserve uncertainty. Mark low-confidence claims with
confidence: lowin frontmatter. Never guess and present it as fact. - Gate confidence on verification, not plausibility.
confidence: highrequiresverification: vendor(the claim traces to the vendor/author's own docs) orverification: multi-source(≥2 independent sources agree — not two listings of the same registry). A single registry hit, however plausible-sounding, isverification: single-sourceand caps atconfidence: mediumuntil corroborated. - Flag identity claims resting on a name match. If what establishes who made this or what this is is the name/label matching something familiar — not the source's own stated lineage or taxonomy — tag it
verification: name-matchregardless of how confident the prose sounds, capconfidenceatmedium, and add an## Open Questionsline naming the specific identity claim as unverified. A name that reads as official (a familiar project name, a vendor-style version string) is exactly the shape of claim most likely to be a reskin, fork, or community rebrand wearing a borrowed name. - Keep explanations compositional. One clear sentence beats a dense paragraph. Link to related concepts instead of re-explaining them inline.
- The wiki evolves, it does not reset. Each update improves an existing page. Orphaned content is either upgraded or merged — not abandoned.
Note schema
Every note must carry this frontmatter:
type: concept | journal | source | map | project
status: mature | draft | stale
confidence: high | medium | low # accurate=high; uncertain/incomplete=low — not about writing quality
verification: vendor | multi-source | single-source | name-match | unverified
verified_against: # required when verification is vendor or multi-source — see below
updated: YYYY-MM-DDtypedetermines which template to follow (seeassets/).status: mature— stable, clearly written, linked to at least two other pages.status: draft— new or incomplete. Default for anything just created.status: stale— hasn't been updated and has no incoming links. Flag, don't delete.confidenceis about accuracy, not polish. Anylowpage must have an## Open Questionssection.verificationrecords how a claim was verified, and gates whatconfidenceit's allowed to carry:vendor— traced to the vendor/author's own docs, announcement, or site. Only tier that freely supportsconfidence: high.multi-source— ≥2 independently-sourced references agree (not two listings pulled from the same registry/search). Also supportsconfidence: high.single-source— one source only. Capsconfidenceatmediumuntil corroborated.name-match— the claim's identity (who made this, what lineage it belongs to) rests on the name/label matching something familiar, not on the source's own stated taxonomy. Capsconfidenceatmediumregardless of how certain the writing sounds, and requires an## Open Questionsline naming the unverified identity claim — same requirement asconfidence: low, because this is where reskins, forks, and community rebrands wearing a borrowed vendor name slip through.unverified— not checked at all. Capsconfidenceatmedium, same assingle-source.- Omitting
verificationon an existing older page is fine (don't retrofit on sight) — but any new page or edit that touches a factual/identity claim should set it.
verified_againstis the citation artifact backingvendorormulti-source: the actual URL(s) or a short quoted source name (e.g.verified_against: "huggingface.co/NousResearch, nousresearch.com/hermes4") — not a restatement of the claim itself. Required wheneververificationisvendorormulti-source— a bare enum value with nothing behind it is a self-reported tag, not evidence, and reproduces the exact failure this field exists to prevent (asserting confidence without anything to point back to). Leave empty forsingle-source,name-match, orunverified— the enum already says the evidence is thin, no citation to fabricate.
type: project additionally supports (added for wiki-teacher):
status: paused | complete # extends the base status vocabulary above
priority: high | medium | low # optional — elicited on first /checkin, not guessed
checkin_interval: <days> # optional, defaults to 14 if absentstatus: paused/status: complete— an intentional off-ramp. Either excludes the project fromwiki-teacher's/checkinand fromwiki-librarian's staleness check; neither counts toward or againstwiki-governor's maturity sub-metric.priorityis deliberately never defaulted — guessing would just reintroduce the ranking problem it exists to solve./checkinasks for it the first time it's needed and writes the answer back.checkin_intervaldefaults silently to 14 days — safe to assume since it only ever under-triggers, never over-triggers a check-in.
Vault structure
Knowledge/ ← canonical concept pages (type: concept)
AI/
Systems/
Math/
Engineering/
Journal/
Daily/ ← daily notes (type: journal)
Sources/
raw/ ← unprocessed clippings, before /source compiles them
Papers/ ← one compiled page per source (type: source)
Books/
Videos/
Maps/ ← navigation/index pages (type: map)
_context.md ← hot cache: compact wiki state, read first each session
_ask_log.md ← append-only log of unanswered /ask queries (governor reads, never writes)
Projects/ ← active project pages (type: project)Commands
/learn
Process new information into the wiki.
- Search the vault for existing pages on the topic.
- If a concept page exists: retrieve it, update the explanation, add new context, add any missing links.
- If no page exists: create one using
assets/concept.md, setstatus: draft. - Before writing any factual or identity claim (what something is, who made it, what it's built on), set
verificationper the rules above, and let it gateconfidence— don't default toconfidence: highbecause the claim sounds settled or came from a single plausible-looking search result. If claimingvendorormulti-source, fill inverified_againstwith the actual URL(s)/source name checked — if there's nothing to put there, the tier is lower than you think. If the claim's identity rests on a name/label matching something familiar rather than the source's own stated lineage, this is aname-matchcase: cap atmediumand log the specific unverified part under## Open Questions. - Append a brief entry to today's journal (
Journal/Daily/YYYY-MM-DD.md) noting what was learned and linking to the updated concept page(s). If the journal page doesn't exist yet, create it first withwrite_notefromassets/journal.md(so it starts with proper frontmatter), thenappend_notethe entry —append_noterefuses to silently create a frontmatter-less file, by design. - Update the relevant map page in
Maps/if the concept is new to that area.
/update [page or concept]
Improve a specific page.
- Retrieve the page.
- Simplify dense sentences, fix unclear explanations, break up walls of text.
- Add or repair links to related concepts.
- Set
updated:to today's date. - Promote
statusfromdraft→matureonly when: the explanation is clear and self-contained, and the page links to at least two others.
/connect [concept A] [concept B]
Find and create links between ideas.
- Retrieve both pages.
- Identify the relationship type: is-a, uses, contrasts-with, depends-on, extends, or instance-of.
- Add a link sentence to each page's
## Relatedsection, naming the relationship explicitly. - Set
updated:on both pages.
/ask [question]
Answer a question by retrieving and grounding an answer in the vault — never from general knowledge alone, and never silently.
- Decompose the question into 1–3 search terms. A question spanning multiple concepts ("how does X relate to Y") gets one search per concept.
search_noteseach term, scoped toKnowledge/andSources/first — the vetted material.read_notethe top 3–5 matches.- Optional one-hop expansion:
list_linkson the strongest match to pull in tightly connected notes that complete the answer. - If the retrieved content answers the question, compose the answer from it alone:
- Every substantive claim carries an inline
[[link]]to its source note. - If the only relevant page is
status: draftorconfidence: low, say so — don't present it with more authority than the vault itself claims. - If sources disagree, surface the disagreement rather than smoothing it over.
- If the answer draws on two clusters that aren't linked to each other yet, note it and offer to run
/connect.
- Every substantive claim carries an inline
- If nothing vetted is found, check
Journal/Daily/as a last resort — but flag any journal-sourced content explicitly as unprocessed, not yet promoted toKnowledge/. - If a retrieved Source note points to a warehoused document (
doc_idin its frontmatter) but its own distilled summary and excerpts don't have enough detail to answer confidently, go to the primary source:search_warehouse(scoped to thatdoc_idif one specific Source note is the target) for passages,read_warehouse_textto expand context around a hit if still not enough. RequiresWAREHOUSE_PATHto be configured — ifsearch_warehouseisn't available, skip this hop, same as any other missing tool. Cite a claim that came from this hop bydoc_id+char_start/char_end, not just the note's[[link]]; the note's own excerpts stay the citation for anything they already cover. Same distill-don't-paste rule as ingestion: pull the fact into the answer, never paste the raw passage. - If still nothing relevant exists, or what's found doesn't actually answer the question:
- Say so plainly — do not reach for general knowledge to fill the gap.
- Append an entry to
Maps/_ask_log.md(create fromassets/ask-log.mdif it doesn't exist yet). This logging always happens — no confirmation needed, same as any new-draft creation. - Then ask whether the user wants a general-knowledge answer instead, clearly labeled as coming from outside the vault. Never blend the two without saying so.
- For partial answers, ground what the vault supports and log only the ungrounded portion.
/review [page or area]
Critique wiki quality without rewriting.
- Retrieve the page or list pages under the area.
- Flag: vague explanations, missing links, low-confidence claims without an open-questions section, and near-duplicate coverage with other pages.
- Do not rewrite automatically. Surface the findings and confirm with the user before making changes.
- If more than three issues are found, list them and ask which to address first.
/quiz [topic]
Generate study prompts from wiki content.
- Retrieve the concept page(s) for the topic.
- Generate 3–5 questions at progressive difficulty: recall → application → synthesis.
- Do not show answers — wait for the user to respond before discussing.
/map [area]
Update a navigation/index page for an area of the vault.
- Retrieve the map page (e.g.
Maps/AI.md). Create it fromassets/map.mdif it doesn't exist. - List all concept pages under
Knowledge/[Area]/. - Group them by sub-theme.
- Add missing pages to the map; remove dead links.
- Set
updated:to today's date.
/source [title or URL]
Log a paper, book, video, or article to the vault.
- If raw content exists in
Sources/raw/, read it first. Otherwise use what the user provides. - Create a compiled page in the appropriate
Sources/subfolder (e.g.Sources/Papers/title.md) usingassets/source.md. - Fill in author, link/DOI, and today's read date.
- Summarize the core argument in one paragraph.
- Set
verification:vendorif this source is the vendor/author's own publication; otherwisesingle-source(ormulti-sourceif it corroborates an existing page's claim from a different origin) — gateconfidenceaccordingly. If the source is a registry/marketplace listing (package index, model hub, app store) rather than an authored publication, treat its naming/attribution asname-matchverification, notvendor, until the actual publisher is confirmed. Forvendor/multi-source, setverified_againstto the link/DOI already captured in step 3 (or the additional corroborating link, formulti-source) — don't leave it blank while claiming the higher tier. - Link to any concept pages in
Knowledge/the source references — create stubs withstatus: draftfor concepts that don't exist yet. - If the source relates to an active project, add a backlink in
Projects/[project].md. - Delete or archive the raw file once the compiled page is complete.
/clean
Merge duplicates and consolidate structure.
- Search for near-duplicate concept pages (same topic, different naming).
- Propose the merge plan: which page becomes canonical, which gets absorbed.
- Wait for confirmation before changing anything.
- After confirmed: move content into the canonical page, fix or remove the absorbed page, repair backlinks throughout the vault.
/health
Audit structural integrity of the vault. Run before any major compile session.
- Broken links — find wikilinks pointing to pages that don't exist. List them with their source note.
- Orphan pages — find notes with no inbound links and no outbound links to other wiki pages.
- Stale notes — query
status: staleand notes withupdated:older than 90 days. - Missing open questions — find notes with
confidence: low, orverification: name-match, that lack a## Open Questionssection. - Confidence/verification mismatch — find notes with
confidence: highwhoseverificationissingle-source,name-match,unverified, or absent entirely; also find notes withverification: vendorormulti-sourcethat have noverified_againstcitation — a self-reported tier with nothing backing it is the same gap wearing a disguise. These are exactly the shape of the "Hermes 4 35B-A3B" error (a claim that looked settled but was never actually corroborated against source) — flag for re-verification, don't just silently downgrade. - Contradictions — flag pairs of pages that make conflicting claims about the same concept (e.g., opposite definitions, incompatible properties).
- Present findings as a prioritized list. Do not fix anything automatically — confirm with the user which issues to address.
- After fixes are applied, update
Maps/_context.mdto reflect current vault state.
Output discipline
- After any write operation, confirm in one line what changed: "Updated
Knowledge/AI/transformers.md— added attention-scaling section, linked topositional-encoding." - Never silently create a note. If you are about to create a new page, say so first.
- Never silently merge or delete. Always confirm destructive changes before applying them.
- Never blend a vault-grounded answer with general knowledge without saying so explicitly (see
/ask). - If MCP tools are unavailable, stop and tell the user — do not simulate vault operations in the conversation.
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.

