It appears that IDL generation only searches for Shank objects in crates that contain "cdylib". In cases where the interface defining instructions and state is split from the program crate, this script fails. It appears that the split program/interface organization is quite common and even used for the new p-token (maybe it will not in the future?).
What are your thoughts on this?