The short version, for whichever hat you're wearing
- Write the rules down once, in the repo, and package workflows as skills that load only when needed.
- Let a list and a hook enforce the must-dos; free commands run, paid ones ask, and nothing ends uncommitted.
- Verify with a second pair of ears, and keep merge for yourself.
- CLAUDE.md is your onboarding doc; skills are runbooks with a one-paragraph trigger.
- Permissions are an allow list; hooks are shell scripts, and exit code 2 means "no, fix this first".
- Run long work in the background, and check generated output with a different tool than the one that made it.
- Every change arrives as a preview and a pull request, so review stays where it already is.
- Spending is opt-in: paid generation is off the allow list and always asks, with an estimate.
- The rules live in the repo, so they survive new sessions, new machines and new people.
One sentence in, a merged PR out
The real trip behind the last post. My lane is short on purpose.
Rules written down once
Context comes in layers. Only the top one is always loaded; the rest wait until a request needs them.
Real word counts from my repo. The whole skill is 21,195 words in 24 files. Skills load their body only when used; CLAUDE.md loads every session.
Helpers with their own context
A list, not a vibe
Free commands run. Paid ones ask. That's a file, not a promise.
From my studio's .claude/settings.json. Rules are checked deny, then ask, then allow; anything unlisted asks.
Hooks: rules that can't be skipped
CLAUDE.md is advice. A hook is a script that runs every time, and exit code 2 means "not yet".
It fired twice while I built the last post. Hooks live in settings.json; there are events before and after every tool call, too.
Speed is overlap
Verify, don't trust
The voice model can't hear itself. Whisper can.
When a word won't come out
"Brew Miles" defeated every take. So there's a ladder:
When the session dies
Mid-build, the session's worker restarted. Here's what survived:
Every change is a pull request
Seven pull requests over two days, and what I typed to ship each
lines changed per PR on this site · I read every preview first
My teammate has never once asked for a coffee break. It also couldn't say "Brew Miles" in eight tries. Nobody's perfect.
Five decisions
- Where do the rules live?retyped in chata wikiCLAUDE.md, in the repo
Every session starts informed. Cost: keep it short and current.
- How do workflows repeat?saved promptsa skill
One trigger, many runbooks. Cost: a description that routes well.
- How are must-dos enforced?asking nicelyan allow list + hooks
The file decides, not the mood. Cost: some prompts to click.
- How is generated work checked?trust ita different tool checks it
Whisper hears, Playwright sees, QC measures. Cost: minutes per run.
- Who presses merge?the agentme
Taste and accountability stay human. Cost: one word.
The well-earned drink
Every Brew Miles trip ends with one:
- Write the rules down once, where every session reads them.
- Package workflows as skills that load only when needed.
- Enforce the must-dos with a list and a hook, not a reminder.
- Verify with a second pair of ears (or eyes), and keep a ladder for when it fails.
- Keep merge for yourself.
Show the public docs this post links
- CLAUDE.md and memory (Claude Code docs).
- Skills (Claude Code docs).
- Permissions and settings (Claude Code docs).
- Hooks (Claude Code docs).
- Subagents (Claude Code docs).
- Claude Code in the cloud (Claude Code docs).
- faster-whisper, the local speech-to-text that checks the voice.