I built a tool that lets my Obsidian vault argue with me.
Not metaphorically. I told Claude I wanted to move our database from Railway to Supabase. It searched my vault, found my own notes from six months ago where I evaluated Supabase and decided against it because of cold start latency on serverless functions killing our API response times, found my decision log where I wrote “keep everything on Railway: one platform, one bill, no vendor juggling,” and pushed back with my own words.
That moment changed how I think about AI.
Here’s the backstory.
I use Obsidian for everything. Daily notes, project tracking, people notes, decisions, ideas. Hundreds of markdown files going back years. But they were dead files. I’d write something, forget it existed, and make the same mistake six months later.
Meanwhile, every Claude session started from zero. “Hi, I’m working on X, the context is Y, the goal is Z.” Every. Single. Time.
So I built a Claude Code skill that connects the two. Claude reads my vault, writes to it, and thinks with it.
The architecture is simple:
┌──────────────┐
│ You talk │
│ Claude saves│ ── Layer 1: Vault Ops
│ to the vault│ 14 commands
└──────┬───────┘
│
┌──────▼───────┐
│ Your vault │
│ argues back │ ── Layer 2: Thinking
│ challenges │ 4 commands
│ finds │
│ patterns │
└──────┬───────┘
│
┌──────▼───────┐
│ Claude knows│
│ who you are │ ── Layer 3: Context
│ every time │ 1 command
└──────────────┘Layer 1 is the boring part that saves you hours.
You finish a conversation and type /obsidian-save. Claude scans the entire chat, pulls out decisions, tasks, people mentioned, and ideas discussed, and saves each one to the right place in your vault. Project notes get updated. Kanban boards get new cards. Today’s daily note gets links to everything. You do nothing.
14 commands handle every vault operation. Daily notes, dev logs, people notes, project tracking, idea capture, weekly reviews, vault health checks. All of them search before creating. No duplicates. Every write propagates everywhere it belongs.
Layer 2 is what makes it different.
/obsidian-challenge red-teams your current idea against your own history. It spawns three parallel agents that search your vault for past failures, contradictions, and reversed decisions. Then it presents the evidence and asks if you still want to proceed.
/obsidian-emerge scans your last 30 days of daily notes and surfaces patterns you haven’t named. I ran it last week. It found I’d mentioned “onboarding friction” in four separate client projects without ever calling it a systemic problem. It was. I just couldn’t see it from inside.
/obsidian-connect takes two unrelated domains from your vault and finds the bridge between them. Shared concepts, structural analogies, collision ideas. The output is grounded in your own notes, not generic brainstorming.
/obsidian-graduate takes an idea fragment tagged #idea and turns it into a full project. Spec, goals, tasks, board entries. The idea note gets marked as graduated and linked to the new project. Nothing dies in your inbox.
Layer 3 solves context loss.
One command: /obsidian-world. Run it at the start of any session. Claude reads your identity file, checks your last three daily notes, scans your boards, and tells you where you left off. No re-explaining. No memory issues. Full context in ten seconds.
Then there’s the stuff that runs without you.
A background agent fires after every context compaction. It reads the session summary and silently updates your vault while you keep working.
Four scheduled agents run on cron:
8 AM ── Morning agent
Creates daily note
Surfaces overdue tasks
10 PM ── Nightly agent
Closes out the day
Moves tasks to Done
Fri ── Weekly agent
Generates review note
Sun ── Health check agent
Audits for rotYou wake up to a daily note that already knows what’s overdue. You go to bed and your vault closes itself out.
The whole thing runs on one file: _CLAUDE.md. It sits at your vault root and tells every Claude surface how your vault works. Folder structure, naming rules, frontmatter schemas, and propagation rules. Claude Desktop, Claude Code, VS Code, terminal. They all read the same file. No memory needed between sessions.
git clone https://github.com/eugeniughelbur/obsidian-second-brain ~/.claude/skills/obsidian-second-brain
bash scripts/setup.sh "/path/to/vault"Run /obsidian-init and Claude generates your _CLAUDE.md from your existing vault structure.
The uncomfortable truth: the AI is not the moat. Your notes are.
Everyone will have access to the same models. The differentiator is having years of interlinked personal writing for the model to work with. Daily reflection, decisions logged, lessons captured. That compounds. Generic prompts don’t.
99% of people will read this and think “cool” and keep using Claude as a search engine. That’s fine.
The 1% who actually build a vault, write daily, and let the system compound will have something no one can copy. A thinking partner trained on their own history.
The repo: https://github.com/eugeniughelbur/obsidian-second-brain



