make still has a better UI than shell scripts. With shell scripts you have to maintain multiple files whereas a Makefile has all the scripts in a single file.
mything() {
# ...
}
otherthing() {
# ...
}
if [ $# -eq 0 ]; then
echo "Usage: ./run.sh [mything, otherthing]"
exit 1
fi
"$@"Each lifecycle hook should be a an executable of some sort like "scripts/{{command}}", be it a shell script or something else.