Field notes · Claude Code

The Teammate in My Terminal

or: how one sentence becomes a merged pull request

Prefer to watch? Every animation in this post, narrated in about three minutes, with captions built in. The narration is a local AI clone of my voice.

My last post, and its video, started as a few sentences from me and ended with one word: "Merge". This is the setup in between, told through the five things I care about: scale, speed, reliability, visibility and failover.

Personal projects only

Everything here comes from my own repos: this website and my video studio. It isn't about my day job, and I'm not affiliated with Anthropic. The numbers are real, from building the previous post.

claude code · the last post
me …write a blog with video for me. Clearly say this is not how it is at Nissan.
→ reads CLAUDE.md, the video-studio skill, my site and two old repos
cc One question first: which write-up do you mean?
→ drafts, tests, voices, captures, mixes, checks · preview + PR #22
me Merge
cc Merged. Live on desktop and phone ✓

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.
01visibility

One sentence in, a merged PR out

The real trip behind the last post. My lane is short on purpose.

Animation · who did what, from my first message to the live site
0 / 14Press play to follow the last post from my first message to the live site.
Two lanes, me and my teammate. I send one long message; it reads my rules, my site and two old repos, asks one question, drafts the post and tests it in four views. I ask for fewer words; it rewrites. The voice renders in the background, Whisper checks every line and nine misheard words are fixed, then it captures, mixes and checks the video, and opens a preview and pull request. I type Merge, and it checks the live site. ME TEAMMATE one ask84 words reads my rules and reposCLAUDE.md · skill · site · 2 old repos asks one questionwhich project did you mean? answers28 words drafts the post14 sections · 7 animations tests it in 4 viewsoverflow · errors · links · themes "fewer words"44 words rewrites it1,054 words · 4 new animations voices it, in the backgroundmy cloned voice · local · ~20 min Whisper hears every line9 words wrong → fixed captures, mixes, checks11 scenes · -14 LUFS · QC passed preview + pull requestPR #22, waiting for me "Merge"1 word checks the live sitedesktop + phone · no errors 157 words everything else
    02scale

    Rules written down once

    Context comes in layers. Only the top one is always loaded; the rest wait until a request needs them.

    Interactive · what gets read for each request
    1. CLAUDE.mdalways loaded · who I am, ≤ 5 min, -14 LUFS, 1080p, never commit media849
    2. skill descriptionsalways visible · one paragraph each113
    3. SKILL.mdwhen a video request matches · readiness → brief → route1,258
    4. one workflowonly the one it routes to–
    5. referencesstyle specs, read on demand–
    6. studio/ toolsthe code it runs

    Pick a request to see which layers load.

    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.

    03scalespeed

    Helpers with their own context

    To fact-check this post, the main session sent a helper agent to read six documentation pages. The helper used about 196,000 tokens in its own context window, made ten tool calls, and returned about one page of verified facts and links to the main session. main session writing this post read 6 docs pages 1 page of facts helper agent its own context window ~196k tokens used · 10 tool calls none of it in my session
    Fan out the reading, bring back conclusions. A subagent runs in its own context window.
    04reliability

    A list, not a vibe

    Free commands run. Paid ones ask. That's a file, not a promise.

    Animation · five commands meet my allow list
      runs right away
        asks me first

          42 allow rules, all free and local. Press run.

          From my studio's .claude/settings.json. Rules are checked deny, then ask, then allow; anything unlisted asks.

          05reliability

          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".

          Animation · the Stop hook in my cloud sessions
          1. Pick a scenario.

          It fired twice while I built the last post. Hooks live in settings.json; there are events before and after every tool call, too.

          06speed

          Speed is overlap

          Interactive · the same work, two schedules
          A timeline of building the last video, in minutes.

          Pick a schedule.

          minutes, rounded from one real build

          07reliability

          Verify, don't trust

          The voice model can't hear itself. Whisper can.

          Animation · what the second pair of ears caught

            Nine lines from the last video, as written.

            08failover

            When a word won't come out

            "Brew Miles" defeated every take. So there's a ladder:

            Animation · the re-voice ladder
            1. retry: 5 new takesa different random seed each time
            2. respell it: 3 spellings"brew miles", "Broo Myles", "my Brew Miles trips"
            3. reword the line"a beer on a brewery tour"
            4. ask meonly if the meaning would change

            Press play.

            09failover

            When the session dies

            Mid-build, the session's worker restarted. Here's what survived:

            Animation · a restart in the middle of a render
            1. Press restart.
            10visibility

            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

            Sorry, quick interruption

            My teammate has never once asked for a coffee break. It also couldn't say "Brew Miles" in eight tries. Nobody's perfect.

            11

            Five decisions

            1. Where do the rules live?
              retyped in chata wikiCLAUDE.md, in the repo

              Every session starts informed. Cost: keep it short and current.

            2. How do workflows repeat?
              saved promptsa skill

              One trigger, many runbooks. Cost: a description that routes well.

            3. How are must-dos enforced?
              asking nicelyan allow list + hooks

              The file decides, not the mood. Cost: some prompts to click.

            4. How is generated work checked?
              trust ita different tool checks it

              Whisper hears, Playwright sees, QC measures. Cost: minutes per run.

            5. Who presses merge?
              the agentme

              Taste and accountability stay human. Cost: one word.

            12

            The well-earned drink

            Every Brew Miles trip ends with one:

            1. Write the rules down once, where every session reads them.
            2. Package workflows as skills that load only when needed.
            3. Enforce the must-dos with a list and a hook, not a reminder.
            4. Verify with a second pair of ears (or eyes), and keep a ladder for when it fails.
            5. Keep merge for yourself.
            Further reading
            Show the public docs this post links