unix-cli について
AI エージェントや LLM 向けの、UNIX/POSIX 準拠 CLI 開発ガイドです。引数、終了コード、出力ストリームなどの規約を優先度順に整理し、各言語のツール開発やレビューに使えます。
主な機能
- 018 分野の CLI ガイドライン
- 02影響度に基づく優先順位
- 03引数と終了コードの設計
- 04出力ストリームとエラー処理
- 05シグナルと環境設定の規約
活用シーン
- 01コマンドライン引数とフラグの設計
- 02stdout と stderr の使い分け
- 03終了コードの選択とシグナル処理
- 04CLI 規約への準拠状況のレビュー
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill unix-cliインストール後、Claude Code で/unix-cliを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
metadata.jsonassets/templates/_template.mdreferences/_sections.mdargs-never-read-secrets-from-flags.mdargs-prefer-flags-over-positional.mdargs-provide-long-options.mdargs-require-help-version.mdargs-support-double-dash.mdargs-support-option-bundling.mdargs-use-getopt.mdargs-use-standard-flag-names.mdconfig-env-naming.mdconfig-follow-xdg.mdconfig-never-store-secrets.mdconfig-precedence-order.mdconfig-respect-standard-vars.mderror-actionable-messages.mderror-avoid-stack-traces.mderror-include-program-name.mderror-use-strerror.mderror-validate-early.mdexit-distinguish-error-types.mdexit-partial-success.mdexit-signal-codes.mdexit-use-standard-codes.mdexit-zero-for-success.mdhelp-include-examples.mdhelp-show-defaults.mdhelp-show-usage-on-error.mdhelp-structure-help-output.md詳細
UNIX/POSIX 標準 CLI のベストプラクティス
AI エージェントと LLM 向けに設計された、UNIX の慣習に従うコマンドラインツールを構築するための包括的なガイドラインです。重要度の高いもの(引数の処理、終了コード、出力ストリーム)から段階的なもの(設定と環境)まで、8 つのカテゴリにわたる 44 のルールが含まれています。
適用する場面
以下の場合に、これらのガイドラインを参照してください。
- 任意の言語で新しい CLI ツールを作成するとき
- コマンドライン引数やフラグを解析するとき
- stdout と stderr のどちらに出力するかを決めるとき
- 適切な終了コードを選ぶとき
- SIGINT や SIGTERM などのシグナルを処理するとき
優先度別のルールカテゴリ
| 優先度 | カテゴリ | 影響度 | プレフィックス |
|---|---|---|---|
| 1 | 引数とフラグの設計 | CRITICAL | args- |
| 2 | 終了コード | CRITICAL | exit- |
| 3 | 出力ストリーム | CRITICAL | output- |
| 4 | エラー処理 | HIGH | error- |
| 5 | I/O と合成 | HIGH | io- |
| 6 | ヘルプとドキュメント | MEDIUM-HIGH | help- |
| 7 | シグナルと堅牢性 | MEDIUM | signal- |
| 8 | 設定と環境 | MEDIUM | config- |
クイックリファレンス
1. 引数とフラグの設計(CRITICAL)
args-use-getopt- 標準的な引数解析ライブラリを使用するargs-provide-long-options- すべての短いオプションに長いオプションを用意するargs-support-double-dash- オプションを終了するためのダブルダッシュをサポートするargs-require-help-version- --help と --version オプションを実装するargs-prefer-flags-over-positional- 位置引数よりフラグを優先するargs-use-standard-flag-names- 標準的なフラグ名を使用するargs-never-read-secrets-from-flags- コマンドラインフラグから秘密情報を読み取らないargs-support-option-bundling- オプションの連結をサポートする
2. 終了コード(CRITICAL)
exit-zero-for-success- 成功の場合にのみゼロを返すexit-use-standard-codes- 標準の終了コードを使用するexit-signal-codes- シグナルによる終了には 128+N を使用するexit-partial-success- 部分的な成功を一貫して処理するexit-distinguish-error-types- 異なる終了コードでエラーの種類を区別する
3. 出力ストリーム(CRITICAL)
output-stdout-for-data- データは stdout のみに書き込むoutput-stderr-for-errors- エラーと診断情報は stderr に書き込むoutput-detect-tty- 人間向けの出力では TTY を検出するoutput-provide-machine-format- 機械可読な出力形式を用意するoutput-line-based-text- テキストストリームでは行単位の出力を使用するoutput-respect-no-color- NO_COLOR 環境変数に従う
4. エラー処理(HIGH)
error-include-program-name- エラーメッセージにプログラム名を含めるerror-actionable-messages- 実行可能な対処を示すエラーメッセージにするerror-use-strerror- システムエラーには strerror を使用するerror-avoid-stack-traces- ユーザー向けのエラーでスタックトレースを避けるerror-validate-early- 入力を早期に検証し、問題があれば速やかに終了する
5. 入出力と構成(HIGH)
io-support-stdin- 標準入力からの読み取りをサポートするio-write-to-stdout- デフォルトで標準出力に出力するio-be-stateless- ステートレスな操作を設計するio-handle-binary-safely- バイナリデータを安全に扱うio-atomic-writes- アトミックなファイル書き込みを使用するio-handle-multiple-files- 複数の入力ファイルを一貫して扱う
6. ヘルプとドキュメント(MEDIUM-HIGH)
help-show-usage-on-error- 引数エラー時に簡潔な使用方法を表示するhelp-structure-help-output- ヘルプ出力を一貫した形式にするhelp-show-defaults- ヘルプにデフォルト値を表示するhelp-include-examples- ヘルプに実用的な例を含めるhelp-version-format- バージョン出力を正しくフォーマットする
7. シグナルと堅牢性(MEDIUM)
signal-handle-sigint- SIGINT を適切に処理するsignal-handle-sigterm- クリーンなシャットダウンのために SIGTERM を処理するsignal-handle-sigpipe- パイプ切断時の SIGPIPE を処理するsignal-cleanup-on-second-interrupt- 2 回目の割り込みではクリーンアップを省略する
8. 設定と環境(MEDIUM)
config-follow-xdg- XDG Base Directory Specification に従うconfig-precedence-order- 正しい優先順位で設定を適用するconfig-env-naming- 一貫性のある環境変数の命名を使用するconfig-never-store-secrets- 設定ファイルや環境変数にシークレットを保存しないconfig-respect-standard-vars- 標準の環境変数を尊重する
使い方
詳しい説明とコード例については、個々のリファレンスファイルをお読みください。
- セクションの定義 - カテゴリー構成と影響度
- ルールのテンプレート - 新しいルールを追加するためのテンプレート
リファレンスファイル
| ファイル | 説明 |
|---|---|
| references/_sections.md | カテゴリーの定義と順序 |
| assets/templates/_template.md | 新しいルール用のテンプレート |
| metadata.json | バージョンとリファレンス情報 |
コメント
Markdown 対応