Keep the App Always-Working
This is the discipline that makes everything else possible:
- Run after every step. Not every three steps. Every one.
- working states only. A commit is a save point you can return to. If a step breaks something you can't fix in a minute or two, throw it away (
git restore .or revert) and re-prompt with a clearer ask — don't pile a fix on top of a broken base. - One concern per step. If you're tempted to also "quickly fix that other thing," resist. Finish the current slice, commit, then start a new step.
- Describe the bug, don't diagnose it. When something breaks, tell the AI exactly what you saw: "After clicking the second star, the counter shows 1, not 2." Let it find the cause.