Skills accept arguments from the command line and substitute them into the instructions.
$ARGUMENTS gets the full argument string. $ARGUMENTS[0] or $0 gets the first positional argument. $1 gets the second.
So if your skill has Fix issue #$0 in the current codebase and you run /fix-issue 347, Claude sees Fix issue #347 in the current codebase.
You can also run shell commands inside your skill using backtick syntax. The output gets inserted before Claude sees the instructions. I find this pattern comes up constantly when you need live data, like the current git branch or a file's contents, before Claude starts working.