Requests have been made in the past for a system that allows truly dynamic command names, however this is not possible with the way the speech recognition engine works.
What I propose is admittedly not ideal, but I believe it to be possible considering the technical limitations.
I also believe the utility to be worth the effort of implementation(Speaking as someone that wouldn't be doing the actual implementing, of course
):
Allow tokens in command names, however, only rebuild the phrase list when a specific action(E.G. "update dynamic commands") is explicitly called.
Disregarding the issues for a moment, this feature would allow command phrases to be changed semi-on-the-fly at the cost of losing speech recognition while the profile reloads.
E.G.
A command has the "When I say" value "[Curly;Larry;Moe;Johnny 5;Newton;Newton Crosby;Stephanie;Stephani Speck;Ben;Ben Jabituya;Ben Jahveri;Fred;Fred Ritter;Sandy;Sandy Banatoni] follow me;follow me [Curly;Larry;Moe;Johnny 5;Newton;Newton Crosby;Stephanie;Stephani Speck;Ben;Ben Jabituya;Ben Jahveri;Fred;Fred Ritter;Sandy;Sandy Banatoni]"
Not only would every variation on this command add many derived commands, it's also difficult to edit the phrases because there's so much unchanging text in the way(imagine replacing "follow me" in five different commands).
This proposed feature would allow the "When I say" value to instead be "{TXT:Character} follow me;follow me {TXT:Character}"
The command that runs when the profile loads would set up the variable:
Set Text [Character] to '[Curly;Larry;Moe;Johnny 5;Newton;Newton Crosby;Stephanie;Stephani Speck;Ben;Ben Jabituya;Ben Jahveri;Fred;Fred Ritter;Sandy;Sandy Banatoni]'
Or, as a more likely scenario in which you'll only address one character at a time:
Set Text [Character] to [Saved Value]
For my setup, this would work quite well, as with the current optimizations all my profiles load in under 100ms, though I realize the phrase variations I use are minimal.
Coming back to the issues with this system, there is the obvious question of what happens when a token returns either "Not Set", or a result that would cause a duplicate command phrase.
The option I can see causing the fewest issues(and communicating clearly to the user that there's something amiss, rather than having random commands not work for example) is to abort the phrase generation when this occurs, and displaying a warning in the log.
When this state is reached, either the speech engine could fall back to the previous phrase list(provided it's not flushed or edited by the generation process), or be disabled until a valid phrase list can be generated(as when starting VoiceAttack, variables wouldn't be initialized yet, so this is likely to occur).
The only UI modification I suggest(aside from the one to implement the "update dynamic commands" action) is a checkbox in the profile settings to "wait for the dynamic commands update action before starting the speech engine", or a dropdown "execute this command to initialize dynamic commands before starting the speech engine"(or both, made mutually exclusive).
The second, potentially deal-breaking issue, is the overhead added by token processing while generating commands.
If this feature were to significantly increase the time this process takes, even for users that don't utilize it, I understand it's a non-starter.