Best way to extend and reconfigure built-in tasks?

Could you please explain your example, I’m not sure I understand how it should work.

Previously I had a number of tasks like this:

task (generateConfigA, type: Copy) {
    dependsOn ...
      ext.template = ... // name of the source template
    ext.target = ... // destination file
      from templatesDir
    into target.getParent()
    include template
    rename template, target.getName()
    filter(...)
  }

Now it shortened to this:

task (generateConfigA, type: GenerateTemplate) {
    dependsOn ...
      template ...
    target ...
}

How would it work with the plugin?