The "second brain" is not a new idea, but it usually runs into manual busywork: filing notes into folders, trying to remember what mattered this week, pulling sources together from different places by hand. Below is a vault architecture built on Obsidian and Claude Code, where Claude takes over part of that busywork itself: from auto-collecting sources to a daily question cycle. You can build it with no sysadmin experience — every step below is given as-is, with no truncated prompts.
What the system is made of
Four components: a note vault in Obsidian, a CLAUDE.md file that tells Claude Code how to work
with that vault, sync with a private GitHub repository, and a set of slash commands for repeating
actions — collecting sources and running the daily cycle. None of the components works as "magic
out of the box" — each one is set up once with specific prompts inside Claude Code Desktop.
Step 1 — prepare the vault
Install Claude Code Desktop and open the folder holding your future "second brain" in Obsidian as
the vault. A CLAUDE.md file should appear inside — it plays the same role as README.md does for
a human, only it is addressed to the model: what lives in the vault, how it is structured, which
slash commands are already set up.
Recommended folder structure inside the vault:
second-brain/
├── raw/ # source material before processing
│ ├── claude-exports/ # exported Claude conversations
│ ├── granola-notes/ # meeting notes
│ └── notion-exports/ # pages and databases from Notion
├── wiki/ # processed domain knowledge
│ ├── index.md # master catalog
│ ├── log.md # daily entry journal
│ ├── concepts/ # concepts and terms
│ ├── projects/ # specific projects
│ └── people/ # notes on people
├── journal/ # daily entries
├── content/ # content pipeline
└── priorities.md # what your priorities are
Step 2 — sync and your first connector
Create a private GitHub repository and set up Obsidian Git for auto-sync — the vault stops depending on a single device and does not get lost if something fails. Next, connect your first MCP connector: it gives Claude direct access to an external source (a task tracker or meeting notes, for example) instead of copying files by hand.
Step 3 — auto-integrating sources
The /pull-sources command is a slash command you create once in .claude/commands/: it pulls
material from your connected sources straight into the raw/ folder, from where a separate step
(/ingest) turns it into structured notes in wiki/. The output from a task tracker, for example,
is a note with clear fields: source, date received, task number, status, team, link — not raw text
you then have to format by hand.
Step 4 — the priorities document
The priorities.md file is what Claude checks against before deciding what is important and what is
noise. Recommended sections: "Projects" (what is in flight right now), "Areas" (ongoing zones of
responsibility), "Resources" (reference material), "Archive" (closed projects), "Key people"
(context on important contacts). Without this file the model either gets lost in the details or
weighs everything equally.
Step 5 — the daily cycle: /briefing and /debrief
Two slash commands cover the daily routine. /briefing is a short summary at the start of the day:
what is current based on priorities.md and wiki/log.md. /debrief is an end-of-day
conversation: Claude asks a few short questions, writes a structured entry into wiki/log.md and
proposes page updates before saving.
The prompt for creating the /debrief command inside Claude Code Desktop:
Create .claude/commands/debrief.md that:
1) Reads priorities.md to get today's focus.
2) Asks me 3-4 short questions one at a time: what did I
accomplish, what got stuck, what did I learn, what matters
tomorrow.
3) Writes a structured entry to wiki/log.md with a timestamp
and my answers.
4) If answers mention existing wiki pages, suggest updates.
If something new appeared, suggest creating a new page.
5) If priorities shifted, suggest updates to priorities.md,
but ask for confirmation before writing.
6) End with a one-line summary of the day.
$ARGUMENTS is optional. If provided, skip the questions and
use $ARGUMENTS as the day's summary directly.
The /briefing command is built on the same principle, except it reads priorities.md and the
latest entries in log.md rather than asking questions.
Step 6 — cloud routines
Once running /briefing by hand every morning gets old, you can move it into a cloud routine — a
Claude Code feature for recurring scheduled tasks. The same /briefing runs without you — on a
schedule or on an event — and the result lands in the vault just the same. After this step, the
"morning summary → work → evening review" cycle only asks you to answer the /debrief questions
instead of launching commands manually.
How we do it
We use a similar principle — a structured vault plus slash commands on top of it — in our internal automation around the qvib engine as well: don't rely on the model's memory between sessions, keep the context in files that Claude reads by explicit rules.
Related links
- The "Claude Code" section: qvib.pro/arsenal/claude-code/
- Slash commands and automation: qvib.pro/arsenal/claude-code-projects/
- Vibe coding: a personal knowledge base: qvib.pro/