This actually makes the LLMs better at coding as well. They can verify their own results and iterate with far less manual validation.
Or just write tests to match the buggy code after you call them out for not writing tests.
I mean, the struggle is real...
No matter how weasel-proof you make the plans they are much better weasels and just do as little as possible and "the test not written is the test which never fails." There's a certain amount of zen to them.
Disclosure: I'm building AQ (aq.dev), which is partly why I'm deep in this. We wrote up the session-review practice here: https://aq.dev/guides/how-to-review-an-ai-coding-session/. The practice works with any agents too, nothing tool-specific about it.
I have found a key is to use end-to-end tests and not unit tests.
This has been working well so far after around 100 pull requests for an app I recently decided to make. So far it’s been good.
It’s free, no subscription.
I’ve done similar with backend projects utilizing GitHub actions to run tests and publish to staging for verification.
First of all, the agent writes code. After that, it creates tests and verifies that all of them work correctly by cracking the checks and rerunning the test suite.
Secondly, it gives me the ready to test code + set up environment (stage). I'm checking that the code actually works, and if not, we are making some fixes until I'm fully satisfied with the result.
Thirdly, the agent starts an external review using skill for code review and usually makes some additional fixes to codebase and corrects tests again.
After all, we are ready to commit and push the feature to the main branch. Before merging, we start CI/CD - which is important because it does a type check - and wait until the run finishes successfully.
That's how it happens in my case.
Quick note: this plan was built after many iterations of coding and testing, and it has finally proved that it works.
You've reached the end!
rk007•5h ago