Is there an equivalent of git commit -a for staging new files?
This is the behavior of git add -A, but only if you call it from the root directory of your repository. Otherwise, it will only add files in the subdirectory.
Or does there not exist such built-in functionality, making the easiest program to write something like git add -A $(git rev-parse --show-toplevel)?
You could use git’s built-in aliasses, which include the ability to invoke a shell script.