One of the approaches I'm taking is to try hard to simplify the code generated by LLMs. If you can reduce its complexity, it usually means you have a fairly good idea of what's going on in the code change. I consider which edge cases are getting unnecessarily handled, which new vocabulary was introduced where existing or simpler vocabulary would be fine, etc. etc.
I also have a /simplification-check skill I run after pretty much every large change, and that already helps surface the murky areas of the code and sometimes remove complexity before I even start reviewing, thus accelerating the review.
I also have a /simplification-check skill I run after pretty much every large change, and that already helps surface the murky areas of the code and sometimes remove complexity before I even start reviewing, thus accelerating the review.