bash-script-generator について
bash-script-generatorは、要件や手作業のCLI手順からBashスクリプトを作成するスキルです。要件を記録し、テンプレート方式またはカスタム生成を選び、要件と実装の対応を追跡しながら検証を繰り返します。
主な機能
- 01入力、出力、安全性の要件整理
- 02テンプレート方式とカスタム生成の選択
- 03標準CLIスクリプトのひな型
- 04スクリプト要件に応じた資料選択
- 05スクリプトの検証と反復修正
活用シーン
- 01手作業のCLI手順の自動化
- 02テキスト処理や運用スクリプトの作成
- 03cronまたはCI用ユーティリティの作成
- 04要件に基づくBashスクリプト生成と検証
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ akin-ozer/ cc-devops-skills --skill bash-script-generatorインストール後、Claude Code で/bash-script-generatorを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/templates/standard-template.shdocs/bash-scripting-guide.mdgeneration-best-practices.mdscript-patterns.mdtext-processing-guide.mdexamples/log-analyzer.shscripts/generate_script_template.shrun_ci_checks.shtest_generator.sh詳細
Bash スクリプトジェネレーター
概要
要件を明確に収集し、決定論的な生成フローに従って、検証を優先しながら反復することで、本番環境で使える Bash スクリプトを生成します。
トリガーフレーズ
ユーザーから次の依頼があった場合に、このスキルを使用します。
- Bash/シェルスクリプトを作成、生成、記述、または構築する
- 手動の CLI 手順を自動化スクリプトに変換する
grep、awk、またはsedを使用するテキスト処理スクリプトを構築する- 運用支援スクリプト、cron スクリプト、または CI ユーティリティスクリプトを作成する
既存スクリプトの検証だけを行う場合は、このスキルを使用しないでください。検証のみの依頼には devops-skills:bash-script-validator を使用してください。
実行モデル
各ステージを順番に実行してください。ステージを省略せず、行き詰まった場合は記載されている代替手段を使用してください。
ステージ 0:事前確認
- 対象範囲と出力先のパスを確認します。
- 対象シェルを確認します。
- デフォルト:
bash - 移植性が求められる場合:POSIX
sh
- 利用可能な機能を確認し、代替手段を選択します。
| 機能 | デフォルトの方法 | 代替方法 |
|---|---|---|
| 要件の確認 | AskUserQuestion ツール | 通常のチャットで同じ質問をし、未解決の項目は前提として明記する |
| スクリプトのひな形 | bash scripts/generate_script_template.sh ... | assets/templates/standard-template.sh を手動でコピーするか、最小限のひな形を手作業で作成する |
| 検証 | devops-skills:bash-script-validator | ローカルでの確認:bash -n、利用可能であれば shellcheck、POSIX モードでは sh -n |
代替方法を使用した場合は、最終的な概要で明記してください。
ステージ 1:要件の収集
スクリプトを正しく生成するために必要な項目だけを収集します。
- 入力元と形式
- 出力先と形式
- エラー処理の動作(即時終了/再試行/続行)
- セキュリティ上の制約(機密データ、権限レベル)
- パフォーマンス上の制約(大容量ファイル、並列処理)
- 移植性の要件(Bash 専用か POSIX か)
次に、安定した ID を付与した Captured Requirements テーブルを作成します。
## Captured Requirements
| Requirement ID | Description | Source | Implementation Plan |
|---|---|---|---|
| REQ-001 | Parse nginx logs from file input | User | `parse_args()` + `validate_file()` + `awk` parser |
| REQ-002 | Output top 10 errors | User | `analyze_errors()` + `sort | uniq -c | head -10` |
| REQ-003 | Handle large files efficiently | Assumption | Single-pass `awk`; avoid multi-pass loops |
ルール:
- すべての主要な設計判断を、少なくとも 1 つの
REQ-*に対応付けます。 - 前提は明示し、最小限にとどめます。
ステージ 2:生成方法の選択
次の決定木に従ってください。
Need multi-command architecture, unusual control flow, or strict non-template conventions?
├─ Yes -> Custom generation
└─ No
Need standard CLI skeleton (usage/logging/arg parsing/cleanup)?
├─ Yes -> Template-first generation
└─ No -> Custom generation
単一目的の CLI ユーティリティでは、ひな形優先をデフォルトとします。
ステージ 3:関連するリファレンスのみを読み込む
必要に応じて段階的に開示し、現在の依頼に必要なドキュメントのみを読みます。
| 必要な内容 | リファレンス |
|---|---|
ツールの選択(grep と awk と sed) | docs/text-processing-guide.md |
| スクリプトの構成と引数のパターン | docs/script-patterns.md |
| 厳格モード、シェルの違い、安全性 | docs/bash-scripting-guide.md |
| 命名、構成、品質の基準 | docs/generation-best-practices.md |
引用形式(必須):
[Ref: docs/<file>.md -> <section>]
ステージ 4:スクリプトの生成
パス A:ひな形優先(デフォルト)
- ひな形を生成します。
bash scripts/generate_script_template.sh standard output-script.sh
- プレースホルダーを置き換え、業務ロジックを追加します。
- 要件で別途指定されていない限り、ログは標準エラー出力に、データ出力は標準出力に送ります。
- ロジックが自明でない箇所にのみコメントを追加します。
パス B:カスタム生成
少なくとも次の要素を含むスクリプトを構築します。
- シバンと厳格モード
usage()parse_args()- 入力の検証と依存関係の確認
- メインワークフロー関数
- 予測可能な終了コード
ステージ 5:検証と反復
デフォルトの検証方法:
devops-skills:bash-script-validatorを実行する- 修正を適用する
- 検証を再実行する
- チェックに合格するか、阻害要因が特定されるまで繰り返す
代替の検証方法(バリデータースキルが利用できない場合):
# Deterministic local gate for this skill:
bash scripts/run_ci_checks.sh --skip-shellcheck
# CI gate (shellcheck required):
bash scripts/run_ci_checks.sh --require-shellcheck
チェックを省略した場合は、出力に Skipped check、Reason、Risk を含めてください。
ステージ 6:最終応答の要件
必ず次の内容を返してください。
- 生成したスクリプトのパス
- 要件のトレーサビリティ(
REQ-*→ 実装) - 再実行状況を含む検証結果
- 標準形式の引用
- 使用した前提および代替手段
基準となるフロー例
例 A:全フロー(テンプレート優先)
- 不足しているデータ形式と出力の期待値を確認します。
REQ-*の表を作成します。- テンプレート優先の方法を選択します。
scripts/generate_script_template.shでひな形を生成します。- ロジックを実装し、関数を
REQ-*に対応付けます。 devops-skills:bash-script-validatorで検証し、問題がなくなるまで再実行します。- 引用を添えて最終的な概要を提示します。
例 B:制約のある環境でのフロー
AskUserQuestion、validator スキル、または shellcheck が利用できない場合に使用します:
- チャットで確認の質問をします。
- 未解決の項目を
Captured Requirementsに前提条件として記載します。 - テンプレートスクリプトから生成するか、テンプレートファイルをコピーする代替方法を使用します。
bash -n(該当する場合はsh -nも)を実行します。shellcheckが見つからない場合は、スキップしたこととリスク、軽減策を報告します。
完了基準
以下のすべてを満たした場合にのみ、タスクは完了です:
- トリガーに合致し、対象範囲が確認されている
REQ-*ID を含むCaptured Requirementsの表がある- テンプレート優先かカスタムかの判断が記録されている
- 決定論的な構造でスクリプトが生成されている
- 検証を実施し、再実行の方針が適用されている
- スキップしたチェックには明確な理由とリスクが記載されている
- 最終回答にトレーサビリティ、引用、前提条件が含まれている
ヘルパースクリプトとアセット
- スクリプトジェネレーター:
scripts/generate_script_template.sh - 決定論的な CI ゲート:
scripts/run_ci_checks.sh - 回帰テストスイート:
scripts/test_generator.sh - 標準ひな形:
assets/templates/standard-template.sh - 出力スタイルの例:
examples/log-analyzer.sh
参考ドキュメント
docs/bash-scripting-guide.mddocs/script-patterns.mddocs/generation-best-practices.mddocs/text-processing-guide.md