mcpField
C
create-cli

create-cli

github.com/jakenuts開発2143 回インストール16 週間前に更新
リポジトリ

create-cli について

create-cliは、人とスクリプトの両方を想定したコマンドラインインターフェース設計を支援するスキルです。CLIガイドラインに基づき、コマンド、入出力、安全策、設定を含む実装向け仕様をまとめます。

主な機能

  1. 01CLIガイドラインに沿った設計
  2. 02コマンドツリーと引数仕様の定義
  3. 03入出力とエラー処理の明確化
  4. 04設定の優先順位と環境変数の計画
  5. 05プロンプトと破壊的操作の安全策
  6. 06実行例の提示

活用シーン

  1. 01新しいコマンドラインツールの仕様策定
  2. 02スクリプト向け出力契約の設計
  3. 03プロンプトと破壊的操作の確認設計
  4. 04設定元と優先順位の整理

インストール

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

$npx skills add https://github.com/jakenuts/agent-skills --skill create-cli

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

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

詳細

CLI を設計する

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

まず最初に行うこと

  • references/cli-guidelines.md を読み、デフォルトの評価基準として適用します。
  • 上流の完全なガイドライン:https://clig.dev/ (変更を提案する場合:https://github.com/cli-guidelines/cli-guidelines)
  • インターフェースを確定するために必要な、最小限の確認質問だけをします。

確認事項(手短に)

質問してから、ユーザーが不明な場合は妥当なデフォルトを選んで進めます。

  • コマンド名と、その目的を一文で説明してください。
  • 主なユーザー:人、スクリプト、または両方。
  • 入力元:引数と標準入力、ファイルと 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. 例:
    • …

注意事項

  • 言語固有のパーサーライブラリを推奨するのは、求められた場合に限ります。それ以外は言語に依存しない内容にします。
  • リクエストが「パラメーターの設計」の場合、実装の話に脱線しないでください。

コメント