pkm-agent-vault

Obsidian vault template + Claude Code slash commands for agent-assisted knowledge curation

PKM Vault + Claude Code Curator

An Obsidian vault paired with Claude Code, set up so Claude does the curation work (classifying notes, finding structural gaps, proposing links) instead of just writing files on request. Nothing here writes to your notes without asking first — that rule is enforced by the instructions in VAULT-INDEX.md, not by anything technical.

What this actually is

  • A folder structure and frontmatter schema for notes (concept, question, reference, project, MOC, log), each with its own status lifecycle.
  • Three Python scripts that build a machine-readable index of the vault and detect structurally disconnected clusters of notes, so Claude can work from a compact summary instead of reading every file.
  • Two Claude Code slash commands (/process-inbox, /gap-review) that use those scripts and walk through triage and connection-finding with you, one proposal at a time.
  • A CLAUDE.md boot file that loads the rules automatically whenever Claude Code runs in this directory.

This is a template, not a populated vault — it ships empty aside from the scaffolding above. You fill in your own domains and notes.

Requirements

  • Obsidian (or any editor that reads plain Markdown with YAML frontmatter — Obsidian is what the wikilink/MOC conventions assume, but nothing here is Obsidian-specific at the file level)
  • Claude Code
  • Python 3, plus pyyaml, networkx, and python-louvain for the two analysis scripts (pip install pyyaml networkx python-louvain --break-system-packages)
  • Optional: Syncthing if you want the vault synced across more than one device; Tailscale if one of those devices is a headless server you need to reach from outside your home network

See SETUP.md for the full walkthrough, including the headless-server pattern.

Layout

.
├── CLAUDE.md              # boot file — loads automatically, imports VAULT-INDEX.md
├── VAULT-INDEX.md          # the actual rules: schema, folders, permission model
├── Templates/              # one template per note type
├── 00-MOC/                 # root index note
├── 99-Inbox/                # unsorted capture — drop things here, run /process-inbox
├── .claude/commands/         # /process-inbox and /gap-review slash commands
├── build_index.py           # generates INDEX.json
├── find_vault_gaps.py       # generates GAP_REPORT.md / .json
└── prep_inbox.py            # generates the inbox triage manifest

Working rules

The actual rules — permission model, frontmatter schema, folder conventions — live in VAULT-INDEX.md, not here. Read that file before using this for real; it's short. The short version: nothing gets created or edited without Claude proposing the exact content first and you saying yes, and every domain you add gets a row in that file's domain table.

License

MIT — see LICENSE.

How to Install

  1. Download the ZIP or clone the repository
  2. Open the folder as a vault in Obsidian (File → Open Vault)
  3. Obsidian will prompt you to install required plugins

Stats

Stars

0

Forks

0

License

MIT

Last updated 23d ago