See what a change will touch before you say yes¶
Verified: 2026-10-13
In developers' words: The plan, the diff, small commits
By the end of this level you read the list of files a change will touch before you say yes, you make one commit per change, and when something breaks you type one sentence to find which change did it.
"Which change broke it?"¶
You asked for a green button. The button went green, and the login stopped working. You never asked for anything near the login. Something in that one change touched it, and you have no idea what, because you said yes to the whole thing without seeing what was in it. The only move you know is "try again", which is one more change you cannot see. That is how a two-minute ask costs an afternoon.
Developers never say yes to a change they have not read. They ask for the plan first, the files a change will touch, like the ghost of a block before you place it. They keep each commit to one thing. And when something breaks they read the diff: what changed since the last commit that worked. Your AI does all three, if you ask. Three sentences.
A change you did not read can touch anything¶
- The AI changes what it thinks you meant, not what you said. "Make the button green" can reach the login, because the AI decided the two shared a colour. You will never know unless you ask to see the list first.
- One big change has no "which". Three things in one commit is three places to look, and no way to undo one without the other two. One thing per commit, and "which change broke it" has one answer.
- "Try again" is a second guess on top of the first. Every retry on a broken app adds more changes you have not read. The list of what changed is the only thing that tells you where to look. Without it you are guessing, right alongside the AI.
- You can't avoid it. "Plan", "commit", "diff": your tool says these words every day, and so does anyone you ask for help. Better to learn them now, on purpose, than later, with the login down.
- Five minutes now, or an afternoon later. After this, "which change broke it" costs you one sentence.
The level in one picture¶
before you say go: the files it will touch
Button.tsxthe colour you asked forstyles.cssthe greenLogin.tsxyou never asked about this- a file you never asked about: ask why first
one change per dated save, named for it
- v1-worksTue 6 Oct
it worked
- footerWed 7 Oct
1 file
- button colourWed 7 Oct
3 files
- broke: loginToday
login fails
one line per file, with the save it came in
Button.tsx"button colour"styles.css"button colour"Login.tsx"button colour" · the one
Ask what a change will touch before you say yes¶
The plan is every file the AI means to change, and why, before it changes anything. The example asks for a green button; put the change you actually want in its place, or keep it. If every file on the list is one you would expect, type "go". Nothing changes until you do.
Prompt: Make the button green. Before you change anything, show me the plan: every file you will change for this and, for each one, one plain sentence on why. Then wait for my OK.
✓ A short list of file names with a reason each. For a button colour, one or two files with "button" or "style" in the name. A file with "login", "auth", "database" or "config" in its name is your signal: ask "why that one?" before you say go.
- Before
Your ask, in a sentence. Nothing has changed yet.
- After the prompt
The plan: the files the change will touch, each with a reason, waiting for your go.
Say go, and commit that one change on its own¶
Small commits: one change per commit, so when something breaks there is one block to take out. This step makes the change you read, nothing else, and commits it with a message that says what it was.
Look at it first if you can: on Lovable and Bolt.new in the preview, on Claude Code and Cursor by asking "run it so I can look at it". Can't check it? "Commit it anyway" is allowed.
Prompt: Go. Change only what is on the list, nothing else, even if you notice something you would improve. When it is done, commit it with the message
button colour, put it on GitHub, and tell me the short id.
✓ One line with a short id, like b2c3d4e button colour, and one change in it. Asked to
install some pieces before it can run? Say yes, that is normal, then open the address it gives
you.
- Before
The list you read, and your go.
- After the prompt
One commit, one change, named for what it was, next to
v1-workson GitHub.
When it breaks, ask for the diff since the last good commit¶
The diff is every file that changed since v1-works, and the commit each one came in
with. Developers read the raw one; you ask for it in plain words, and the file names do the work.
Replace the part in angle brackets, brackets included, with what you saw, in your own words, like "it says wrong password for everyone". Nothing broken yet? Write "nothing broke, just show me" in its place.
Prompt: Something broke:
<what you see>. Show me the diff sincev1-worksin plain words: one line per file that changed, and for each file, which commit it came in with. Don't fix anything yet.
✓ One line per file, each with the commit it came in with. A commit is named for what you
asked, not what it touched: a login file inside "button colour" is the one. Long list? Ask "which
of these could affect <the broken part>?"
- Before
Your commits since
v1-works, and a broken app. Which one did it? - After the prompt
One line per file. The login file came in with the button colour commit. That is the one.
Keep that sentence. It is your "which change broke it", and the one line on this page to remember: "what changed since v1-works, and which commit did each come in with?"
Ask for two things at once, and watch the list catch it¶
v1-works and button colour are both on GitHub, so nothing here can cost you
anything. Ask for two things in one commit, the thing this level says not to do, and watch what
it does to the diff. Four prompts, one at a time.
Prompt 1: Change my home page's headline to the word TEST and, in the same change, rename the contact page's button to SEND. Before you change anything, show me the plan: the files you will touch, one sentence each. Then wait for my go.
Two files, on two pages. Two things in one plan: already two places to look.
Prompt 2: Go. Commit it with the message
test and send, on this computer only, not on GitHub.
A short id with test and send. On this computer only, so prompt 4 can throw it away without touching GitHub.
Prompt 3: Show me the diff since
v1-worksin plain words: one line per file, and which commit did each come in with?
Both files under test and send, and the button files under button colour. Now imagine the headline broke: two files in one commit, and the diff cannot tell you which. That is why one thing per commit.
Prompt 4: Put every file back exactly as it was just before the
test and sendcommit, and throw that commit away, so my history looks as if it never happened.
It may ask permission for a command with "reset" or "hard" in it. Say yes if the commit it names is test and send: it changes only your computer, that commit never went to GitHub, and button colour stays.
- Prompt 1
The plan lists two files on two pages, before anything changes.
- Prompt 2
Two changes in one commit called
test and send, on this computer only. - Prompt 4
The
test and sendcommit is thrown away.button colourstays, one change, as it should.
That is the whole habit. Next Tuesday, when the login breaks after three changes, you type "what
changed since v1-works, and which commit did each come in with?" and a file name tells you
where to look.
The list tells you where to look, not what to fix¶
One limit. The diff names the file and the commit it came in with. It does not say what inside that file went wrong, or promise it was the only cause. From there you have two moves: ask for a fix in that file only, or go back to the commit before it and redo the colour on its own. Level 4 is for when the fix itself keeps missing.
Common problems¶
A file I never asked about is on the list.
That is the level working. A file with "auth", "login", "database" or "config" in its name, for a button colour, means the AI decided to change it while doing what you asked. Ask "why that one?" before you say go, and "what is that file for?" if the name means nothing to you. Verified 2026-10-11.
It changed things first and explained after.
Don't accept it yet. Ask "undo that, and this time show me the plan first and wait for my OK". If the change is already in, step 3 still works on it.
It keeps improving things I didn't ask for.
Put this sentence at the top of every prompt: "Change only what I ask for."
It showed me code instead of words.
Say "in plain words, no code, one line per file". The raw diff is for developers; the file names are what you need.
It refused the "reset" command.
Ask "put the files back the way they were just before
test and sendand drop that commit, without that command". A refusal can cancel the other things it was doing in the same breath, so ask what it did before the refusal, and for one step at a time.On Lovable and Bolt.new.
The plan shows in the chat as the change is made, so step 1's "wait for my OK" may not hold; read it anyway, and ask "why that one?" after. Their version history is your line of commits, one per change if you ask for one thing at a time. Step 3 works the same. Not yet tested there.
Each thing on this page, with its three names¶
| In the game | Developers say | Plain |
|---|---|---|
| the placement ghost | the plan |
the list of files a change will touch |
| one block per save | small commits |
one thing per save |
| a save | commit |
every file, right now, dated |
| (no game word) | a diff |
what changed since a save |
| a file in the world folder | Login.tsx |
a page of your app, named after the page |
Next · Level 3 "Don't test on your users." Try every change on a copy first.