Claude Code Plugins

Community-maintained marketplace

Feedback

Terraform モジュールを生成・管理する。「モジュール作成」「モジュール生成」「新しいモジュール」「module 作って」「モジュール構造」「tf モジュール」「terraform モジュール追加」「モジュールのテンプレート」「モジュール scaffold」などで起動。

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name module-generator
description Terraform モジュールを生成・管理する。「モジュール作成」「モジュール生成」「新しいモジュール」「module 作って」「モジュール構造」「tf モジュール」「terraform モジュール追加」「モジュールのテンプレート」「モジュール scaffold」などで起動。
allowed-tools Bash, Read, Write, Edit
context fork
agent shiiman-terraform:module-designer

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