second-brain-obsidian

A ready-to-adopt second-brain system: Obsidian vault + Claude Code SessionEnd autolog hook. Structure, 14 pre-configured plugins, templates, docs, and a bootstrap script. Bring your own notes.

Second Brain — Obsidian + Claude Code

A ready-to-adopt second-brain system: one Obsidian vault that does four jobs — personal knowledge, a work OS, a research base, and a shared memory between you and Claude Code. This repo is the scaffold: folder structure, plugin config, note templates, the docs, and the SessionEnd hook that auto-logs your Claude sessions into the vault. No personal notes — you bring the content.

Built and documented for Claude Code. The Obsidian half stands on its own; the shared-memory half is what makes it a beast.

What's inside

Atlas/       evergreen notes + MOCs      -> the thinking web
Calendar/    daily + weekly + meetings   -> the timeline
Efforts/     Work/ + Personal/           -> active projects (PARA)
Sources/     articles, highlights        -> research
Archive/     dead projects               -> kept for search
Meta/        templates, attachments, Claude-Memory bridge
Help/        GUIDE (when/why) · SETUP (how) · WORKFLOW (repo + Claude + Obsidian)
hooks/       obsidian-autolog.sh         -> SessionEnd breadcrumb into the daily note
claude/      settings-hooks.example.json -> the hook wiring for ~/.claude/settings.json
bootstrap.sh installs the hook, splices settings, re-links the memory bridge

14 community plugins, pre-configured (settings shipped as each plugin's data.json): Templater · QuickAdd · Periodic Notes · Dataview · Homepage · Omnisearch · Iconize · Excalidraw · Breadcrumbs · 3D Graph · Tasks · Kanban · Full Calendar · Smart Connections.

Quick start

git clone https://github.com/v60samurai/second-brain-obsidian.git ~/SecondBrain
cd ~/SecondBrain
./bootstrap.sh                     # installs the hook + wires ~/.claude/settings.json

Then, one time in the app:

  1. Open ~/SecondBrain as a vault in Obsidian.
  2. Settings → Community plugins → install each plugin in .obsidian/community-plugins.json. Their settings are already in place.
  3. Restart Claude Code so the SessionEnd hook loads.

Read Help/SETUP.md for how it's built, Help/GUIDE.md for how to use it day to day, Help/WORKFLOW.md for how repos, GitHub, Claude Code, and the vault fit together without duplicating anything.

The two pieces that need wiring on a new machine

Everything else is a plain git clone. Two things point outside the vault and bootstrap.sh handles both:

1. The SessionEnd autolog hook

hooks/obsidian-autolog.sh runs when a Claude Code session ends. If real work happened in a git repo (that isn't the vault), it drops one line into today's daily note under ## Log:

- 14:32 — session in [[my-project]] · 3 changed: PRD.md, api.ts, schema.sql

Capture only — it never routes, never blocks, always exits 0. The judgment of what a change means stays human ("log this decision: …"). bootstrap.sh copies it to ~/.claude/hooks/ and splices the SessionEnd block from claude/settings-hooks.example.json into ~/.claude/settings.json (backed up, idempotent). Override the vault location with SECONDBRAIN_VAULT.

2. The Claude-Memory bridge

Meta/Claude-Memory/ is a set of symlinks into the memory dirs Claude Code actually reads and writes — so Obsidian, its graph, and the obsidian MCP all see your Claude memory live. Symlinks to machine-local paths aren't committed. Re-create them:

./bootstrap.sh --link "Personal=$HOME/.claude/projects/<slug>/memory" \
               --link "Work/myproject=/path/to/that/project/memory"

See Claude Memory MOC.

Optional: the obsidian MCP server

To let Claude create/edit notes directly (not just the hook breadcrumb), register the obsidian MCP with your vault. The vault name is the lowercase folder basename (secondbrain). Paths split into filename + folder — never a slashed filename. Details in Help/SETUP.md.

What is deliberately NOT in this repo

  • Your notes. Content folders ship empty (.gitkeep). This is the system, not a brain.
  • Plugin binaries. Re-installed from community-plugins.json; only their data.json settings are versioned.
  • Machine state. workspace.json, .smart-env/ embeddings, icon packs — all regenerate. See .gitignore.
  • Memory contents. Only the symlink bridge is described; the symlinks themselves are local.

License

MIT — see LICENSE. Plugins are the property of their respective authors.

Related

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 11d ago

Categories

Tags

claude-codeobsidianpkmsecond-brainzettelkasten