They are all experts in all of these fields. I spin up new agents constantly.
I suspect that the root of the problem is not the agents ability to write good code but rather its reluctance to get rid of already-written code and instead rather *add on top* of the project. This accumulates waste that kills the project over time.
When I tell the agent to "don't hesitate to change existing code if your new approach would benefit from it" it seems to be a bit more daring.