- Always plan before coding — break complex tasks into small, verifiable steps before writing code.
- After each step, verify the result works (run tests, check output) before moving to the next.
- Break tasks into verifiable subtasks — each subtask should produce a testable output that can be validated before proceeding.
- Decompose large tasks into subtasks of 1–3 files each — smaller scope means fewer errors.
- State assumptions explicitly before starting — verify them with the user if uncertain.
- When exploring unfamiliar code, read tests first — they document intended behavior.