Every agent session starts from zero. The model is new, the context window is empty, and whatever I explained last Tuesday is gone. So every agent I use reads the same folder of Markdown before it acts. My homelab skill says it in one line:

Always ground actions in the user’s vault references first, then verify live state with read-only commands before making changes.

That line runs under Hermes. The same folder also serves Claude Code and pi. Since May 10 it has grown to 827 notes, 51 source records, and 174 claims that other notes can cite by ID. No database, no embeddings, no vendor. It is a directory with rules strict enough that any agent can read it, write to it, and not wreck it. And when an agent does get something wrong, the mistake has an address: I can open the file and see which source it came from.

I packaged it as a starter kit. The rest of this post is the case for it.

Seanathon/vault-starterMIT · free · clone, fork, or use as a templateView on GitHub

Borrowed rules, not invented ones

Note-taking systems fail when the owner stops maintaining them. An agent changes that, because the agent does the maintenance. It needs rules it can follow without supervision, and I didn’t want to invent them. The kit takes one mechanism from each of ten existing methods and ships a page on each, so your agent knows which rule applies when.

SourceWhat the kit takes
PARAThe top-level split: projects, areas, resources, archive
Johnny.DecimalNumeric prefixes (00-meta, 30-projects) so every path is stable
Karpathy’s LLM-wiki gistraw/ → wiki/ → contract file, plus index.md and an append-only log.md
DiátaxisTutorial, how-to, reference, explanation, as a doc_type field
ZettelkastenAtomic notes that link out at least twice
GTDThe inbox: capture, clarify, file
Obsidian community patternsHub notes, daily notes, Bases dashboards
James Phoenix’s “Symlinked Project Docs”Only a project’s docs/ folder leaves the vault
HumanLayer’s CLAUDE.md guidanceA short root contract, detail loaded on demand
Typst’s docs, the DHQ documentation paperReference models for navigable docs

The rule that makes mistakes traceable is raw/ is immutable. Sources go in untouched, synthesis goes in wiki/, and every wiki page links back to its source. When an agent is wrong, I can see where the wrongness entered.

A morning brief, before anything clever

The plainest use is at work. My work vault shares the skeleton and none of the research machinery. Every morning a Claude automation pulls from GitHub, Slack, Notion, and Gmail and drops a brief into 00-inbox/daily-briefs/, one file per date. I show up, read it, and know who I need to talk to, what they’re waiting on me for, and which loose ends are mine. There are 37 of them so far.

That vault even numbers its folders differently, because work wanted the inbox at 00. The contract didn’t care. The kit is less a system to adopt than a skeleton to bend. At work it’s a morning brief. At home it’s a research library, which takes more machinery.

A knowledge graph without GraphRAG

A vault that only files things becomes a bookmark graveyard. Mine had 70 bookmarks before I noticed I couldn’t say what was in any of them. Part of the fix was admitting two jobs had been sharing one folder. Cataloging websites, products, tools, and codebases I want to find again moved to Board, a self-hosted curation tool I built for exactly that. The vault kept one job: holding what I actually know.

That still left the question of how to make knowledge out of what I read, and the obvious answers didn’t fit. The memory built into ChatGPT or Claude belongs to one product, and I can’t put it in git or hand it to a different agent. Notion is a good place for people to read, but its pages live in Notion’s database, not in files an agent can grep and diff. GraphRAG means embedding everything, extracting a graph, and running a vector store, which is a lot of infrastructure for 50 papers, and the graph ends up somewhere I can’t open in an editor.

The kit keeps the graph in the Markdown instead.

Build · writes to the vault Use · reads it “/know one more on this topic” you approve 01 /know ~1 min capture a link sources/papers/ source_type: paper or just a bookmark processing: captured 02 /deepen read it properly - a claim, own words ^claim-gists-carry… extends:: [[…]] processing: connected 2 of 3 refuses 03 /classify find the theme src src src 1 theme writes nothing 04 /synthesize write one hub 40-areas/<topic>/ cites each claim opens questions processing: synthesized /review what you saved but never read, then one question you have to answer /consult at decision time grounds, tensions, gaps, each cited as [[Note#^claim-…]]
The whole graph lives in Markdown. Capture takes a minute; structure waits until three sources agree it should exist.

/know captures a link in under a minute. /deepen reads it properly and writes each claim as one bullet with a block ID:

- Event gists carry the situational load and fact triples only support it:
  ablating gists collapses LoCoMo LLM-judge from 76.2 to 48.9, while
  ablating facts costs 89.6 to 87.2 on Complex-TR. (Evidence: ablation,
  Table 5.) ^claim-gists-carry-episodic-content

Then it links the source to the rest of the vault with one of five typed relations: supports, extends, contradicts, special-case-of, supersedes. That is the graph. It diffs in git and reads in any editor, and Obsidian draws it for free.

The whole vault

One hub, Agent Loop Engineering, and everything it cites

Obsidian draws this from nothing but wikilinks. No plugin, no index: the skills write the links, and the graph is what they look like.

The design choice I’d defend hardest is that two skills refuse to run. /classify won’t propose a theme with fewer than three sources, and /synthesize won’t write a hub from one. The refusal says what would unlock it:

this theme has 2 sources; /know one more on the same topic, or name a third source yourself, and I’ll run this again.

Most agent tooling fails by producing something plausible out of nothing. This fails closed: no hub note exists unless three sources back it, so an agent can’t spin a confident summary out of one blog post. /review then lists what you saved but never read and quizzes you on it.

Then the vault answers back

Everything above is the cost. /consult is the return. When I need to decide something, I ask the vault instead of a blank model: /consult recursive language models, or a design question for work. The agent searches the claims and the typed links first, reads any relevant source it has only skimmed, and answers in a fixed shape:

Anything that comes from the model’s general knowledge instead of the vault is labeled as such. Every run leaves a line in the log, so the consultation itself is traceable:

/consult: Recursive Language Models (RLMs) — 5 vault notes (0 deepened), 7 claims, 3 tensions

That’s the loop the rest of the kit exists to feed. Research I captured months ago shows up, cited, in a decision I’m making today, and I don’t have to remember having read it. Across both vaults I’ve run it more than a dozen times so far, on questions as small as that one and as large as a design review that weighed 51 claims from 33 sources.

It holds up with someone else writing

The real test was handing it to someone else. On August 18 I exported the kit into a vault for Radiator, a project I’m building with another engineer. It’s still in development, and the waitlist is open. That vault added two rules: every technical claim cites path:line at a pinned commit, and every change lands as a pull request.

Writers The vault code repository authority every implementation fact lives here stale when sha ≠ head me Claude Code agent drafts each change another engineer their own agent same skills, same contract pull request a person reads it first ✓ frontmatter ✓ cites its source ✓ no silent links ✓ one log row merge raw/ immutable never edited wiki/ claim, cited as path:line @ a pinned 40-char commit contradictions page recorded, not reconciled open-questions register 63 questions docs/ the only folder that leaves copied out, re-checked at head
Two people, two agents, one merge button. The code stays the authority; the vault only promises to be traceable.

In 40 days it reached 222 source records, 1,594 claim blocks, 63 tracked open questions, and 120 pull requests, most of them written by the other engineer through a different agent. The contract held with a writer who wasn’t me. That is the only test of “any agent can use it” I trust.

The gap between the two vaults isn’t all the kit’s doing. Radiator had the claim rules from day one, covers one project, and is mostly code and papers, which are easy to write claims about. My personal vault has notes about car maintenance.

The kit ships with all of it: the skeleton, the contract, a setup interview, the six research skills, and the ten method pages. The first thing it will do is refuse to synthesize anything. Capture three sources and it gets friendlier.