jpskill.com
🛠️ 開発・MCP コミュニティ

cli-design-expert

コマンドラインインターフェースの使いやすさと自動化のために、ヘルプ表示、引数、標準出力とエラー出力、終了コード、TTYの挙動、設定の優先順位、秘密情報や破壊的処理の安全な扱いなどを考慮して設計・レビューするSkill。

📜 元の英語説明(参考)

Design or review command-line interfaces for usability and automation: help text, args/flags, stdout vs stderr, exit codes, TTY behavior, config precedence, and safe handling of secrets and destructive actions.

🇯🇵 日本人クリエイター向け解説

一言でいうと

コマンドラインインターフェースの使いやすさと自動化のために、ヘルプ表示、引数、標準出力とエラー出力、終了コード、TTYの挙動、設定の優先順位、秘密情報や破壊的処理の安全な扱いなどを考慮して設計・レビューするSkill。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o cli-design-expert.zip https://jpskill.com/download/8868.zip && unzip -o cli-design-expert.zip && rm cli-design-expert.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/8868.zip -OutFile "$d\cli-design-expert.zip"; Expand-Archive "$d\cli-design-expert.zip" -DestinationPath $d -Force; ri "$d\cli-design-expert.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して cli-design-expert.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → cli-design-expert フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-18
取得日時
2026-05-18
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

CLI デザインエキスパート

このスキルを使って、以下の特性を持つ CLI を設計、リファクタリング、または監査します。

  • 対話的な使用において人間にとって使いやすい
  • スクリプトおよび CI において予測可能
  • 破壊的な操作に対して安全
  • 出力、エラー、および終了セマンティクスにおいて明確

主な参照資料: references/CLI_GUIDELINES.md

作業姿勢

直接的かつエンジニアリングを第一に考えてください。設計が脆弱、曖昧、または自動化に不向きな場合は、それを指摘し、具体的な修正案を提案してください。

交渉の余地のないチェック (早期失敗)

以下のいずれかの失敗は P0 として扱ってください。

  1. 非対話型パスが必須
  • 対話型プロンプトのみを入力パスにしないでください。
  • すべてのプロンプトには、非対話型の代替手段 (フラグ/引数/ファイル/stdin) が必要です。
  • stdin が TTY でない場合は、プロンプトを表示しないでください。実行可能なガイダンスと必要なフラグとともに失敗してください。
  • プロンプトを無効にするために --no-input (または同等のもの) を提供してください。
  1. シークレットの安全性
  • フラグを介してシークレットを受け入れないでください (ps およびシェル履歴を介してリークします)。
  • stdin--secret-file、OS キーチェーン、または非対話型の代替手段を備えた TTY 専用プロンプトを優先してください。
  1. スクリプトの記述可能性と CI の動作
  • TTY を検出し、出力とインタラクティブ性を適応させます。
  • stdout が TTY でない場合は、スピナー/アニメーションを無効にします。
  • stdout/stderr が TTY でない場合、NO_COLOR が設定されている場合、TERM=dumb の場合、または --no-color が渡された場合は、色を無効にします。
  • データを取得するために stdout をクリーンに保ちます。ステータス/進捗状況/ロギングを stderr に送信します。
  1. 出力ストリームと終了コード
  • プライマリパイプ可能な出力は stdout に出力されます。
  • ログ、警告、進捗状況、およびエラーは stderr に出力されます。
  • 成功した場合は終了コード 0 を返します。失敗した場合は 0 以外の値を返します。0 以外のコードを有意義な失敗カテゴリにマッピングします。
  1. リスクに応じた安全対策
  • 破壊的なアクションの場合は、リスクに応じて確認を使用します。
  • スクリプト可能なバイパス (例: --force または --yes) をサポートし、重大なアクションの場合は --confirm="resource-name" を検討してください。
  • 可能な場合は、リスクの高いまたは複雑な状態変更に対して --dry-run を提供します。
  1. シグナルとキャンセル
  • Ctrl-C (SIGINT) は、即座にフィードバックを提供して迅速に終了する必要があります。
  • クリーンアップにタイムボックスを設定し、クリーンアップが遅い場合は、2 回目の Ctrl-C で強制終了できるようにします。

簡単なトリアージの質問

  • ユーザーは誰ですか: 対話型ユーザー、スクリプト/CI、またはその両方ですか?
  • 実行されるジョブは何ですか: 状態のクエリ/リスト、または状態の変更ですか?
  • コアオブジェクトと動詞は何ですか?
  • 自動化のために安定している必要があるものは何ですか (出力形式、終了コード、フラグ)?

手順: 新しい CLI を設計する (またはコマンドを追加する)

ステップ 1: コマンドモデルを提案する

  • 最初の表面積を小さく保ちます。
  • 1 つのモデルを選択し、一貫性を保ちます。
  • 単純なツールには、単一のコマンド + フラグを使用します。
  • 複数のタスクを実行するツールには、サブコマンド (多くの場合、名詞-動詞または動詞-名詞) を使用します。

成果物:

  • 1 行の目的を持つコマンドのリスト。

ステップ 2: 位置引数とフラグを決定する

ヒューリスティック:

  • 順序が標準的で曖昧でない、明白なプライマリオブジェクトにのみ位置引数を使用します。
  • 2 つの位置引数が混同される可能性がある場合 (形状/意味が類似している場合)、または順序が明白でない場合は、代わりにフラグを使用します。
  • 長いフラグを優先します。最も一般的なオプションにのみ短いフラグを使用し、コマンド間で一貫性を保ちます。

成果物:

  • コマンドごとの使用法行 + 引数/フラグテーブル。

ステップ 3: 出力コントラクトを定義する (人間 + マシン)

  • stdoutstderr に何が出力されるかを正確に定義します。
  • 役立つ場合は、少なくとも 1 つのマシン可読モード (--json など) を提供します。
  • 人間が読める出力をスキャン可能で有用な状態に保ちます。

成果物:

  • stdout の内容
  • stderr の内容
  • 終了コードマップ
  • 大まかな --json スキーマ (サポートされている場合)

ステップ 4: ヘルプテキストと例を作成する

  • 他の引数が間違っていても、-h/--help は機能する必要があります。
  • 正しく実行されない場合は、短いエラー + 関連する使用法 + "use --help" を表示します。
  • 例 (一般的なものから) を使用してヘルプをリードします。トップレベルのヘルプにドキュメント/サポートパスを提供します。

成果物:

  • トップレベルおよび関連するサブコマンドのヘルプテキストのドラフト。

ステップ 5: エラーと安全性を定義する

  • エラーは実行可能である必要があります: 何が失敗したか、理由、および修正方法。
  • --debug が有効になっていない限り、一般的なコードまたはスタックトレースの背後に重要な失敗を隠さないでください。
  • 状態変更の場合は、何が起こったか (または --dry-run で何が起こるか) について明示的なフィードバックを提供します。

成果物:

  • エラーメッセージパターン + 安全性/確認設計。

ステップ 6: インタラクティブ性と TTY ルールを指定する

  • stdin が TTY の場合にのみプロンプトを表示します。
  • パイプされた入力がサポートされている場合は、それを読み取ります。そうでない場合は、ガイダンスとともにすぐに失敗します。
  • ログが存在する場合は、明確な quiet モードと verbose モードを提供します。

成果物:

  • TTY 動作テーブル (TTY vs 非 TTY)。

ステップ 7: 設定と環境変数を追加する (必要な場合のみ)

隠れた設定動作を回避するために、明示的な優先順位を使用します。

  1. フラグ
  2. 環境変数
  3. プロジェクトレベルの設定
  4. ユーザーレベルの設定 (XDG、例: ~/.config/<tool>/config)
  5. システム全体の設定

成果物:

  • 設定キー + 優先順位 + ストレージの場所。

手順: 既存の CLI をレビューする

2 つの出力を生成します。

A) スコアカード (各 0-2)

  • コマンド構造と命名
  • 引数/フラグの明確さ
  • ヘルプの発見可能性 (最初に例)
  • stdout/stderr の正確さ
  • 終了コードの規律
  • スクリプトの記述可能性 (非 TTY 動作)
  • マシン出力モード (適切な場合)
  • 安全性 (--dry-run、確認)
  • シークレットの処理
  • シグナル処理 (Ctrl-C)
  • 設定の優先順位 (該当する場合)
  • 将来性 (時限爆弾の回避)

B) 優先順位付けされた修正

  • P0: 正確性、安全性、およびスクリプトの記述可能性の失敗
  • P1: ユーザビリティと発見可能性の問題
  • P2: 磨きと一貫性

テンプレート

ヘルプのスケルトン

NAME <tool> - <1 行の価値提案>

USAGE <tool> <command> [options] <args>

EXAMPLES <tool> <command> ... <tool> <command> ... --json | jq .

OPTIONS -h, --help ヘルプを表示 --json マシン可読な JSON を出力 (サポートされている場合) --no-color 色を無効にする --no-input プロンプトを無効にする -q, --quiet 重要でない出力を減らす (サポートされている場合) -v, --verbose ロギングを増やす (サポートされている場合) -n, --dry-run 変更を適用せずに説明する (サポートされている場合)

SUPPORT <ドキュメント / issue リンク>

エラーのスケルトン

Error: <何がプレーンな言葉で失敗したか>。 Cause: <最も可能性の高い理由>。 Fix: <正確な次のステップ / コマンド / フラグ>。

参考文献

  • フル gui

(原文はここで切り詰められています)

📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

CLI Design Expert

Use this skill to design, refactor, or audit CLIs that are:

  • Human-friendly for interactive use
  • Predictable in scripts and CI
  • Safe for destructive operations
  • Clear in output, errors, and exit semantics

Primary reference: references/CLI_GUIDELINES.md.

Working stance

Be direct and engineering-first. If a design is fragile, ambiguous, or hostile to automation, call it out and propose concrete fixes.

Non-negotiable checks (fast fail)

Treat any failure below as P0.

  1. Non-interactive path is required
  • Never make an interactive prompt the only input path.
  • Every prompt needs a non-interactive alternative (flag/arg/file/stdin).
  • If stdin is not a TTY, do not prompt. Fail with actionable guidance and required flags.
  • Provide --no-input (or equivalent) to disable prompts.
  1. Secrets safety
  • Never accept secrets via flags (leaks via ps and shell history).
  • Prefer stdin, --secret-file, OS keychain, or a TTY-only prompt with a non-interactive alternative.
  1. Scriptability and CI behavior
  • Detect TTY and adapt output and interactivity.
  • Disable spinners/animations when stdout is not a TTY.
  • Disable color when stdout/stderr are not TTY, when NO_COLOR is set, when TERM=dumb, or when --no-color is passed.
  • Keep stdout clean for data; send status/progress/logging to stderr.
  1. Output streams and exit codes
  • Primary pipeable output goes to stdout.
  • Logs, warnings, progress, and errors go to stderr.
  • Exit 0 on success; non-zero on failure. Map non-zero codes to meaningful failure categories.
  1. Risk-scaled safeguards
  • For destructive actions, use confirmations that scale with risk.
  • Support a scriptable bypass (e.g., --force or --yes), and consider --confirm="resource-name" for severe actions.
  • Offer --dry-run for risky or complex state changes when possible.
  1. Signals and cancellation
  • Ctrl-C (SIGINT) should exit quickly with immediate feedback.
  • Timebox cleanup and allow a second Ctrl-C to force exit if cleanup is slow.

Quick triage questions

  • Who is the user: interactive human, script/CI, or both?
  • What is the job-to-be-done: query/list state, or change state?
  • What are the core objects and verbs?
  • What must stay stable for automation (output format, exit codes, flags)?

Procedure: Design a new CLI (or add a command)

Step 1: Propose a command model

  • Keep the initial surface area small.
  • Choose one model and stay consistent:
  • Single command + flags for simple tools.
  • Subcommands (often noun-verb or verb-noun) for multi-task tools.

Deliverable:

  • List of commands with one-line purposes.

Step 2: Decide positional args vs flags

Heuristic:

  • Use positional args only for obvious primary object(s) where order is standard and unambiguous.
  • If two positionals can be confused (similar shape/meaning) or order is not obvious, use flags instead.
  • Prefer long flags. Use short flags only for the most common options, and keep them consistent across commands.

Deliverable:

  • Usage line + args/flags tables per command.

Step 3: Define output contract (human + machine)

  • Define exactly what goes to stdout vs stderr.
  • Provide at least one machine-readable mode when helpful (commonly --json).
  • Keep human-readable output scannable and useful.

Deliverable:

  • stdout content
  • stderr content
  • Exit-code map
  • High-level --json schema (if supported)

Step 4: Write help text and examples

  • -h/--help must work even when other args are wrong.
  • If run incorrectly, show a short error + the relevant usage + "use --help".
  • Lead help with examples (common first). Provide a docs/support path in top-level help.

Deliverable:

  • Draft help text for top-level and relevant subcommands.

Step 5: Define errors and safety

  • Errors must be actionable: what failed, why, and how to fix it.
  • Do not hide important failures behind generic codes or stack traces unless --debug is enabled.
  • For state changes, give explicit feedback about what happened (or what would happen in --dry-run).

Deliverable:

  • Error-message patterns + safety/confirmation design.

Step 6: Specify interactivity and TTY rules

  • Only prompt when stdin is a TTY.
  • If piped input is supported, read it. If not, fail quickly with guidance.
  • Provide clear quiet and verbose modes if logs exist.

Deliverable:

  • TTY behavior table (TTY vs non-TTY).

Step 7: Add config and env vars (only if needed)

Use explicit precedence to avoid hidden config behavior:

  1. Flags
  2. Environment variables
  3. Project-level config
  4. User-level config (XDG, e.g. ~/.config/<tool>/config)
  5. System-wide config

Deliverable:

  • Config keys + precedence + storage locations.

Procedure: Review an existing CLI

Produce two outputs.

A) Scorecard (0-2 each)

  • Command structure and naming
  • Args/flags clarity
  • Help discoverability (examples first)
  • stdout/stderr correctness
  • Exit-code discipline
  • Scriptability (non-TTY behavior)
  • Machine-output mode (when appropriate)
  • Safety (--dry-run, confirmations)
  • Secrets handling
  • Signal handling (Ctrl-C)
  • Config precedence (if applicable)
  • Future-proofing (avoid time bombs)

B) Prioritized fixes

  • P0: correctness, safety, and scriptability failures
  • P1: usability and discoverability issues
  • P2: polish and consistency

Templates

Help skeleton

NAME <tool> - <one line value prop>

USAGE <tool> <command> [options] <args>

EXAMPLES <tool> <command> ... <tool> <command> ... --json | jq .

OPTIONS -h, --help Show help --json Output machine-readable JSON (if supported) --no-color Disable color --no-input Disable prompts -q, --quiet Reduce non-essential output (if supported) -v, --verbose Increase logging (if supported) -n, --dry-run Describe changes without applying them (if supported)

SUPPORT <docs / issues link>

Error skeleton

Error: <what failed in plain language>. Cause: <most likely reason>. Fix: <exact next step / command / flag>.

References

  • Full guideline text: references/CLI_GUIDELINES.md