I put my second brain in a Git repo and wired it to Claude

Update, Aug 2026: some of this changed — see The file that makes it work isn’t CLAUDE.md anymore.

I’ll be honest: I’ve tried a lot of note-taking systems and abandoned most of them.

Notion, Obsidian, plain text files scattered across drives, a brief and embarrassing period with physical index cards. Each one works great for about two weeks, then I stop using it consistently, then I feel guilty about the notes I’m not taking, and eventually I just start over somewhere else.

So when I say “I built a second brain in a Git repo,” I’m not claiming I’ve solved the productivity problem. I’m saying I found something I’ve actually stuck with — and the main reason I stuck with it is a bit unexpected.

The problem I was actually trying to solve

It wasn’t really about notes. It was about Claude.

Every time I started a new session, I’d spend the first ten minutes re-explaining my situation. Here’s the project I’m on. Here’s where I am in my job search. Here’s the decision I made last week. Claude is great, but it starts every conversation cold — it doesn’t remember anything between sessions.

At some point I started thinking: what if instead of briefing Claude every time, I just kept that context somewhere it could read?

I didn’t invent this idea

The concept of atomic notes — one idea per file, linked by meaning — comes from How to Take Smart Notes by Sönke Ahrens. That book changed how I thought about notes. Before it, I was just dumping things into folders and never finding them again.

I used Obsidian for a while after that. It’s genuinely good. But it was built for me to read, not for Claude to act on.

Why Git + Markdown specifically

Claude reasons over plain text really well. And Git is already how I manage everything else as a developer — I’m in it every day, I understand it, I trust it.

So I just… made a repo. The structure ended up looking roughly like this:

/
├── ideas/          # raw captures, half-baked thoughts
├── skills/         # reference material, how-tos
├── journal/        # daily notes, weekly reviews
├── projects/       # one folder per project
├── resources/      # articles, links worth keeping
└── books/          # reading notes

Nothing clever here. Every file is Markdown. Every change is a commit. Claude can read any of it, search across it, and write new notes to it — all in the same conversation, without me pasting context manually.

The file that makes it work

There’s a CLAUDE.md at the root that acts as an index — it tells Claude what exists and how to navigate it. Something like:

# Second Brain — Claude Instructions

## Structure

- /ideas — raw captures. Low friction.
- /skills — structured reference material.
- /journal — daily notes, reflections.
- /projects — one folder per project: goals, decisions, open questions.
- /resources — articles and links worth keeping.
- /books — reading notes and key insights.

## How to help

- Adding a note: right folder, kebab-case filename.
- Finding notes: search by keyword across folders.
- Linking: add a Related: line when notes connect.
- Commit after creating or editing notes.

When I open a session now, Claude reads this first. It knows the layout. I don’t have to brief it anymore — that’s the whole point.

Going further: MCP servers

This is where it gets a bit more involved, and also where it gets genuinely useful.

MCP (Model Context Protocol) lets Claude connect to external tools during a conversation. I have it wired up to Git, Jira, and LinkedIn. So Claude doesn’t just read context from the repo — it can act on it:

  • Create a Jira ticket for something I’m tracking
  • Commit a new note directly to the repo
  • Search LinkedIn for job listings matching my criteria

The repo is the brain. MCP servers are the hands. It’s not magic, but it cuts out a lot of copy-pasting between windows.

What I actually use it for

Here’s the honest version: it’s mostly small things.

In the last week I had sessions about planning a trip to a city I’d never visited, a shell command I kept forgetting, whether a laptop was worth repairing, import taxes on something I was buying, and whether my cover letter was too formal. Mixed in between those: job search, a work incident, a code review.

The big stuff is there. But the small stuff is most of it.

Keeping notes. Ideas, book highlights, things I learn. The difference is Claude can connect things across folders I wouldn’t think to check — I asked about something in /resources/ once and it pulled a related note from /books/ I’d completely forgotten about.

Custom skills. This one surprised me. I keep reusable prompt workflows — I call them skills — in the repo. Some are global, some live inside a specific project folder. A skill for planning a trip itinerary. One for doing a structured interview before writing a post. One for reviewing a pull request in a specific style. Claude picks them up automatically from the folder. I don’t have to re-explain how I want things done.

Job search. I keep resume variants in a project folder, each tuned for a different type of role. Claude knows my constraints, can search LinkedIn, and tracks where I’ve applied in a Markdown file. No spreadsheet.

Work context. Goals, decisions, open questions — one folder per active project. Before we dig into something, Claude reads that folder. It saves a lot of “wait, what did we decide about X?” back-and-forth.

The trip planning example sticks with me: I started a /projects/trip-valoria-2025/ folder after a single session asking about a place I wanted to visit. Over a few days it grew into day-by-day plans, transport notes, restaurant shortlists. I didn’t plan that — it just accumulated. That’s the part that actually feels like a second brain.

Is it perfect?

No. I still forget to write notes sometimes. The system only works if you actually use it. And setting up MCP properly has a learning curve — it’s not plug-and-play yet.

But it’s the first note system I’ve used consistently for more than a few months. Probably because the main beneficiary isn’t some future version of me who’ll read through everything — it’s the Claude session I’m opening right now.

That framing changed how I approach it. Writing a note isn’t archiving. It’s giving context to the next conversation.

If you’re already keeping notes somewhere and want Claude to actually participate in your thinking — not just answer questions but know your context — the move is simpler than it sounds.

Flatten it to Markdown. Put it in Git. Write a CLAUDE.md.

That’s basically it.