Claude-skill-registry generate-module
Terraform モジュールを生成・管理する。「モジュール作成」「モジュール生成」「新しいモジュール」「module 作って」「モジュール構造」「tf モジュール」「terraform モジュール追加」「モジュールのテンプレート」「モジュール scaffold」などで起動。
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/generate-module" ~/.claude/skills/majiayu000-claude-skill-registry-generate-module && rm -rf "$T"
manifest:
skills/data/generate-module/SKILL.mdsource content
Module Generator
Terraform モジュールのスキャフォールドを生成します。
対応操作
| 操作 | トリガー例 |
|---|---|
| モジュール作成 | 「モジュール作成」「module 作って」 |
| 構造確認 | 「モジュール構造」「module 一覧」 |
| テンプレート | 「モジュールテンプレート」 |
実行手順
1. モジュール情報の確認
## モジュール作成 作成するモジュールの情報を教えてください: 1. モジュール名(例: vpc, ec2, rds) 2. 作成場所(デフォルト: modules/) 3. 用途(例: VPC ネットワーク構築、EC2 インスタンス作成)
2. ディレクトリ構造の作成
mkdir -p modules/{module_name}
3. ファイルの生成
main.tf
# {Module Name} Module # # {用途の説明} # TODO: リソース定義を追加
variables.tf
# 入力変数 variable "name" { description = "リソースの名前プレフィックス" type = string } variable "environment" { description = "環境名(dev, stg, prod)" type = string default = "dev" } variable "tags" { description = "リソースに付与するタグ" type = map(string) default = {} } # TODO: 必要な変数を追加
outputs.tf
# 出力値 # TODO: 出力値を追加 # output "id" { # description = "リソースの ID" # value = aws_xxx.main.id # }
versions.tf
terraform { required_version = ">= 1.0.0" required_providers { aws = { source = "hashicorp/aws" version = ">= 5.0.0" } } }
README.md
# {Module Name} Module {用途の説明} ## 使い方 \`\`\`hcl module "{module_name}" { source = "./modules/{module_name}" name = "example" environment = "dev" tags = { Project = "example" } } \`\`\` ## 入力変数 | 変数 | 説明 | 型 | デフォルト | 必須 | |------|------|-----|----------|------| | name | リソースの名前プレフィックス | string | - | ✅ | | environment | 環境名 | string | dev | | | tags | リソースに付与するタグ | map(string) | {} | | ## 出力値 | 出力 | 説明 | |------|------| | (TODO) | | ## 依存関係 - Terraform >= 1.0.0 - AWS Provider >= 5.0.0 \`\`\`
4. 出力フォーマット
## モジュール作成完了 ### 作成されたファイル modules/{module_name}/ ├── main.tf # リソース定義 ├── variables.tf # 入力変数 ├── outputs.tf # 出力値 ├── versions.tf # バージョン制約 └── README.md # ドキュメント ### 次のステップ 1. `main.tf` にリソース定義を追加 2. `variables.tf` に必要な変数を追加 3. `outputs.tf` に出力値を追加 4. `README.md` を更新 ### 使い方 \`\`\`hcl module "{module_name}" { source = "./modules/{module_name}" name = "example" environment = "dev" } \`\`\`
モジュール設計のベストプラクティス
命名規則
- モジュール名は小文字とハイフン(例:
)vpc-network - 変数名は小文字とアンダースコア(例:
)instance_type
変数設計
- 必須変数は
を設定しないdefault - オプション変数は適切なデフォルト値を設定
は必ず記載description
は必ず指定type
出力設計
- モジュール外から参照される値は必ず出力
は必ず記載description- センシティブな値は
sensitive = true
注意事項
- ✅ モジュールは再利用可能な単位で設計
- ✅ 変数と出力には必ず description を記載
- ✅ README.md で使い方を文書化
- ⚠️ モジュール内でハードコードを避ける