The problem was that repeated uses of the shelve command failed. This was happening because the first invocation would leave all of the files in the working directory. Subsequent invocations would make TFS try to store files there, fail, and think that it didn't have local copies of anything, so it wouldn't check the files out. The problem was fixed by telling TFS that it really should get the latest source files. I also updated the readme and some other things to indicate that the shelve command works now.