mcpField
C
cli-for-agents

cli-for-agents

github.com/pproenca開発220225 回インストール11 週間前に更新
リポジトリ

cli-for-agents について

cli-for-agentsは、AIエージェントやスクリプト向けコマンドラインの設計・レビューに使う開発者向けスキルです。非対話操作からコマンド構造まで、8分野の45ルールを扱います。

主な機能

  1. 018分野にわたる45のルール
  2. 02非対話操作の設計指針
  3. 03ヘルプとエラーメッセージの基準
  4. 04破壊的操作の安全指針
  5. 05出力、再試行、コマンド構造の指針

活用シーン

  1. 01エージェント向けCLIの新規設計
  2. 02既存CLIのヘッドレス利用のレビュー
  3. 03ヘルプ文やエラーメッセージの改善
  4. 04コマンド出力の連結処理への対応

インストール

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

$npx skills add https://github.com/pproenca/dot-skills --skill cli-for-agents

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

AGENTS.md
metadata.json
assets/templates/
_template.md
references/
_sections.md
err-actionable-fix.md
err-exit-fast-on-missing-required.md
err-include-example-invocation.md
err-no-stack-traces-by-default.md
err-non-zero-exit-codes.md
err-stderr-not-stdout.md
help-examples-in-help.md
help-flag-summary.md
help-layered-discovery.md
help-no-flag-required.md
help-per-subcommand.md
help-suggest-next-steps.md
idem-create-or-skip.md
idem-retry-safe.md
idem-stable-identifiers.md
idem-stable-output-on-skip.md
idem-state-reconciliation.md
input-accept-stdin-dash.md
input-env-var-fallback.md
input-flags-over-positional.md
input-no-prompt-fallback.md
input-stdin-for-secrets.md
interact-detect-tty.md
interact-flags-first.md
interact-no-arrow-menus.md
interact-no-hang-on-stdin.md

詳細

エージェントに使いやすい CLI 設計のベストプラクティス

人がプロンプトで入力する場合だけでなく、AI エージェントやスクリプトを対象としたコマンドラインインターフェースの設計・レビュー基準です。人間向けの CLI は、対話型プロンプト、最初に表示される大量のドキュメント、コピー&ペーストできる例のないヘルプテキスト、修正方法が示されないエラーメッセージ、ドライランモードの欠如などによって、エージェントの利用を妨げることがよくあります。このスキルでは、影響範囲の大きさに応じてルールに優先順位を付けています。「エージェントがこの CLI をまったく使えない」(CRITICAL)から「エージェントがヘルプをもう一度読む必要がある」(MEDIUM)までを対象とします。

このスキルは、新しい CLI の構築時にも、既存の CLI がエージェントに使いやすいかレビューする際にも活用してください。

このスキルには、8 つのカテゴリにわたる45 個のルールが含まれています。

適用するタイミング

以下の場合に、これらのガイドラインを参照してください。

  • あらゆるサブコマンドの --help テキストを作成するとき
  • 新しいフラグ、引数、サブコマンドを設計するとき
  • エラーメッセージや終了コードを作成するとき
  • ドライランや確認が必要な破壊的操作を追加するとき
  • 対話型プロンプトとフラグのみの入力方式のどちらを選ぶか決めるとき
  • エージェントがコマンドを連結できるよう、成功時の出力を設計するとき
  • 既存の CLI で、ヘッドレス環境での使いやすさが損なわれていないかレビューするとき

優先度別のルールカテゴリ

優先度カテゴリ影響度接頭辞
1非対話型操作CRITICALinteract-
2ヘルプテキストの設計HIGHhelp-
3エラーメッセージHIGHerr-
4破壊的操作の安全性HIGHsafe-
5入力処理HIGHinput-
6出力形式MEDIUM-HIGHoutput-
7冪等性と再試行MEDIUM-HIGHidem-
8コマンド構造MEDIUMstruct-

注:help-examples-in-help は、HIGH の help- カテゴリに属しますが、CRITICAL と評価されています。具体的な問題である「例のないヘルプテキスト」があると、ほかのヘルプルールがすべて意味をなさなくなるためです。カテゴリのラベルは、最悪のケースではなく平均的な影響度を表します。

クイックリファレンス

1. 非対話型操作(CRITICAL)
  • interact-flags-first — すべての入力をまずフラグで指定できるようにし、プロンプトは TTY の場合に限って代替手段として使用する
  • interact-detect-tty — プロンプトを表示する前に isatty() を確認する
  • interact-no-arrow-menus — 矢印キーで操作するメニューを、フラグで選択する方式に置き換える
  • interact-no-input-flag — 非対話型モードを強制する --no-input をサポートする
  • interact-no-timed-prompts — 時間制限のあるプロンプトや、任意のキー入力を求める画面を使用しない
  • interact-no-hang-on-stdin — TTY が接続されている場合、標準入力で処理を停止しない
2. ヘルプテキストの設計(HIGH)
  • help-examples-in-help — すべての --help に、コピー&ペーストできる例を含める
  • help-per-subcommand — すべてのサブコマンドが、それぞれ独自の --help を提供する
  • help-no-flag-required — 引数なしで実行された場合にヘルプを表示する
  • help-layered-discovery — トップレベルのヘルプを、操作の手引きとなる索引にする
  • help-flag-summary — すべてのフラグについて、短縮形と長形式の両方を記載する
  • help-suggest-next-steps — ヘルプと成功時の出力で、次に実行するコマンドを提案する
3. エラーメッセージ(HIGH)
4. 破壊的操作の安全性(HIGH)
5. 入力処理(HIGH)
6. 出力形式(MEDIUM-HIGH)
7. 冪等性と再試行(MEDIUM-HIGH)
  • idem-retry-safe — 同じコマンドを 2 回実行しても安全になるようにします
  • idem-create-or-skip — 作成コマンドは、対象がすでに存在する場合にスキップします
  • idem-stable-output-on-skip — 操作を実行した場合もスキップした場合も、同じ形式の出力を返します
  • idem-state-reconciliation — 差分を適用する方式より、「状態を確保する」セマンティクスを優先します
  • idem-stable-identifiers — ID を自動生成するのではなく、ユーザー指定の名前を受け付けます
8. コマンド構造(中)

使用方法

新しい CLI を構築する場合

CRITICAL から始めて、順に確認してください。最初の 2 つのカテゴリ(interact- と help-)は必須です。ここに含まれるルールに 1 つでも違反すると、ほかの部分がどれほど優れていても、エージェントは CLI を使用できません。その後、err-、safe-、input- の順に確認してください。実際の利用で最も問題が発生しやすいのはこのカテゴリです。output-、idem-、struct- は、呼び出しを重ねるほど効果が積み重なる仕上げの項目です。

既存の CLI をレビューする場合

次のチェックリストを優先順位の高い順に確認してください。

  1. 非対話型の実行経路 — すべてのサブコマンドを --no-input 付き、または </dev/null を指定して実行し、ハングするものがないか確認する
  2. 階層化されたヘルプ — mycli --help はサブコマンドのみを一覧表示しますか。それともすべての情報を出力しますか。
  3. --help に記載された使用例 — すべてのサブコマンドのヘルプは、実行可能な Examples セクションで終わる必要があります
  4. 実行コマンドを含むエラーメッセージ — すべてのエラーで、呼び出し元にどのフラグを追加すべきか正確に伝えていますか。
  5. stdin/パイプラインの仕様 — 出力を入力にパイプできますか。- は stdin を意味しますか。
  6. 終了コード — 使用方法のエラー(2)、実行時エラー(1)、一時的なエラー(69)は区別されていますか。
  7. ドライラン — 破壊的なコマンドにはすべて --dry-run(または同等の機能)がありますか。
  8. 確認の省略 — 破壊的なコマンドにはすべて --yes/--force がありますか。
  9. 一貫したコマンド構造 — service list、deploy list、config list はすべて存在し、同じ方法で動作しますか。
  10. 構造化された成功時の出力 — deploy は、エージェントが次に使用できる deploy_id を返しますか。
個別ルール

詳しい説明とコード例については、個別のリファレンスファイルを参照してください。

リファレンスファイル

ファイル説明
references/_sections.mdカテゴリの定義と順序
assets/templates/_template.md新しいルール用のテンプレート
metadata.jsonバージョンとリファレンス情報

コメント