Skip to main content

Command Palette

Search for a command to run...

Keeping Track of My Work Stopped Being Work

Six years of Obsidian, two weeks of Claude Code, and a wiki schema lifted from Karpathy.

Published
7 min read
Keeping Track of My Work Stopped Being Work

I have been on Obsidian for six years. The vault survived three device changes, two work project changes, and every shiny note-taking tool that came out in between.

The maintenance was the problem. Notes go stale the moment you close the file. Cross-references rot. After a few months you have a folder of orphans, a graph view that looks impressive in screenshots and is useless in practice, and a vague feeling that you should "reorganize things this weekend." You never do.

Two weeks ago I read Karpathy's LLM Wiki gist and copied the idea wholesale.

The shift: you don't maintain the knowledge base. The LLM does. You drop raw stuff into a folder. You ask questions in plain English. The model handles the bookkeeping you would never do yourself.

Two weeks in, this is the first time in six years I'm actually using my notes. Keeping track of work, ideas, and projects without thinking about where things go or how I'll find them again.

Here is what the setup looks like.


The Layout

The vault is a git repo. Folders split by ownership.

Obsidian/
├── raw/         # source docs. Claude reads, never edits
├── wiki/        # synthesis layer. Claude owns this entirely
│   ├── concepts/
│   ├── entities/
│   ├── sources/
│   ├── synthesis/
│   ├── index.md
│   └── log.md
├── Daily/       # YYYY-MM-DD.md, synced with Kanban.md
├── Personal/    # mine, Claude only edits on request
├── Work/        # mine, Claude only edits on request
└── CLAUDE.md    # the rulebook

raw/ is the inbox. Drop and forget. wiki/ is what Claude rebuilds and cross-links. Personal/ and Work/ are mine. Claude doesn't touch them unless I ask.

That split is the part that matters. If Claude could rewrite my meeting notes, I would never trust the wiki to reflect what I actually decided.


CLAUDE.md is the Whole System

No plugin, no MCP server, no glue script. One markdown file at vault root tells Claude Code how to behave. It defines:

  • Which folders Claude owns vs. which are mine

  • The frontmatter every wiki page must have

  • Four operations: ingest, query, lint wiki, daily log

Every wiki page has the same five frontmatter keys:

yaml

---
title: Retrieval Augmented Generation (RAG)
type: concept
tags: [AI, RAG, LLM, vector-db, retrieval]
sources: 1
updated: 2026-04-21
---

sources counts how many raw docs fed into the page. updated is what lint wiki checks for staleness. That's it.


The Four Operations

ingest <thing>

I drop a file in raw/ or paste content. Claude reads it, extracts facts, and updates the wiki. A single ingest typically touches 5–15 pages: a source page, a few concept pages, an entity page, plus the index and the log.

The cross-linking is where it compounds. I ingested a batch of AI papers and a separate batch of Flutter notes on different days, expecting them to live in different corners of the graph. Claude flagged that both connected back to my work (AI research and the company's Flutter app) and asked before stitching them into the same entity pages. Confirmed, done. That kind of "wait, these belong together" pass is exactly what I never do by hand. The graph becomes useful instead of decorative.

query: <question>

Claude reads wiki/index.md first, then opens the pages it thinks are relevant, then answers with [[wiki-links]] as citations. Non-trivial answers get filed back to wiki/synthesis/ so the next query about the same thing is a lookup, not a fresh synthesis.

This is the part that changed how I use notes. I stopped opening Obsidian to find things. I open it to read what Claude already pulled together.

lint wiki

The maintenance verb. Looks for orphans, contradictions, stale claims, concepts mentioned but lacking their own page, missing cross-references. Output is a prioritized list. Claude offers to fix each issue.

Every "second brain" eventually needs this. Almost no one builds it.

daily log

Opens or creates Daily/YYYY-MM-DD.md, syncs with Kanban.md at vault root. Done / In Progress / Blockers / Learnings / Links. Takes ten seconds because Claude does the diff against yesterday.


The Obsidian Side is Almost Incidental

A few plugins earn their keep:

  • Dataview: for index pages that enumerate by tag or date

  • Kanban: backed by Kanban.md at vault root, which the daily log syncs against

  • Obsidian Git: automatic backup commits to GitHub

  • Tasks: due dates and recurring items inside any note

  • Waypoint: folder-note table-of-contents inside %% Begin Waypoint %% blocks

Theme is Cupertino, dark. The only custom CSS that pulls real weight is a Kanban snippet that gives each lane a color and pulses the header when WIP is exceeded:

css

.wip-exceeded .kanban-plugin__lane-header-wrapper {
  border-left: 4px solid var(--kb-blocked) !important;
  background: rgba(240, 62, 62, 0.12) !important;
  animation: wip-pulse 1.8s ease-in-out infinite;
}

[A pulsing red border is unreasonably effective at making me close tabs.]

The CSS isn't doing much work, just aesthetics.


Tiny Gotchas That Save Hours

  • No .gitignore is a choice. I track everything, including .obsidian/. If I lose my laptop, the vault and every plugin config comes back from one git clone. Worth the noisy commits when plugins update their data.json.

  • wiki/index.md is load-bearing. If it gets out of sync, every query degrades. lint wiki checks it. Run it weekly.

  • The .claude/settings.local.json allowlist is the actual safety layer. I pre-approve git operations and a few specific mv patterns. Everything else still prompts. The vault doesn't get rewritten while I'm not looking.


You Don't Need My Setup to Use This

My folder structure isn't the part to copy. Karpathy's gist is. Paste it into whatever agent you already use (Claude Code, Codex, Cursor, Gemini CLI) and have a conversation with it about your existing notes.

You don't need Obsidian, a new vault, plugins, or my exact layout. The gist describes a pattern, not an implementation. Your agent will adapt it to whatever you already have: Plain markdown folders, Logseq, a mess of Google Docs.

The conversation goes something like:

"Here's the LLM Wiki pattern: [paste gist]. Here's my current setup: [describe it]. How would we apply this to what I have?"

The agent will ask clarifying questions, propose a folder split that fits your workflow, draft a CLAUDE.md (or equivalent) for your tool, and tell you what to migrate vs. leave alone. My version uses raw/ and wiki/ because that mapped to how I already thought. Yours might look completely different and still work.

The parts you can't skip are the ones in the gist: an immutable source layer, an LLM-maintained synthesis layer, and a schema file the agent reads on every interaction. Everything else is taste.


My Setup in tl;dr

  • Vault: git repo on GitHub, ~120k words across ~260 notes [most of those are hand-written Personal/ and Work/; the wiki layer is small on purpose]

  • Structure: raw/wiki/Daily/Personal/ + Work/

  • Glue: one CLAUDE.md with four operations

  • Wiki frontmatter: title, type, tags, sources, updated

  • Plugins that matter: Dataview, Kanban, Obsidian Git, Tasks, Waypoint

  • No MCP servers, no scripts, no Templater.


What I Want to Try Next

  • A weekly review operation: diff the week's daily logs, surface what didn't make it into the wiki, flag stale concept pages.

  • Embeddings on wiki/ for queries the index can't catch by keyword.

  • A FastMCP receipt for every ingest so I have a correlation_id linking the raw source, the pages it touched, and the log entry. Right now I trust the wiki because I just built it. In six months I'll want proof.

  • Publishing the CLAUDE.md as a template repo [long shot, the gist is already the better starting point].


Closing Thoughts

The whole system fits in one markdown file. Claude Code gets its hands dirty with the bookkeeping.

Every YouTube video about using a second brain effectively was really a video about me being lazy. The fix was handing the maintenance to something that doesn't get bored.

It's not perfect, but it's mine. And for the first time, it's also current.

S

Thank you Sanskar for putting this together for me :) This is awesome.

Field Notes

Part 1 of 2

Patterns and tools I reach for every week. Things that are working right now and will probably change as I learn more.

Up next

My Engineering Operating Manual - Patterns, Rituals, and Receipts

Field notes from 2.5 years in. Still learning, grateful for the nudges.

More from this blog

S

Sanskar Jaiswal's Blog

8 posts

Software developer in Bengaluru writing about homelab builds, self-hosted services, and local LLMs. Posts usually involve a Dell OptiPlex, an RTX 4050, and more YAML than is reasonable. I like receipt-driven automation, reversible systems, and setups I can rebuild from scratch in one command. Occasional detours into 3D printing and home networking. No hype, just direction.