I usually start with high-level integration specs and make them pass. After this I should have a good understanding of how things should work under-the-hood which is a good moment to TDD things. So then I write unit tests and see if my code still fits, it usually partially does, so I refactor some things here and there and call it a day.

FWIW module builder has a simple interface so it should be easy to cover with unit tests.