probably store in named directory rather than large toml file - allows for sh scripts of same name - default can't have same named commands - don't have to write to large file each time - can store description in separate file - don't have to edit file if command is deleted if directory does not exist and second argument is not init, stop. if directory does not exist and second argument is init, create directory. if qml.yml does not exist and second argument is not init, stop. if qml.yml does not exist and second argument is init, create qml.yml --- if qml.yml does exist and is not flagged... if there is no subcommand, list the available commands and part of their description. if the subcommand is in qml.yml, run the given script file with the other arguments. if the subcommand is not in qml.yml, stop. if qml.yml does exist and is flagged... if the flag is 'h', print the manual page. if the flag is 'a', add the file. if the flag is 'm', move the file. if the flag is 'd', delete the file. if the flag is 'e', edit the file. if the flag is 'r', rename the subcommand. if the flag is 'w', write a new description. if the flag is 'p', print the description of the given subcommand.