I use !$ multiple times every day but you just helped me make the connection to try !^ for the first argument and I think I'm going to start using that as well. Thanks!
At least in zsh, there are also !:1 for the first argument, et cetera with the rest of natural numbers, and something like !:* for all the arguments without the command.
The generic form is !n:m for n-th last command line and m-th argument, with an omitted n being a shortcut for the last line.
Another example could be
for "save the previous command into the file myscript".