Чтобы быть удобной пользователю?
-
во-первых, она может разбирать командную строку и получать из неё имена входных и выходных файлов, а если их там нет, то использовать stdin и stdout.
-
во-вторых, она должна иметь ключ
--help
или как-то так (кстати, в каких гайдлайнах это написано?) -
в-третьих, она может писать в stderr цветным (красным) текстом, отключать вывод цвета при перенаправлении в пайп, и иметь ключ командной строки для того, чтобы цвет не отключать.
-
возвращать разные коды возвратов при ошибках (есть ли какие-то стандарты? кроме «меньше нуля»)
-
утилита может уметь разбирать из командной строки команды с параметрами (по аналогии с git)
-
понимать локаль и выводить сообщения на языке пользователя.
-
уметь выводить свою версию (для того, чтобы это указывать в багрепотртах)
что ещё?