Yeah, could be thought of like that. A template being a custom combination of rules that you can use like a normal rule.

Here i use P from P^Q and then Q from P^Q, but instead of using this twice, i would make a template with both rules and it will then say Q from (P^Q)^R. It could be a big technical hurdle to make it work correctly though, or it may end up being easy using the already existing way to create trees from rules, just replacing A, B, C with P, Q, R.
And now that i think about it, functions/templates could be very useful if made persistent.
For example i want to more easily say that things are commutative. I create a new template Q^P from P^Q. Now i can reuse this custom template everywhere like a rule.