shellcheck について
shellcheckは、実行前に構文、引用符、安全性、移植性の問題を見つけるためのシェルスクリプト検証スキルです。ShellCheckの設定を検出して検査を行い、SCコードと具体的な修正案を報告します。
主な機能
- 01シェルスクリプトの構文と慣習を検証
- 02プロジェクトとユーザーの設定を検出
- 03方言や重要度を指定した検査
- 04ファイル、行、SCコード、重要度を報告
- 05具体的な修正案を提示
活用シーン
- 01コミット前のシェルスクリプト確認
- 02デプロイスクリプトの検証
- 03標準入力から生成スクリプトを確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ rshade/ agent-skills --skill shellcheckインストール後、Claude Code で/shellcheckを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
evals/evals.jsontest-script.shreferences/shellcheck-rules.mdshellcheckrc詳細
Shellcheck
シェルスクリプト(.sh、bash、sh、dash、ksh)の構文エラー、よくあるバグ、引用符の問題、移植性の問題を検証します。実行時になって初めて表面化するエラーを検出します。
このスキルでできること
shellcheckが利用可能か確認します。見つからない場合はインストール方法を案内します。- プロジェクト固有の
.shellcheckrcを検出し、見つからない場合は適切なデフォルト設定を使用します。 - シェルスクリプトの構文、引用符、セキュリティ、移植性、ベストプラクティスに関する問題を検証します。
- 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
インストールに失敗した場合は、問題と解決手順を報告して停止します。 検証を黙って省略してはいけません。
設定の検出優先順位
- プロジェクトのルートにある
.shellcheckrc - ホームディレクトリにある
~/.shellcheckrc $XDG_CONFIG_HOMEが設定されている場合は$XDG_CONFIG_HOME/shellcheckrc- デフォルト設定(
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 を参照してください。
コメント
Markdown 対応