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.md
source 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 で使い方を文書化
  • ⚠️ モジュール内でハードコードを避ける