This may be my own blindness (because it is in the help file - I found it after I noticed it in code the other day) but somewhere in the early part of the macro doc, it might be wise to cover all the ways you can get parameter data to a macro -
/N= & Parse_Str/Parse_Int, named in the prototype
/N= & Parse_Str/Parse_Int, extracted in the macro
C-style, named in the prototype
C-style optional, via ... and Get_Param_Type
And mention the implications of each. For example, if you use C-style parameters, you can't really use the macro from Macro|Run or from a Template. You can't pass parameters by reference using /N= and friends.
I know this is fairly basic, but it's a lot easier for me to page down past it than it is for the next person sitting where I was a year ago to figure it out.
I'd also suggest a comprehensive review of all the macro source and the kernel code, in order to make sure everything useful outside of it's own context is documented.
Documentation of how to really use the dialog controls would be spiffy, too. I've written a stack of panes dialogs, and it took me a while to figure out how to do some of what I needed to do - I had to basically surf the baseline code looking for similar cases. dlg_exam.s was helpful in this regard as well.
Maybe an appendix of FAQ type of things - How do I expand a template from code? How do I create a template metacommand for (X)?