I often struggle with filter syntax so thanks for the counter-example as I find those easiest to learn from.
In playing around with it, there is an interesting subtlety with Mark's solution that makes it slightly different/better.
If the template does not already exist:
1) it will not tag the new tiddler with <<currentTiddler>> but because you are using the template name as a basename, you are effectively creating the template from a blank tiddler. So that may be a preferred behaviour. It must be some nuance in how the filter will not continue if the
[TaskTemplate]get[tags] fails to find something to get tags from and
addsuffix not working on an empty list.
2) it will not ask for confirmation to delete the new tiddler if you click the trash can instead of saving your edit ... must be a consequence of the non-draft tiddler not existing yet and the text field being blank
3) it will not create anything if you just cancel out of the draft by clicking the X ... once again ... maybe that is the preferred behaviour.
Also, I was trying every operator to see if there was an alternative solution to manually wrapping the title with [[ and ]] using addprefix/suffix but there doesn't seem to be a replacement for the $vars/addprefix<left>/addsuffix<right> construction. I thought that enlist would do it but it just grabs the first word of the currentTiddler title. Maybe there ought to be an enlist:greedy or enlist:value that interprets the entirety of the input as a single title and wraps some [[]] around it.
A slight tweak to Mark's solution to tag with currentTiddler even when there is a missing template file (and make the space padding in the $vars optional) is:
...
<$action-sendmessage $message="tm-new-tiddler" $param="TaskTemplate"
tags={{{ [[TaskTemplate]get[tags]] +[<currentTiddler>addprefix<left>addsuffix<right>] }}} />
...
It still does 2) and 3) though.
I suspect that you could pack that right into the <$button message= ... param=... > like the OP but I don't know how one would format the paramObject=. There doesn't seem to be examples in the TiddlyWiki manual pages.
/Mike