Similar to mauro, I also have tons of command line utilities in my Python packages. The users use them as libraries but have some terminal commands for common operations (they even provide them so I can add them in future releases).
I like how setuptools for Python manages this command line tools as “hooks”. You define in a configuration file the name of the command and the entry function to execute, like:
entry_points={
'console_scripts': [
'foo = foo.tools.cmd:foonction',
],
}
Many Python packages provide such tools and at least in our collaboration we use them on a daily basis…