mcpField
S
shellcheck

shellcheck

github.com/rshadeテスト・品質389 回インストール2 週間前に更新
リポジトリ

shellcheck について

shellcheckは、実行前に構文、引用符、安全性、移植性の問題を見つけるためのシェルスクリプト検証スキルです。ShellCheckの設定を検出して検査を行い、SCコードと具体的な修正案を報告します。

主な機能

  1. 01シェルスクリプトの構文と慣習を検証
  2. 02プロジェクトとユーザーの設定を検出
  3. 03方言や重要度を指定した検査
  4. 04ファイル、行、SCコード、重要度を報告
  5. 05具体的な修正案を提示

活用シーン

  1. 01コミット前のシェルスクリプト確認
  2. 02デプロイスクリプトの検証
  3. 03標準入力から生成スクリプトを確認

インストール

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

$npx skills add https://github.com/rshade/agent-skills --skill shellcheck

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

同梱ファイル

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

evals/
evals.json
test-script.sh
references/
shellcheck-rules.md
shellcheckrc

詳細

Shellcheck

シェルスクリプト(.sh、bash、sh、dash、ksh)の構文エラー、よくあるバグ、引用符の問題、移植性の問題を検証します。実行時になって初めて表面化するエラーを検出します。

このスキルでできること

  1. shellcheck が利用可能か確認します。見つからない場合はインストール方法を案内します。
  2. プロジェクト固有の .shellcheckrc を検出し、見つからない場合は適切なデフォルト設定を使用します。
  3. シェルスクリプトの構文、引用符、セキュリティ、移植性、ベストプラクティスに関する問題を検証します。
  4. SC コードと具体的な修正方法を示して、エラーを報告します。

インストールの確認

shellcheck --version 2>/dev/null

インストールされていない場合は、次のいずれかの方法でインストールします。

# Debian/Ubuntu
sudo apt-get install shellcheck

# Homebrew (macOS/Linux)
brew install shellcheck

# Snap
sudo snap install shellcheck

# Download binary (Linux amd64)
curl -sL "$(curl -sL https://api.github.com/repos/koalaman/shellcheck/releases/latest \
  | grep browser_download_url | grep linux.x86_64.tar.xz | cut -d'"' -f4)" \
  | tar xJ -C /usr/local/bin shellcheck

インストールに失敗した場合は、問題と解決手順を報告して停止します。 検証を黙って省略してはいけません。

設定の検出優先順位

  1. プロジェクトのルートにある .shellcheckrc
  2. ホームディレクトリにある ~/.shellcheckrc
  3. $XDG_CONFIG_HOME が設定されている場合は $XDG_CONFIG_HOME/shellcheckrc
  4. デフォルト設定(references/shellcheckrc を参照)

プロジェクト設定が存在しない場合は、検証の実行前に references のデフォルト設定を使用します。

検証のワークフロー

1. Check shellcheck installation
   ├─ Installed → continue
   └─ Missing → install, then continue (fail if install fails)

2. Detect project config
   ├─ Found → use it
   └─ Not found → use default config from references/

3. Run validation
   ├─ All scripts:
   │    find . -name '*.sh' -exec shellcheck {} +
   ├─ Specific files:
   │    shellcheck script.sh deploy.sh
   └─ With explicit shell:
        shellcheck -s bash script.sh

4. Report results
   ├─ Valid → confirm and proceed
   └─ Invalid → show errors, suggest fixes, re-validate after correction

検証方法

すべてのシェルスクリプトを検証する(*.sh を自動検出)
find . -name '*.sh' -exec shellcheck {} +
特定のファイルを検証する
shellcheck script.sh deploy.sh
明示的に指定したシェル方言で検証する
shellcheck -s bash script.sh
shellcheck -s sh script
shellcheck -s dash dash-script
標準入力から検証する(生成されたスクリプトに便利です)
cat script.sh | shellcheck -
重大度レベルで絞り込む
# Warnings and above
shellcheck --severity=warning script.sh

# Errors only
shellcheck --severity=error script.sh

# Info and above (verbose)
shellcheck --severity=info script.sh

エラー処理

インストールの失敗

shellcheck をインストールできない場合は、エラーを報告して解決手順を提示します。検証を続行してはいけません。

検証の失敗

検証に失敗した場合は、各エラーについて次の内容を報告します。

  • ファイルと行番号
  • SC コード(例:SC2086)
  • 重大度(エラー、警告、情報、スタイル)
  • 問題の内容
  • 具体的な修正方法

例:

Validation failed:

1. script.sh:5:3 SC2086 (info): Double quote to prevent globbing
   Bad:   echo $USER logged in at $HOME
   Fix:   echo "$USER logged in at $HOME"

2. script.sh:12:1 SC2164 (warning): Use 'cd ... || exit' in case cd fails
   Bad:   cd /app
   Fix:   cd /app || exit 1

3. script.sh:15:20 SC2155 (warning): Declare and assign separately
   Bad:   local result=$(whoami)
   Fix:   local result; result=$(whoami)

4. script.sh:18:1 SC2012 (info): Use find instead of ls in loops
   Bad:   for f in $(ls *.txt); do
   Fix:   for f in *.txt; do

エラーを報告した後、修正方法を提案し、修正後に再検証します。

ルールのリファレンス

すべてのルール、よくあるエラーのカテゴリ、SC コードの説明、詳細な修正例については、references/shellcheck-rules.md を参照してください。

コメント