My AI Setup

How I actually use AI day-to-day as a developer — not the hype version, just what's in my workflow.

I’ve been using AI tools long enough now to have strong opinions about what actually sticks. This is the setup I’ve landed on — not aspirational, just what I actually use.

Claude Code is the main driver

The whole workflow runs through Claude Code, Anthropic’s CLI. It’s not an autocomplete plugin. It reads the codebase, understands context across files, writes and edits code, runs commands, and checks its own work.

What makes it different is that it operates at the level of intent, not keystrokes. I tell it what I’m trying to accomplish, and it figures out the steps. The conversation context means it can hold a whole feature in its head across multiple exchanges.

I’ve also set up custom skills — slash commands that do specific things like bootstrapping a dev session, running through a TDD cycle, or saving a checkpoint to the vault. The harness executes hooks automatically (before commits, after sessions). The whole thing feels like a collaborator that knows the project.

Second brain integration

The vault (Obsidian, at ~/second-brain/t3hK) is wired into every Claude Code session. Claude reads project notes, decisions, tasks. It writes back — session logs, captured ideas, updated task lists.

The memory system means context doesn’t reset between sessions. Start a new session and Claude already knows what the project is, what the last decision was, what’s blocked. The “orient” phase of a dev session takes seconds instead of the usual “where was I?” five minutes.

Claude API for building things

For the actual projects I build — agentic apps, tools with AI features — the Anthropic API is the backbone. I use it with prompt caching wherever possible (cache misses are noticeable), tool use for anything that needs external data, and streaming for anything user-facing.

The pattern I keep coming back to: small focused agents with clear scopes, rather than one big agent that does everything. Easier to debug, easier to reason about, easier to improve incrementally.

The philosophy

AI as a collaborator, not a replacement. I still write the code, make the architectural decisions, decide what to build and why. The AI handles the mechanical parts — the boilerplate, the “I know what this should look like but I don’t want to type it”, the “check if I’ve broken anything” loops.

What I’ve stopped doing: using AI to generate code I don’t understand. That’s how you get a codebase you can’t maintain. I read everything, push back when something seems off, stay in the loop. The goal is to move faster, not to abdicate.

back