mcpField
S
shell-expert

shell-expert

github.com/laurigates開発59137 回インストール1 日前に更新
リポジトリ

shell-expert について

堅牢で移植性の高いシェルスクリプトとコマンドライン自動化を支援するスキルです。開発者やシステム管理者向けに、最新の CLI ツールやクロスプラットフォーム対応も扱います。

主な機能

  1. 01移植性の高い POSIX・Bash スクリプト
  2. 02防御的なエラー処理とデバッグ
  3. 03jq と yq による JSON・YAML 処理
  4. 04fd と rg によるファイル検索
  5. 05クロスプラットフォーム自動化パターン

活用シーン

  1. 01Linux、macOS、BSD 向けスクリプトの作成
  2. 02CI/CD とシステム管理の自動化
  3. 03CLI ツールを組み合わせたデータパイプライン構築

インストール

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

$npx skills add https://github.com/laurigates/claude-plugins --skill shell-expert

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

同梱ファイルREFERENCE.md

詳細

Shell エキスパート

堅牢で移植性が高く効率的なソリューションを重視した、シェルスクリプト、コマンドラインツール、自動化に関する専門知識です。

このスキルを使う場合

次のような場合はこのスキルを使ってください…次のような場合は justfile-expert を使ってください…
移植性の高い bash、zsh、または POSIX シェルのスクリプトを作成するプロジェクトのタスクランナー向けに、コマンドを名前付きレシピとして定義する
パイプラインや単発の自動化ロジックを組み立てるチームやリポジトリ全体でエントリーポイントを標準化する
set -euo pipefail、トラップ、クォートを使ってスクリプトを堅牢にするシェルのつなぎ込みコードを書かずに、クロスプラットフォーム対応のコマンドを定義する
次のような場合はこのスキルを使ってください…次のような場合は jq-json-processing を使ってください…
CLI ツールを連携させるグルーロジックを作成するJSON 入力の変換のみを行う
再利用可能な関数、引数解析、シグナル処理を記述する1 つの jq 式でシェルコマンドの連鎖を置き換えられる

コマンドラインツールの習熟

  • 最新の CLI ツール(jq、yq、fd、rg など)に関する専門知識
  • JSON/YAML の処理と変換
  • ファイル検索とテキスト操作
  • システムの自動化とオーケストレーション

シェルスクリプトの卓越性

  • 最大限の移植性を実現する POSIX 準拠のシェルスクリプト
  • Bash 固有の機能とベストプラクティス
  • エラー処理と防御的プログラミング
  • クロスプラットフォーム対応(Linux、macOS、BSD)

自動化と統合

  • CI/CD パイプラインのスクリプト作成
  • システム管理の自動化
  • ツールの統合とワークフローの自動化
  • シェル操作のパフォーマンス最適化

主な機能

JSON/YAML 処理

  • jq:複雑な JSON クエリ、変換、フィルタリング
  • yq:YAML の操作、インプレース編集、形式変換
  • jd:構成管理のための JSON 差分とパッチ適用
  • データパイプラインの構築:複雑な変換のためのツール連携

ファイル操作と検索

  • fd:直感的な構文で、すばやく使いやすいファイル検索
  • rg(ripgrep):gitignore に対応した超高速の再帰的 grep
  • lsd:視覚的な機能を強化した、最新の ls 代替ツール
  • find/grep の代替ツール:最新の代替ツールを使うタイミングと方法

シェルスクリプト開発

  • エラー処理:適切なトラップの使用、終了コード、エラーの伝播
  • 入力検証:引数解析、オプション処理、ユーザー入力のサニタイズ
  • デバッグ:設定オプション(-x、-e、-u、-o pipefail)、デバッグ出力の方針
  • パフォーマンス:プロセス置換、並列実行、効率的なループ

クロスプラットフォームのスクリプト作成

  • プラットフォーム検出:OS 固有の動作への対応
  • パス管理:移植可能なパスの構築と操作
  • ツールの利用可否:依存関係の不足を確認し、対処する
  • 互換性レイヤー:あらゆる環境で動作するスクリプトの作成

自動化のパターン

  • 冪等な操作:複数回実行しても安全なスクリプト
  • アトミックな操作:すべて実行するか、何も実行しないことを保証
  • 進捗報告:ユーザーにわかりやすい出力とステータス更新
  • ログ記録とモニタリング:自動化システム向けの構造化ログ

基本コマンド

jq - JSON 処理

jq . data.json                                    # Pretty-print
jq -r '.key.subkey' data.json                     # Extract value
jq '.items[] | select(.status == "active")'       # Filter

yq - YAML 処理

yq '.services.web.image' docker-compose.yml       # Read value
yq -i '.version = "2.1.0"' config.yml            # Update in-place
yq -o json config.yml                             # Convert to JSON

fd - 高速なファイル検索

fd 'pattern'                 # Find by pattern
fd -e md                     # Find by extension
fd -e sh -x shellcheck {}    # Find and execute

rg - 再帰的 grep

rg 'DATABASE_URL'            # Basic search
rg 'TODO' -t python          # Search specific file types
rg -C 3 'error'              # Search with context

ベストプラクティス

スクリプト開発ワークフロー

  1. 要件分析:自動化の必要性と対象プラットフォームを把握します
  2. ツールの選定:タスクに適したツールを選びます
  3. プロトタイプの開発:主要な機能を備えた初期スクリプトを作成します
  4. エラー処理:堅牢なエラー処理とエッジケースへの対応を追加します
  5. クロスプラットフォームテスト:対象システムすべてでスクリプトが動作することを確認します
  6. パフォーマンスの最適化:プロファイリングを行い、効率を高めるために最適化します
  7. ドキュメント:わかりやすい使用方法とインラインコメントを追加します

重要なガイドライン

  • リントには必ず shellcheck を使用します
  • 厳格モードを設定します:set -euo pipefail
  • pipefail を使用する場合、早期終了する読み取りコマンド(grep -q、head)には決してパイプしないでください。生成側プロセスに SIGPIPE が送られ、成功するはずのパイプラインが断続的に失敗として報告されます。代わりに grep -q … <<<"$var" または grep … >/dev/null を使用します(REFERENCE.md を参照)
  • すべての変数を引用符で囲みます:"${var}"
  • 再利用可能なコードには関数を使用します
  • trap を使用して適切なクリーンアップを実装します
  • わかりやすいエラーメッセージを表示します
  • --help と --version オプションを含めます
  • 意味のある変数名を使用します
  • 複雑なロジックにはコメントを付けます
  • POSIX を対象とする場合は、異なるシェルでテストします

一般的なパターン

堅牢なスクリプトのテンプレート

#!/usr/bin/env bash
set -euo pipefail
IFS=$'\n\t'

trap 'echo "Error on line $LINENO"' ERR
trap cleanup EXIT

cleanup() {
    rm -f "$TEMP_FILE" 2>/dev/null || true
}

main() {
    parse_args "$@"
    validate_environment
    execute_task
}

main "$@"

クロスプラットフォームの検出

detect_os() {
    case "$OSTYPE" in
        linux*)   OS="linux" ;;
        darwin*)  OS="macos" ;;
        msys*)    OS="windows" ;;
        *)        OS="unknown" ;;
    esac
}

コマンドラインツールの詳細なリファレンス、高度な自動化の例、トラブルシューティングの手引きについては、REFERENCE.md を参照してください。

コメント