FWIW I’d suggest adding something about the default imports, since right now there doesn’t appear to be any discussion of this in either the section on custom plugins or the section that talks about how the project are imported by default. It was particularly surprising for me since I’d gotten tasks of type:Exec to work, since that’s apparently loaded by default in plugins.

As soon as you write a class, it’s just plain Java/Groovy/etc. development, and Gradle won’t interfere at all. I have no explanation why ‘Exec’ would work without an import. Maybe you had an import and weren’t aware of it. Or maybe you put your own class into the same package.