Add `@generates(...)` decorator and `clean()` helper