- Make the goal testable. “Working” is vague; define what success looks like.
- Constrain the change. Prefer small, reviewable edits over rewrites.
- Keep sources of truth explicit. Decide what is authoritative: code, docs, config, tests.
- Ask for trade-offs, not just answers. Alternatives reveal constraints and risks.
- Separate discovery from delivery. Explore broadly, then switch to surgical execution.
- Verify in the loop. Run the narrowest test that can falsify the current assumption.
- Treat generated code as a hypothesis. Read it like you didn’t write it.
- Preserve intent and naming. Don’t “improve” structure unless asked.
- Make decisions reversible. Prefer changes you can roll back quickly.
- Write down the why. Lightweight notes prevent re-deciding the same thing later.