creating-cli-tools について
creating-cli-toolsは、人とスクリプトの両方が扱いやすいコマンドラインインターフェースを設計するスキルです。要件を整理し、コマンド、入出力、エラー、安全性、設定、例を含む簡潔な仕様を作成します。
主な機能
- 01コマンドの目的と利用者の明確化
- 02コマンドツリー、引数、フラグの定義
- 03出力、エラー、終了コードの指定
- 04安全性、設定、環境変数ルールの設定
- 05実行例の提示
活用シーン
- 01新しいCLIのコマンド構成の計画
- 02安定した機械可読出力の定義
- 03対話形式とスクリプト利用の動作指定
- 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 のインターフェース(構文と動作)を、人を第一に考え、スクリプトからも使いやすい形で設計します。
最初に行うこと
agent-scripts/skills/create-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 仕様の骨子
各セクションを埋め、該当しない項目は削除します。
- 名前:
mycmd - 一行説明:
... - USAGE:
mycmd [global flags] <subcommand> [args]
- サブコマンド:
mycmd init ...mycmd run ...
- グローバルフラグ:
-h, --help--version-q, --quiet/-v, --verbose(動作を明確に定義)--json/--plain(該当する場合)
- 入出力仕様:
- 標準出力:
- 標準エラー:
- 終了コード:
0成功1一般的な失敗2使用方法の誤り(解析/検証)- (実際に有用な場合に限り、コマンド固有のコードを追加)
- 環境変数/設定:
- 環境変数:
- 設定ファイルのパスと優先順位:
- 例:
- …
注記
- 言語固有のパーサーライブラリの推奨は、ユーザーから求められた場合に限ります。それ以外では、このスキルの対象を言語に依存しないものにします。
- 依頼が「パラメーターの設計」の場合、実装の話に脱線しないでください。
コメント
Markdown 対応