Craft
8 min read

Stijn Symons is a Solutions Architect at November Five, turning tangled enterprise landscapes into clear, buildable scenarios. He writes about architecture that survives contact with reality, designing for business impact, de-risking big decisions, and building AI-accelerated delivery teams.
The point of the exercise isn't a cleaner config. It's learning how to scope work for AI: when to delegate, how to brief it, how to correct it mid-task. That instinct only comes from reps, and dotfiles are good reps. Low stakes, fast feedback, payoff in every terminal session after.
One evening, fifteen commits, all in the public git log. A zshrc full of workarounds for problems that no longer exist got modernised: a deprecated ssh-add flag fixed, an inputrc that did nothing removed, three redundant Python versions dropped. None of it hard, all of it the kind of thing you never get around to because finding it costs more than living with it.
The bigger swaps followed: fzf everywhere, eza for ls, bat for cat, rg for ag, zoxide for cd, all aliased so muscle memory holds. Shell startup went from 1.8s to milliseconds.
Building small things cheaply changes how you reach for AI on the big things. The engineers who get the most out of it treat it as a teammate they can hand scoped jobs to, and that instinct is cheapest to build on your own zshrc, not on a feature.
The migration was the excuse. Moving dotfiles from Bitbucket to GitHub, figured a clean-up would ride along. Half the lines in the zshrc turned out to be workarounds for problems that no longer exist. A fix for an old bash quirk. A PATH hack for a macOS version retired years ago. Aliases written and forgotten. So instead of grinding through it by hand, I opened Claude Code and handed it a few jobs.
One evening, 15 commits
I can be specific, because it's in the git log. On the evening of 28 March 2026, between 20:41 and 23:10, Claude and I closed fifteen commits on a config I'd been dragging around for years:
The archaeology reads right off the list. The ssh-add -K flag was deprecated back in macOS Monterey; Apple replaced it with --apple-use-keychain and the config never caught up. The inputrc did nothing, because readline doesn't touch zsh. Three redundant Python versions sat in the Brewfile. There was Sublime config in there, unopened for five years.
None of these are hard. They're the things you never get to, because digging through your config to find them costs more than living with them. Claude collapses that cost.
The jobs
The work fell into five buckets. None needed more than a sentence or two of prompting.
Clean up the dotfiles: modernise zshrc, kill duplicates, drop the legacy stuff, make it readable. The config got smaller and now it's navigable.
Use fzf wherever it fits: fuzzy autocomplete for history, files, directories, branches. fzf-tab replaced zsh-autocomplete, fuzzy cd, fuzzy reverse-search. Two days of accumulated friction, gone in an evening.
Profile shell startup. It sat around 1.8s. Claude profiled the chain, found the slow links, and brought it down to milliseconds.
Modernise the Brewfile. The prompt was "look at what's installed, suggest 10 swaps for newer tools." That's how eza replaced ls, bat replaced cat, rg replaced ag, difft became the git diff, and zoxide took over cd. All aliased, so muscle memory still works.
Recommend 20 new tools based on what was already installed, with reasoning. Some got adopted, some didn't. The reasoning was the useful part.
The rest of the arc is in the log: a Modernizing setup with bat, eza, zoxide commit two days later, then Cleaned up osx file, then gitconfig cleanup, then quality-of-life additions over the following weeks. A ctrl-z indicator on the prompt. Alias helpers scoped to the current project. A motd on shell start. Last week, a custom script that bumps everything (Homebrew, npm globals, internal N5 tools) in one command. Total time: a handful of evenings over two months. Return: every terminal session since.
The learning isn't about dotfiles
Claude Code makes small tools cheap to build. The kind you'd never schedule, never get approval for, never open a ticket about, but that save ten minutes a day for two years. A one-off script, a throwaway TUI, a custom alias generator. Stuff that lives in ~/bin and never comes near a PR.
Before, the friction was just high enough to skip it. Now it's a 20-minute conversation, and half the time the result is worth keeping. Building small things cheaply changes how you reach for AI on the big things. You stop treating it as autocomplete and start handing it problems. That shift is the whole point, and dotfiles are where it's cheapest to learn.
Why it works
The reward is immediate and personal: faster prompts, prettier ls, syntax highlighting where you used to squint. Nobody else lives with the result, so worst case is git checkout . and another try. And the real skill you build is briefing Claude well. The dotfiles are the cover story.
The engineers who get the most out of AI aren't the ones who treat it as magic. They treat it as a teammate they can hand small, scoped jobs to, and they've built the instinct for what makes a good job. You don't need a side project to develop that instinct. You need a zshrc with too many lines in it.
Take it for a spin
The dotfiles are public: github.com/stijnsymons/dotfiles. Fork them, take what's useful, or read them as a prompt for your own cleanup.
If you're an engineer thinking about joining us, this is the mindset we hire for. Not how much AI you've used, but whether you're the kind of person who'd spend an evening making your own tools better, now that you can. If that's you, come talk to us.