A Claude skill that turns an Obsidian vault into durable, token-efficient external memory β so context survives
/compact, long sessions, and new chats. Every note is written twice: a rich human version and an ultra-condensed AI version with zero information loss.
English Β· FranΓ§ais
- Why this exists
- How it works
- The two registers
- Prerequisites
- Installation
- Usage
- Optimal setup
- Repository structure
- FAQ
- Contributing
- License & credits
Claude is brilliant within a conversation, but its context is finite. Long sessions get
/compact-ed (summarized), new chats start blank, and hard-won decisions evaporate. The usual
fix β pasting a giant context blob every time β is expensive and lossy.
Second Brain flips the model: your knowledge lives in an Obsidian vault on disk, and Claude
treats it as durable memory it can read to bootstrap and write to never forget. Because the
memory is external, after a /compact Claude just re-reads the relevant notes and rebuilds full
context. Nothing is lost β as long as it was written down.
The twist: notes are stored in two twin registers.
- π€
AI/β caveman style: telegraphic, symbol-dense, no filler. ~60β75 % fewer tokens. This is what Claude reads and writes. Cheap to load, cheap to keep current. - π€
human/β rich, structured, pedagogical, with callouts and diagrams. This is what you read in Obsidian.
Both encode the same information set. The AI register compresses the wording, never the information β it is lossless by contract, not a summary.
Golden rule: an unrecorded change is a lost change.
flowchart TD
subgraph Capture["π΅ Capture β same pass, both twins"]
direction LR
C[You + Claude<br/>establish a fact] --> AI["AI/ twin<br/>caveman Β· lossless"]
C --> H["human/ twin<br/>rich Β· pedagogical"]
AI <-. "twin: frontmatter" .-> H
end
AI ==>|"π’ bootstrap β cheap"| K["Claude reads AI/ only<br/>(MOC β links β leaf)"]
H -->|browse| U["You read human/<br/>in Obsidian"]
K -. "survives /compact:<br/>re-read AI/ to rehydrate" .-> K
- Split per area. Each subject is a top-level folder that splits at its root into two 1:1 mirror
trees:
AI/andhuman/. A note's twin is the same path withAI/ β human/swapped. - Co-authored twins. On every capture, both versions are written in the same pass and cross-linked via frontmatter. Neither is auto-generated from the other.
- Progressive disclosure. A small Map of Content (MOC) routes Claude to the one note it needs β it loads links on demand instead of the whole vault.
- Shared meta.
CLAUDE.md(imperatives) and00-Meta/(conventions, changelog) sit at the area root, shared by both trees.
| π€ human register | π€ AI register |
|---|---|
"Vaultwarden runs in LXC 101 (10.0.0.12:8000), self-signed HTTPS. The community-script update fails (cargo not found, Rust build); not in active use yet, migration from Bitwarden cloud planned, ideally to the official Docker image." |
LXC 101 @ 10.0.0.12:8000 Β· self-signed HTTPS. cargo not found) β not in active use. Migrate Bitwarden cloud β official Docker image. |
Every value (101, IP, port, cargo not found, Docker) survives on both sides β only the connective
tissue differs.
| π€ AI register | π€ Human register | |
|---|---|---|
| Optimized for | tokens (read/write by Claude) | reading & understanding |
| Style | fragments, symbols β = β οΈ, no articles/copulas |
prose, intro/why, callouts, tables, mermaid |
| Claude loads it at boot | β (only this side) | β (unless asked to edit prose) |
| Hard constraint | lossless β compress wording, never info | completeness β same info, elaborated |
| Full rules | ai-register.md |
human-register.md |
- Claude Code (CLI, desktop, or IDE extension) β or any Claude surface that supports Agent Skills. The skill is plain markdown; no dependencies, no scripts to run.
- An Obsidian vault (recommended) β or honestly any folder of
.mdfiles. Obsidian is ideal because the skill leans on[[wikilinks]], the graph view, and backlinks, but nothing here is Obsidian-exclusive. - (Recommended Obsidian setting) absolute path links β see Optimal setup.
macOS / Linux
git clone https://github.com/hess0ul/second-brain.git
cp -r second-brain/second-brain ~/.claude/skills/second-brainWindows (PowerShell)
git clone https://github.com/hess0ul/second-brain.git
Copy-Item -Recurse second-brain\second-brain $env:USERPROFILE\.claude\skills\second-brainWant the French version of the skill instead? Copy
second-brain/translations/fr/second-brainto~/.claude/skills/second-brain. Install one language (both use the same skill name).
Start Claude Code and type /second-brain. The skill loads and is then active for the whole
conversation. (You can also just mention it β the description is written to trigger on its own β
but invoking it explicitly is the reliable way to load the full instructions.)
The repo author runs the skill straight from their Obsidian vault, so editing the note edits the live
skill. Point ~/.claude/skills/second-brain at the source with a symlink/junction:
# Windows β directory junction (no admin needed)
New-Item -ItemType Junction -Path "$env:USERPROFILE\.claude\skills\second-brain" `
-Target "C:\path\to\your\vault\...\second-brain"# macOS / Linux β symlink
ln -s /path/to/your/vault/.../second-brain ~/.claude/skills/second-brainYour start-of-conversation ritual:
- State your goal for the session.
- Invoke
/second-brain. Claude bootstraps the relevant area by reading theAI/side only (MOC β rules β the few notes the task touches). - Work normally. As facts are established or change, Claude captures them into both twins in the same pass and ripples the indexes β no need to ask each time.
- After a
/compact, invoke/second-brainonce more to reload the manual and re-hydrate from the vault.
Typical prompts that put it to work:
"We're setting up monitoring for my homelab. You have a brain at
~/Vaults/brainβ use/second-brainto load the Homelab area, then help me, keeping the vault in sync."
"Start a new brain area called AI Watch to track models and papers I care about. Use
/second-brainto scaffold it in dual-register."
- Obsidian β Settings β Files & Links β New link format =
Absolute path in vault. The skill uses absolute[[full/path/note|Alias]]links so Claude can navigate the graph unambiguously. - One vault, many subjects. Each subject is a top-level folder. Start a subject in dual-register if a human will read it; mono-register (a single dense tree) is fine for Claude-only scratch areas.
- Let
CLAUDE.mdcarry the imperatives. Claude Code auto-injectsCLAUDE.mdfiles; put your hard rules there and keep them dense (pairs well with theclaude-md-managementskills). - Version the vault with git for history beyond the in-vault
CHANGELOG. - Don't fight the AI register. It will look terse β that's the point. The human twin is where readability lives.
.
βββ README.md # you are here (English)
βββ README.fr.md # French
βββ LICENSE # MIT
βββ CHANGELOG.md
βββ second-brain/ # β the skill (English, canonical) β install this
β βββ SKILL.md
β βββ references/
β βββ ai-register.md # caveman rules + lossless guarantee
β βββ human-register.md # rich/pedagogical rules
β βββ conventions.md # structure, links, frontmatter, density
β βββ templates.md # MOC, hub, twin leaf, CLAUDE.md, ADR, scaffold
β βββ bootstrap-compact.md # read protocol + /compact recovery
βββ translations/
βββ fr/second-brain/ # the skill (French) β same structure
Does this require Obsidian?
No β it writes plain .md. Obsidian just gives the best experience (graph, backlinks, link
autocompletion). Any markdown editor works.
Is the AI version a summary? No. It's lossless by contract: it carries every fact, number, name, and decision the human version does β only the phrasing is stripped. A summary loses information; this doesn't.
Won't two copies drift?
They're co-authored in the same pass and bound by a twin: frontmatter link, with a "parity"
self-check. Updating one twin without the other is explicitly forbidden by the skill.
Does the skill stay active all conversation?
Yes. Once /second-brain is invoked, its instructions stay in context. Reference files load on demand.
After a /compact, invoke it again to reload cleanly.
Mono-register vs dual-register?
Use dual-register when a human will read the notes. Use mono-register (one dense tree, no human/) for
Claude-only working memory. The mode is recorded per area in 00-Meta/conventions.md.
Why "caveman"? The AI register is inspired by the caveman project's terse, fragment-based style β adapted here with a strict no-information-loss rule.
Issues and PRs welcome β improvements to the register rules, templates, translations, or examples especially. Keep the AI register lossless and the human register readable; if you change one twin in an example, change the other.
MIT Β© 2026 hess0ul.
- Inspired by JuliusBrussee/caveman for the terse AI writing style.
- Built for Claude Code Agent Skills.
- Conventions battle-tested on a real Obsidian homelab vault.