I want AI that knows me. My context, my goals, my way of working. Not a generic assistant I have to re-explain myself to every morning. So I built a setup that does exactly that.
AI can produce almost anything: code, text, images, video. The capability is not the problem. Direction is. A ship without a course still moves, just not toward anything useful. The more context you give it, who you are, what you are building, what matters today, the more it acts like a colleague and less like a random tool. You want to be the captain.
CLAUDE.md
As Claude Code reads CLAUDE.md at the start of every session, I put mine in my Obsidian vault and symlinked it globally:
~/.claude/CLAUDE.md -> ~/vault/CLAUDE.md
And the whole vault structure looks like this:
vault/
├── 00 - Index/
│ ├── TELOS.md # life goals, career sequence, psychometric profile
│ ├── SPRINT.md # sprint rules and protocol
│ └── sprints/ # weekly sprint files
├── 10 - Inbox/ # new notes land here first
├── 20 - Topics/ # processed knowledge (security, AI, business, tech)
├── 30 - Resources/ # books, courses, articles, tools, writeups
├── 40 - Projects/ # active work (freelance, blog, bb targets)
├── 50 - AI/
│ └── config/
│ ├── CLAUDE.md # symlinked to ~/.claude/CLAUDE.md
│ ├── skills/ # symlinked to ~/.claude/skills/
│ ├── memory/ # persistent Claude memory files
│ └── active-mode.md
├── 99 - Archive/ # closed projects
└── 99 - Log/ # daily session logs
The whole framework version controlled, iCloud synced, applies to every session on every machine.
My CLAUDE.md tells Claude to read my goals, load the current sprint, and open with a two-sentence reminder of what actually matters. There is a difference between an assistant that asks “how can I help you today?” and one that says “you need to send a proposal by Thursday and your GitHub is the blocker right now.” The first one is a tool. The second is closer to a colleague.
Skills: slash commands that change who Claude is
Claude Code supports custom slash commands. You write a markdown file with instructions, drop it in ~/.claude/skills/, and call it with /skill-name. Mine are stored in the vault and symlinked so they stay in one place.
Here are a couple of skills I created for myself as examples:
/coach loads my goals and current sprint and uses them as the anchor for everything. If I bring up a decision that conflicts with my stated goals, it will say so.
/health loads my medical history and training context. Instead of re-explaining everything from scratch, Claude already knows what matters.
Memory & Session Logging
My CLAUDE.md instructs Claude to track every session automatically. When a task block starts, it logs the time. When it ends, it logs the stop time and what was done. At the end of the day, it writes a high-level summary and commits it to git.
This is the memory. Not stored in Claude’s context — written to files, version controlled, readable the next session. The log is how Claude knows what happened before you even say a word.
Modes: switching context without switching tools
The final layer is modes. A mode is a single file at ~/vault/50 - AI/config/active-mode.md containing the name of whatever context I am in — coach, health, or nothing.
At session start, Claude checks if that file exists. If it does, it loads the corresponding skill and applies its rules for the entire session. If I am in coach mode, Claude opens as an accountability coach every morning until I change it. No need to type the slash command again.
Instead of invoking a mode each time, the mode persists. The context carries over. Yesterday’s decisions are still loaded.
What this actually looks like
A typical morning:
- Open Claude Code
- Claude reads the instruction file, loads goals, checks the sprint, detects the active mode
- Starts the session with two sentences that tell me exactly what matters today
- The session log gives Claude context it would otherwise need me to re-explain every time
- I type
/logat the end and the session is documented and committed automatically
The system does not make me more productive by doing more. It makes me more productive by eliminating the overhead of re-establishing context every day. That overhead is invisible when it is small. It compounds when it is not.