LGTM, but I'm no guru.
https://codereview.appspot.com/555220043/diff/553480046/scripts/lilypond-book.py File scripts/lilypond-book.py (right): https://codereview.appspot.com/555220043/diff/553480046/scripts/lilypond-book.py#newcode432 scripts/lilypond-book.py:432: snippet_names_file = 'snippet-names-%s.ly' % checksum It's strange that this is named *.ly but does not contain ly code. That's not your problem, though. https://codereview.appspot.com/555220043/diff/553480046/scripts/lilypond-book.py#newcode481 scripts/lilypond-book.py:481: # Sort the keys / basenames to get a stable order. Good idea. Is there a reason you chose not to build sorting into process_snippets()? https://codereview.appspot.com/555220043/