I've always been puzzled by this:
$ git submodule
You need to run this command from the toplevel of the working tree.
Why do I need to run it from the top level directory? Is it a technical reason, or just because of a convention / possible flaw ?