mcpField
S
shell-integration

shell-integration

github.com/oakoss開発20115 回インストール10 週間前に更新
リポジトリ

shell-integration について

Unix シェルを拡張または操作するツールを作る開発者向けのリファレンススキルです。Zsh、Bash、Fish の補完、フック、キー割り当て、端末制御、プラグイン配布を扱います。

主な機能

  1. 01Zsh、Bash、Fish の補完
  2. 02プロンプトフックとイベントハンドラー
  3. 03ZLE ウィジェットとキー割り当て
  4. 04端末とプロセスの制御
  5. 05プラグインのインストールパターン

活用シーン

  1. 01CLI ツールに補完を追加
  2. 02シェルプラグインやプロンプトを構築
  3. 03ターミナル UI を作成
  4. 04シェル間のスクリプト互換性を確認

インストール

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

$npx skills add https://github.com/oakoss/agent-skills --skill shell-integration

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

同梱ファイル

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

references/
bash-integration.md
fish-integration.md
plugin-distribution.md
posix-scripting.md
terminal-control.md
zsh-integration.md

詳細

シェル統合

概要

シェル統合では、Unix シェルを拡張したり、シェルと連携したりするツールを構築するための API とパターンを扱います。これには、Zsh、Bash、Fish における補完システム、プロンプトフック、キー割り当て、ターミナル制御、プラグインの配布が含まれます。

使用する場面: CLI ツールの補完、シェルプラグイン、プロンプトのカスタマイズ、ターミナル UI、ドットファイルマネージャー、インストールスクリプト、ネイティブバイナリのラッパーを構築する場合。

使用しない場面: シェル拡張に関係のない汎用スクリプト(単体スクリプトには POSIX スクリプティングのリファレンスを使用してください)、GUI アプリケーション、Web サーバーの開発。

クイックリファレンス

パターンシェル主なポイント
補完関数Zshマッチャーの設定には compdef、compadd、zstyle を使用します
補完関数Bashcomplete、compgen、COMP_WORDS、COMP_CWORD、COMPREPLY
補完関数Fishcomplete -c cmd -a args、条件フラグ、サブコマンドのパターン
ZLE ウィジェットZshzle -N widget func、キーの割り当てには bindkey を使用します
プロンプトフックZshadd-zsh-hook を使った precmd、preexec、chpwd
プロンプトフックBashPROMPT_COMMAND(文字列、または Bash 5.1 以降では配列)
イベントハンドラーFish--on-event、--on-variable、--on-signal
略語Fishabbr -a name expansion、動的な略語には --function
パラメーター展開Zsh${(s.:.)var}、${var:=default}、フラグと修飾子
ターミナル制御すべてANSI/CSI エスケープシーケンス、tput、stty
シグナル処理すべて組み込みの trap、クリーンアップのパターン、EXIT/INT/TERM
プロセス管理すべてジョブ制御(&、wait、bg、fg)、サブシェル、コプロセス
プラグインのインストールすべて読み込み方式、バージョン検出、ZDOTDIR の読み込み順序

よくある間違い

間違い正しいパターン
互換性が必要な場面でエスケープシーケンスに echo -e を使うシェルや OS 間の互換性のために printf または tput を使用します
Bash で = を使って PROMPT_COMMAND を変更する他のツールの設定を上書きしないよう、+= で追加します
遅延読み込みされる関数内で Fish のイベントハンドラーを定義するイベントハンドラーを config.fish に記述するか、明示的に読み込みます
ターミナル機能をハードコードするTERM と terminfo を考慮する tput で照会します
Zsh 関数で emulate -L zsh を指定し忘れる呼び出し元の環境を汚染しないよう、常にローカルオプションを設定します
COMP_WORDS ではなく $COMP_LINE の分割を使う単語を確実に抽出するには COMP_WORDS[$COMP_CWORD] を使用します
ラッパースクリプトで $@ を引用符で囲まない引数の境界を保つため、常に "$@" を使用します
/bin/sh が Bash だと思い込む移植可能なスクリプトでは POSIX sh を対象にし、dash でテストします
POSIX スクリプトで function キーワードを使うPOSIX 互換性のために name() { ... } 構文を使用します
クリーンアップ用の EXIT トラップを無視する一時ファイルと状態を処理するため、常に trap cleanup EXIT を設定します

委任

  • 完了テスト:Explore エージェントを使って、対話的に補完を検証します
  • スクリプトレビュー:Task エージェントを使って、シェル間の互換性を監査します
  • コードレビュー:code-reviewer エージェントに委任します

rust スキルが利用できる場合は、ネイティブバイナリのコンパイルパターンを委任してください。パフォーマンスが重要な処理では、シェルラッパーが Rust でコンパイルされたバイナリを呼び出すことがよくあります。 cli-power-tools スキルが利用できる場合は、最新の CLI ユーティリティの使用パターンを委任してください。多くのシェルプラグインは、fd、ripgrep、fzf などのツールをラップしています。

参考資料

コメント