Category
AI
Reading paths
Read end to end.
Greenfield
Engineering, AI, and the businesses we build from scratch. Solo-narrated essay episodes on the rules, layers, and judgment calls behind working with coding agents in real codebases.
Start →Agent-ready React
An ongoing series on making legacy React codebases ready for AI coding agents — from CLAUDE.md and rules to hooks, subagents, and skills.
Start →Choosing Your AI Stack
A six-part series on picking models, pricing models, and building workflows that aren't locked to any single provider.
Start →AI Tooling for Developers
A seven-part guide to the agent ecosystem beyond your coding IDE — MCP vs CLI tradeoffs, Jira/Notion integrations, release note automation, Paperclip, OpenClaw, and Hermes.
Start →Browse all series →
See every reading path on the site.
- ·3 min read
Past Ten: Running Claude Code for a Team on One Debian Box
The CLAUDE_CONFIG_DIR trick stops being the right answer the moment the accounts belong to different people. On a headless Debian box there is no Keychain, credentials are a 0600 file, and the isolation boundary you want is the one the OS already gives you — plus managed settings, systemd slices, and a token flow that survives having no browser.

- ·3 min read
Two Claude Accounts, One Machine: Hot-Swapping Subscriptions with CLAUDE_CONFIG_DIR
Your work seat and your personal seat can both stay logged in, run at the same time, and share every agent and skill you've written — because CLAUDE_CONFIG_DIR quietly namespaces the credential entry by a hash of the directory. Here's the mechanism, the full setup for bash and zsh, and a prompt you can paste to have Claude build it for you.

- ·3 min read
Exit 0 Is Not Evidence: Why AI Coding Agents Need Receipts, Not More Memory
Claude, Codex, Beads, and gbrain each preserve a different kind of truth. One week of silent failures taught me that an agent's report is a claim, memory is a hypothesis, and done requires evidence bound to the exact state that was tested.

- ·3 min read
Statusline v2: Three Rows, Clickable Links, and a Live Project HUD
Upgrading a Claude Code statusline past one line: a three-row layout, clickable branch and PR links, rate-limit pacing arrows, and a live project-state row for GSD, OpenSpec, and Beads — plus the full updated script and where to start if you're extending your own.

- ·3 min read
Workflow vs Agent Team: Two Ways to Run Many Claudes
Once you're spawning subagents, you hit a fork: let the lead agent decide who to spawn and when, or script the orchestration deterministically up front. They feel similar and fail differently. Here's how I pick.

- ·3 min read
The Subagent I Deleted: A Field Note on Layer Discipline
I wrote a subagent that worked. I deleted it ten days later. The replacement was three lines of Prettier config. A short note on the wrong-layer trap, the four-questions test, and why a mature agent-ready repo isn't the one with the most artifacts in it.

- ·3 min read
Installing Isn't Teaching: What I Learned From Auditing My Own Shell History
I asked Claude what new CLI tools I should install based on my last week of shell history. The honest answer wasn't a list of tools — it was that I'd already installed half the modern tools I needed and was still typing `cat` and `cd` like it was 2010. A short note on the gap between *having* a tool and *reaching* for one, and where that same gap shows up in your `CLAUDE.md`.

- ·3 min read
Skills: The User-Facing Workflow Layer
Hooks enforce rules. Subagents review work. Commands and skills are how the team actually invokes them — thin wrappers route to detailed workflows, encoding multi-step knowledge in a single, memorable slash command. The architecture dissected.

- ·3 min read
Subagents That Catch What Hooks Can't
Hooks block known-bad patterns. Subagents make the judgement calls hooks can't — type safety, architecture compliance, accessibility. One real subagent, dissected, plus a template for writing your own.

- ·3 min read
The Identifier That Made My Podcast Sound Russian
I spent an evening shrinking ElevenLabs chunk size from 2500 characters down to 1000, convinced the model was choking on density. It wasn't. One camelCase identifier — appearing three times in a single paragraph — was making my voice clone drift into a Russian accent. A field note on debugging non-deterministic systems.
