mcpField
C
creating-cli-tools

creating-cli-tools

github.com/zenobi-us開発6839 回インストール今日更新
リポジトリ

creating-cli-tools について

creating-cli-toolsは、人とスクリプトの両方が扱いやすいコマンドラインインターフェースを設計するスキルです。要件を整理し、コマンド、入出力、エラー、安全性、設定、例を含む簡潔な仕様を作成します。

主な機能

  1. 01コマンドの目的と利用者の明確化
  2. 02コマンドツリー、引数、フラグの定義
  3. 03出力、エラー、終了コードの指定
  4. 04安全性、設定、環境変数ルールの設定
  5. 05実行例の提示

活用シーン

  1. 01新しいCLIのコマンド構成の計画
  2. 02安定した機械可読出力の定義
  3. 03対話形式とスクリプト利用の動作指定
  4. 04確認手順と破壊的操作のルール記述

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/zenobi-us/dotfiles --skill creating-cli-tools

インストール後、Claude Code で/creating-cli-toolsを入力して読み込まれたか確認します。

同梱ファイルreferences/cli-guidelines.mdreferences/styles-bash.md

詳細

CLI の作成

CLI のインターフェース(構文と動作)を、人を第一に考え、スクリプトからも使いやすい形で設計します。

最初に行うこと

確認事項(手短に)

質問してから、ユーザーが判断に迷う場合は、最善と思われる既定値で進めます。

  • コマンド名と、目的を一文で説明したもの。
  • 主なユーザー:人、スクリプト、または両方。
  • 入力元:引数か標準入力か、ファイルか URL か、シークレット(フラグでは決して渡さない)。
  • 出力仕様:人向けのテキスト、--json、--plain、終了コード。
  • 対話性:プロンプトを許可するか、--no-input が必要か、破壊的な操作の確認が必要か。
  • 設定モデル:フラグ/環境変数/設定ファイル、優先順位、XDG かリポジトリ内か。
  • プラットフォーム/ランタイムの制約:macOS/Linux/Windows、単一バイナリかランタイムか。

成果物(出力する内容)

CLI を設計する際は、ユーザーが実装に使える簡潔な仕様を作成します。

  • コマンドツリーと USAGE の概要。
  • 引数/フラグの表(型、既定値、必須/任意、例)。
  • サブコマンドの動作(各コマンドの役割、冪等性、状態変更)。
  • 出力規則:標準出力と標準エラー、TTY の検出、--json/--plain、--quiet/--verbose。
  • エラーと終了コードの対応表(主な失敗パターン)。
  • 安全規則:--dry-run、確認、--force、--no-input。
  • 設定/環境変数の規則と優先順位(フラグ > 環境変数 > プロジェクト設定 > ユーザー設定 > システム設定)。
  • シェル補完の方針(該当する場合):インストール/見つけやすさ、生成コマンドまたは同梱スクリプト。
  • 実行例を 5~10 個(一般的な使い方を含め、パイプ/標準入力の例も含む)。

既定の規約(ユーザーが別途指定しない場合)

  • -h/--help は常にヘルプを表示し、ほかの引数は無視します。
  • --version はバージョンを標準出力に表示します。
  • 主なデータは標準出力に、診断メッセージ/エラーは標準エラーに出力します。
  • 機械処理向けの出力には --json を追加します。行ベースで安定したテキスト出力には --plain も検討します。
  • プロンプトを表示するのは標準入力が TTY の場合に限ります。--no-input はプロンプトを無効にします。
  • 破壊的な操作には対話形式の確認を求め、非対話形式では --force または明示的な --confirm=... を必須にします。
  • NO_COLOR と TERM=dumb を尊重し、--no-color を用意します。
  • Ctrl-C に対応します。速やかに終了し、クリーンアップには上限時間を設け、可能な場合はクラッシュオンリーにします。

テンプレート(回答にコピーして使用)

CLI 仕様の骨子

各セクションを埋め、該当しない項目は削除します。

  1. 名前:mycmd
  2. 一行説明:...
  3. USAGE:
    • mycmd [global flags] <subcommand> [args]
  4. サブコマンド:
    • mycmd init ...
    • mycmd run ...
  5. グローバルフラグ:
    • -h, --help
    • --version
    • -q, --quiet / -v, --verbose(動作を明確に定義)
    • --json / --plain(該当する場合)
  6. 入出力仕様:
    • 標準出力:
    • 標準エラー:
  7. 終了コード:
    • 0 成功
    • 1 一般的な失敗
    • 2 使用方法の誤り(解析/検証)
    • (実際に有用な場合に限り、コマンド固有のコードを追加)
  8. 環境変数/設定:
    • 環境変数:
    • 設定ファイルのパスと優先順位:
  9. 例:
    • …

注記

  • 言語固有のパーサーライブラリの推奨は、ユーザーから求められた場合に限ります。それ以外では、このスキルの対象を言語に依存しないものにします。
  • 依頼が「パラメーターの設計」の場合、実装の話に脱線しないでください。

コメント