背景

PythonでCLIツールを作成しています。
aws-cliのような、外部サービスにアクセスするCLIツールです。以下のようにコマンドを実行します。

# ユーザusr1を登録
$ mycli register_user --user_id usr1 --user_info "{'name': 'alice`}"

# usr1,usr2,usr3に関する詳細情報を出力する
$ mycli print_users --user_id usr1 usr2 usr3

コマンドライン引数のパースには、argparserモジュールを利用しています。

悩んでいること

CLIツールのサブコマンドやオプションの設計に悩んでいます。
例えば、以下のような内容です。

サブコマンド名やオプション名の命名規則

  • アンダースコア区切り?ハイフン区切り?
  • 複数の値を受け取ることができる(1個でもOK)オプション名は単数形?複数形? --user alice bob or --users alice bob

オプション

  • 使わない方が良い(競合しやすい)オプション名(-h?)

その他

  • 標準入力の使いどころ。ファイルで渡すか標準入力で渡すか
  • 引数の順番(例:コピー元、コピー先の順)

質問

CLIツールに関して、ベターパターンやアンチパターン、標準や慣習が記載されているサイトがありましたら、教えていただきたいです。
「command line interface design pattern」で検索してみましが、私が期待するサイトが見つかりませんでした。