Ok, I found the answer to this. Apparently, the Yeoman generator-generator added a "files" option to my package.json when I first generated my generator (that's a mouthful).
It looked like this...
"files":[
"app"
],
This tells npm exactly which files to include, which seems kinda dumb, since it leads you down a path to failure. If you follow the official Yeoman tutorial further and create your own subgenerator, it will not get published, due to this unfortunate config setting.
Just delete this json property completely and all the files in your generator will get published to npm when you "npm publish" (you need to increment your "version" in package.json to publish again though).