A lean, skill-driven Obsidian vault for AI agents. Small vault > big vault. Skills and templates over stored clutter.
No vector DB. No embeddings. No plugins. No dependencies. Markdown, three skills, and a janitor that keeps the vault from rotting.
Most second-brain setups hoard everything. This one does the opposite.
- Small vault wins. 50 dense pages beat 500 thin ones. If info exists in two places, consolidate. If a note served its purpose, delete it.
- Skills over storage. Templates and skills that automate processes are worth more than reference pages you'll never reread.
- The janitor keeps it clean. Done tasks get swept. Orphan pages get flagged. The vault stays lean by design, not discipline.
- Any agent can contribute. The intake skill is the single gate — every piece of information passes through it, gets structured, linked, and logged.
CLAUDE.md → standing orders for any agent
AGENTS.md → pointer to CLAUDE.md, for tools that look for this name
inbox/ → raw input lands here
_done/ → processed originals (provenance)
tasks/ → task database (status + deletable flags)
wiki/ → processed knowledge
index.md → master catalog
hot.md → session memory (≤500 words)
log.md → append-only operations journal
.claude/skills/ → agent skills, auto-discovered by Claude Code
intake/ → the gate — how info enters the vault
ingest/ → process inbox into structured pages
janitor/ → cleanup done tasks and orphan pages
_templates/ → page skeletons (task, note, project)
The single entry point for adding anything to the vault. Classifies input, checks for duplicates, applies templates, links to existing pages, updates the index and log.
Trigger: "save this", "add to vault", "remember this", or any agent output that should persist.
Processes everything sitting in inbox/. Reads raw notes, classifies them, creates structured wiki pages or tasks, preserves originals in inbox/_done/.
Trigger: "ingest", "process inbox"
Sweeps the vault clean. Deletes done+deletable tasks (after verifying info is preserved elsewhere), flags orphan pages, spots duplicates, reports what it did.
Trigger: "clean", "janitor", "sweep", "tidy"
pending → in-progress → done → (deletable: true) → janitor deletes
↓
(deletable: false) → stays forever (reference value)
Tasks use YAML frontmatter:
status: pending | in-progress | done
deletable: false | true
source: which-agent-or-contextThe janitor only deletes tasks marked done + deletable: true, and only after confirming the useful info already lives in a wiki page.
One command. No git, no build step, no dependencies.
npx degit Nathan5674312/fate my-vault
cd my-vaultThat copies the vault into my-vault without any git history — the folder
is yours from the first commit, not a fork of this one. Name it whatever you
like.
Prefer it on GitHub? This repo is a template, so Use this template gives you your own repo with the same clean start. Or grab the ZIP from the green Code button. All three land the same 20 files.
claudeThe three skills live in .claude/skills/, so Claude Code discovers them on
launch — /intake, /ingest and /janitor work with no setup. Drop notes into
inbox/ and say "ingest".
Any other agent: point it at CLAUDE.md, or let it find AGENTS.md, which
points there. The standing orders, skills and templates work with any LLM that
can read and write files. The skills are plain Markdown, so an agent that does
not auto-discover them can just read the one it needs.
Obsidian: open the folder as a vault. Graph colours, folder colours and display settings are pre-configured. No plugins required.
Why no vector DB? For a personal vault kept lean by the janitor, a flat index + wikilinks handles retrieval. The index is always small because the vault is always small.
Why delete instead of archive? Archiving is hoarding with extra steps. If the info is in a wiki page, the task file is dead weight. The janitor verifies before deleting — nothing is lost.
Why one intake gate? Consistency. Every file gets frontmatter, links, an index entry, and a log line. No rogue files floating unlinked.
Why sequential ingest? Processing one inbox item at a time avoids merge conflicts, silent overwrites, and contradiction-hiding. A few extra seconds beats lost knowledge.
CC BY 4.0 — use it, change it, build on it, commercially or not. Just credit the source.
Copyright (c) 2026 Nathaniel Young (Divine Construc)