I just built a litte add-on, to help me package things up (see, it seems I occasionally forget that I add files to projects and then they won't get packaged when I tell the project to package itself).
From that was born the ASDF-TOOLS package (designed to work in conjunction with my build-asdf-package shellscript). It has two exposed function calls.
ASDF-TOOLS:CHECK-PACKAGE goes through the ASDF system definition and checks that the files specced there exist in .filelist and similarly for any file you explicitly ask to have packaged; differences are printed to *STANDARD- OUTPUT* and if there are files that are needed for building that are unlisted in the packaging file information, the function returns NIL.
ASDF-TOOLS:PREPARE-PACKAGE goes through the ASDF system definition and all extra files you specify, then dump this data to .filelist, it also updates the .version file.
Obvious extensions from here: An :around method on ASDF:PERFORM that handles the "incorrect FASL version" condition and forces a recompile of the component, then continues. A function that grovels through an ASDF system and deposits a gzipped tarball in the right directory. I have a vague memory of having seen an ASDF component class that is neither compiled nor loaded, if I use that to replace .filelist, I should in principle be able to move my packaging from a unix shell script to lisp code. Neat, in a way.