← Back to home

Stop AI Code Changes From Blowing Up — One change-workflow Config

Long-Form Video · EP0025 May 31, 2026 07:17
What this episode covers

The episode two days ago, "our Claude Code is different," covered harness configuration, and a lot of you asked whether I could share something concrete.

Today I'm taking apart one of those files: change-workflow — add it and AI stops blowing up your code. Small changes no longer trigger a full round of deliberation, and changes that touch half the system no longer get hacked straight in and break things.

My first version graded changes high / medium / low by difficulty, and it failed, because difficulty judgments are unreliable (more files touched ≠ a more complex task). I switched to two dimensions: uncertainty × risk, splitting changes into simple and complex. This episode is how I worked that out step by step — plus one detail: why this config is written in mixed Chinese and English.

Companion downloads · Feed them to your Claude Code

Two days ago I posted an episode called “our Claude Code is different,” about how its harness configuration is different — like a wildly talented management trainee showing up, and I’ve already put him through a detailed onboarding tailored to the company. That one got tens of thousands of views, and a lot of people kept asking: could you share something concrete?

Today I’m sharing one of those files.

change-workflow, inside the rules folder

Go into the Claude config folder and there’s a rules folder holding nothing but “principles” — a behavioral guide, a set of process standards Claude Code follows whenever it does anything.

What I’m sharing today is one of those files, called change-workflow: how it should think and how it should execute when it changes code.

The most maddening problem

The most maddening thing about having Claude Code write code is that it treats every change the same way:

  • Sometimes a tiny change — tweak the frontend, reword a line of copy — and it still runs a whole round of deliberation before touching anything. Very inefficient.
  • Sometimes a change that looks tiny actually pulls in a bunch of modules, pipelines, and backend data, so it should research first and act second — and instead it dives straight in. Result: a pile of bugs.

How do you fix that?

Version one failed: don’t grade by difficulty

My first thought was to grade changes by difficulty into high, medium, and low, have it judge which one applies, then follow different processes.

But in practice, three levels didn’t work, because it can’t judge task complexity accurately — estimating from “how many files got touched,” for instance, doesn’t hold up: plenty of files can change without the task being complex.

So after a round of research, I compressed difficulty grading from three levels down to two, low / high. And the real split happens earlier, by thinking along two dimensions.

Two dimensions: uncertainty × risk

Dimension one, uncertainty. Before you start, is there already a clear plan? Can this change be described in a single sentence? Is what needs changing clear enough?

Dimension two, risk. If it goes wrong, how much does that cost? Do I need it tested repeatedly? Or can we just ship it and see whether it’s fine?

Judge on those two dimensions and changes fall into two buckets: simple changes and complex changes.

  • Simple change → execute directly.
  • Complex change → run four stages.

The four stages for a complex change

  1. Clarify — get an objective acceptance standard first: what does “done” actually look like? It’ll come back to me with clarifying questions.
  2. Research — search for technical approaches, see whether the community already has a best practice, borrow from anyone who’s done it, don’t reinvent the wheel.
  3. Plan — go into planning mode, compare approaches, make technology choices, and produce a pre-execution review checklist.
  4. Approve — only after I sign off does it actually start work.

Once the work is done, it also runs validation at a level determined by the risk tier, with a dedicated “poke holes in it” pass, then re-checks after. On top of that, an acceptance gate: follow another document for the git deployment steps, decide which memory files need updating, all spelled out. It also works out ahead of time which tasks can run in parallel, to save time.

A detail: why the file mixes Chinese and English

The file is written in mixed Chinese and English — Chinese for the narrative and the judgment logic, but I keep all the technical terms in English.

That isn’t for show, it’s to make the instructions more stable. Because Claude was trained on huge volumes of those English technical terms — commit, push, all trained in English — and using the “native” English word makes its understanding of the config more reliable.

I use Chinese for the skeleton because my Chinese is better than my English — I can tune a config file faster, and judge faster whether it’s both rigorous and concise, saying what needs saying in few enough words. That said, if your English is better than your Chinese, writing the whole thing in English would probably make execution even more robust.


One last aside. I share my time for free partly because I want to make some friends on a bigger platform and pass on what I’ve learned. Someone commented, “fix your cough before you come back to teach” — fair advice, but between friends, the first question is usually whether you’re feeling all right. And plenty of people go out of their way to tell me where they’ve applied this and what came of it, and in those moments I figure the dozen-plus minutes I record every day, unedited, aren’t wasted. So I’ll keep sharing.

How much care a change deserves isn't about how hard it is. It's two things — how clear you are before you start, and how much a mistake costs.