I had some slightly different reqs, but used some of your code as inspiration for deploying Node apps with Capistrano.
In particular, sharing node_modules seemed like a really great idea.
Unfortunately, npm can't (yet) tell when git style dependencies require installation.
https://github.com/isaacs/npm/issues/1727
I had to revert to using a new node_modules each time, which is very sloooooow.
Just wanted to give you the heads up that a shared node_modules isn't a general purpose solution... at least not yet.