本文へ移動
cccskills
無料GitHub で公開

shell-scripting

シェルスクリプト、起動設定、コマンドのラッパーを作成・修正するとき、ShellCheck の解析条件を調べるときに使う。シェルを介さない処理や一般的な性能調査だけには使わない。

berlysia/dotfilesスター 9(GitHub 9 + cccskills 0)

実行スコア 未検証

インストール方法を見る

含まれるファイル(1)

  • SKILL.md4.8 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

シェルの実行条件と検証

環境と継承を確認する

  1. 対象シェル、login・非 login、対話・非対話、TTY、エージェント固有変数、起動経路を組み合わせて挙動を確かめる。snapshot は対話起動する場合があり、GUI の環境取得は TTY が無い場合があるため、対話フラグや TTY だけで人間と AI を区別しない。
  2. 各経路で実際に読む設定、PATH、alias、Git の editor・pager を確認する。非 login の bash からも判定関数を読めるようにする。zsh の非対話スクリプトにも alias が効くため、全起動で読む設定へ対話用 alias を追加しない。Git 専用変数と設定の優先順位も試す。
  3. snapshot の中身と新しいセッションで実行結果を確かめる。ZDOTDIR を外部ツールも追跡するとは限らない。移行は古い設定から次に読む場所までたどり、未設定と明示値の違い、相互 source の再帰、途中の配置状態も確認する。
  4. tmux やエディタのサーバーなど、長寿命プロセスが古い環境を子へ継承していないか確認する。再起動後も試し、古い値を持つプロセスが無いことを移行用設定の削除条件にする。AI 用の値を取り消す場合は、その値と一致するときだけ消し、利用者自身の設定を保つ。
  5. 子セッションに親のセッション ID を継承させず、SDK に渡す環境は必要な変数の許可リストで組む。env が追加か置換かを確認する。全継承は不要な plugin 設定を持ち込み、少数の指定だけでは PATH などが消える場合がある。実行先の切り替えはコマンド名でも識別できるようにする。

評価順と引用を実入力で試す

  • 呼び出し元のシェルから最終コマンドまで、展開される段階を列挙する。末端を受信引数だけ出力する代替コマンドにし、空文字、空白、改行、引用符、$()、バッククォートを含む値が元の引数と一致するか往復検証する。末端の引用だけでは、その前の展開を防げない。
  • zsh は変数を空白で単語分割しない。複数引数は set -- ... と "$@" などで保持し、出力が空なら対象が本当に渡ったか確認する。
  • 前段の成功が条件なら && で後段へ進む。local x=$(cmd) は代入元の失敗を隠すため、宣言と代入を分け、終了状態を試す。
  • リダイレクトは左から評価される。出力先を開けない失敗も含め、どの stderr に出るかを試す。失敗を意図して扱う範囲を明示する。
  • パイプ内で変更した変数がループ後に残るかを対象シェルで確認する。bash と zsh では結果が異なるため、共有コードは here-document などでループへの入力を渡す。$(cd ...) も zsh の chpwd を発火しうるので、標準出力にタイトル列などが混入しないか確かめる。
  • 行内空白と改行を別々に試す。行内だけなら [ \t] で表し、改行も含む \s に任せない。置換対象が無い入力、空入力、重複も試し、コマンド成功と期待した変更を区別する。
  • GNU・BSD の実装差は使用する出力の部分で検証する。色のエスケープ文字列は printf '%s' と %b の違いを確かめ、対象方言に合う表現を選ぶ。

ShellCheck の解析条件をそろえる

  1. 警告を種類別に集計して原因を調べる。少数の警告にも状態消失や死んだコードがあるため、件数順だけで抑制を決めない。
  2. 実際のシェル方言と、rc・shebang・ファイル内指定・CLI 引数による解析方言を確認する。rc の shell=bash が sh の shebang を上書きすると bashism を検出できない。source 専用ライブラリは実行用 shebang でなく # shellcheck shell=... で方言を明示する。
  3. 件数比較はエディタと同じ解析単位、source の解決条件、設定で行う。全ファイルを一括で渡すと source が解決され、1ファイルずつの解析とは警告集合が変わる。POSIX 互換を確認するなら -s sh の指摘集合の差も比較する。
  4. 静的解析と実行検証を分ける。source が解決されても、bash の複合コマンド内で source した alias は同じブロック内に効かないため、実行時の引数と終了状態を確認する。

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

コメント

ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。

まだコメントはありません。最初のコメントを書いてみませんか。

送信するとすぐに公開されます。メールアドレスや電話番号などの個人情報は書かないでください。URL は 2 つまでです。

0 / 1000 文字

このフォームは reCAPTCHA で保護されており、Google のプライバシーポリシーと利用規約が適用されます。

同じリポジトリのスキル

Migrate existing ADRs to YAML frontmatter format. Scans docs/decisions/ for ADRs without frontmatter, infers status from body text, shows dry-run for approval. Trigger: /adr-migrate

日本語の概要は準備中です。原文の説明を表示しています。

berlysia/dotfiles92026年10月29日 更新

Start or resume an ADR session. Without number: show status overview and recommend next actionable ADR. With number: provide phase-specific guidance. Trigger: /adr-session, /adr-session NNN, /adr-session new

日本語の概要は準備中です。原文の説明を表示しています。

berlysia/dotfiles92026年10月29日 更新

agent-vm

無料概要あり

agent-vm の初期化・共有・資格情報・ポート転送を変更、検証するときに使う。VM 内だけの通常の開発には使わない。

berlysia/dotfiles92026年10月29日 更新

Analyze a project's harness maturity and guide staged adoption of Harness Engineering best practices (quality loops, safety gates, linters, CLAUDE.md optimization).

日本語の概要は準備中です。原文の説明を表示しています。

berlysia/dotfiles92026年10月29日 更新

bugfix

無料

Standardized bug fix workflow using TDD (Red-Green-Refactor). Use when fixing bugs, resolving issues, or when the user invokes /bugfix. Ensures root cause analysis, failing test first, then minimal fix.

日本語の概要は準備中です。原文の説明を表示しています。

berlysia/dotfiles92026年10月29日 更新

chezmoi-operations

無料概要あり

chezmoi で apply や status を実行するとき、配置する対象を増やす、減らす、撤去するとき、配置先の状態や依存の取得経路を確かめるときに使う。chezmoi が関わらない Git や GitHub の手順には使わない。

berlysia/dotfiles92026年10月29日 更新

berlysia のスキルをすべて見る

このスキルの問題を報告する