Claude-skill-registry exec-tf

Terraform コマンドを実行する。「terraform plan」「terraform apply」「tf init」「tf plan」「tf apply」「terraform して」「tf 実行」「インフラ適用」「プラン確認」「validate」「検証」などで起動。

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/exec-tf" ~/.claude/skills/majiayu000-claude-skill-registry-exec-tf && rm -rf "$T"
manifest: skills/data/exec-tf/SKILL.md
source content

Terraform Executor

Terraform コマンドの実行を支援します。

対応操作

操作トリガー例コマンド
初期化「init して」「terraform init」
terraform init
計画「plan して」「プラン確認」
terraform plan
適用「apply して」「適用して」
terraform apply
検証「validate」「検証して」
terraform validate
フォーマット「fmt」「フォーマット」
terraform fmt
出力確認「output」「出力確認」
terraform output
バージョン「version」「バージョン」
terraform version

実行手順

1. 意図の判定

ユーザーの発話から操作を判定:

  • 初期化系: 「init」「初期化」→
    terraform init
  • 計画系: 「plan」「プラン」「確認」→
    terraform plan
  • 適用系: 「apply」「適用」「実行」→
    terraform apply
  • 検証系: 「validate」「検証」→
    terraform validate
  • フォーマット系: 「fmt」「フォーマット」→
    terraform fmt

2. 事前確認

# Terraform バージョン確認
terraform version

# ワーキングディレクトリの .tf ファイル確認
ls *.tf 2>/dev/null || ls **/*.tf 2>/dev/null

# 初期化状態確認
ls -la .terraform 2>/dev/null

.tf
ファイルがない場合はエラーメッセージを表示して終了。

.terraform
がない場合:

⚠️ Terraform が初期化されていません。
先に `terraform init` を実行してください。

「init して」と言うか、以下を実行:
terraform init

Plan 操作

オプション

オプション説明
--target <resource>
特定リソースのみ plan
--out <file>
plan ファイルを出力
--destroy
destroy plan を実行

plan 実行

標準 plan:

terraform plan -no-color

オプション付き:

# 特定リソースのみ
terraform plan -target=<resource> -no-color

# plan ファイル出力
terraform plan -out=<file> -no-color

# destroy plan
terraform plan -destroy -no-color

plan 結果解析

plan 出力を解析し、以下の情報を抽出:

  • 追加されるリソース(
    +
  • 変更されるリソース(
    ~
  • 削除されるリソース(
    -
  • 再作成されるリソース(
    -/+
    または
    +/-

plan 出力フォーマット

## Plan 結果

| 種類 | 数 | リソース |
|------|-----|----------|
| 🟢 追加 | {N} | {リソース一覧} |
| 🟡 変更 | {N} | {リソース一覧} |
| 🔴 削除 | {N} | {リソース一覧} |
| ⚠️ 再作成 | {N} | {リソース一覧} |

### 変更サマリー

Plan: {add} to add, {change} to change, {destroy} to destroy.

### 破壊的変更(要注意)

{force replacement が発生するリソースがあれば警告}

- `aws_db_instance.main` - force replacement(engine_version の変更)
- ...

破壊的変更の検出

以下のパターンを検出して警告:

  • # ... must be replaced
    - リソースの再作成
  • # ... will be destroyed
    - リソースの削除
  • forces replacement
    - 属性変更による再作成
⚠️ 破壊的変更が検出されました

以下のリソースが再作成または削除されます:
- {リソース名}: {理由}

apply 前に内容を確認してください。

Apply 操作

重要な安全規則

  • -auto-approve
    は絶対に使用しない
  • ✅ 必ずユーザー確認を取ってから apply を実行
  • ✅ 破壊的変更がある場合は特に注意を促す

オプション

オプション説明
<plan-file>
plan ファイルを指定して apply
--target <resource>
特定リソースのみ apply

apply 実行手順

1. plan 実行(plan ファイルがない場合)

plan ファイルが指定されていない場合、先に plan を実行:

terraform plan -no-color

2. 変更内容の確認と警告

plan 結果を解析し、以下を表示:

## Apply 確認

### 変更内容

| 種類 | 数 | リソース |
|------|-----|----------|
| 🟢 追加 | {N} | {リソース一覧} |
| 🟡 変更 | {N} | {リソース一覧} |
| 🔴 削除 | {N} | {リソース一覧} |
| ⚠️ 再作成 | {N} | {リソース一覧} |

{破壊的変更がある場合}
### ⚠️ 警告: 破壊的変更

以下のリソースが削除または再作成されます:
- {リソース名}: {理由}

データ損失の可能性があります。十分に確認してください。

3. ユーザー確認

必ずユーザーに確認を求める:

上記の変更を適用してよろしいですか?

- 「はい」または「apply して」で実行
- 「いいえ」または「キャンセル」で中止

4. apply 実行

ユーザーの承認後のみ実行:

plan ファイルなし:

terraform apply -no-color

インタラクティブに

yes
を入力する必要があるため、ユーザーに案内:

terraform apply を実行します。
確認プロンプトで「yes」を入力してください。

plan ファイルあり:

terraform apply -no-color <plan-file>

plan ファイルからの apply は確認プロンプトなしで実行される。

5. 結果レポート

## Apply 完了

### 適用結果

| 種類 | 数 |
|------|-----|
| 追加 | {N} |
| 変更 | {N} |
| 削除 | {N} |

### 出力値

{terraform output の結果(あれば)}

### 次のステップ

- `terraform state list` で作成されたリソースを確認
- `terraform output` で出力値を確認

apply エラー時の対応

State ロックエラー

Error: Error acquiring the state lock

対応:

⚠️ State がロックされています

別のプロセスが terraform を実行中の可能性があります。
- 他のターミナルで terraform が実行中でないか確認
- CI/CD パイプラインが実行中でないか確認

どうしても解除が必要な場合:
terraform force-unlock <LOCK_ID>

※ force-unlock は危険な操作です。必ず原因を確認してから実行してください。

リソース競合エラー

Error: Resource already exists

対応:

⚠️ リソースが既に存在します

対処方法:
1. import で既存リソースを取り込む
2. リソース名を変更して新規作成
3. 既存リソースを削除してから apply

「import して」と言うと import の手順を案内します。

Validate 操作

オプション

オプション説明
--fix
フォーマットの自動修正を実行

validate 実行手順

1. フォーマットチェック

terraform fmt -check -recursive -diff

2.
--fix
指定時のフォーマット修正

terraform fmt -recursive -write=true
## フォーマット修正

以下のファイルを修正しました:
- main.tf
- variables.tf

修正完了

3. 構文検証

terraform validate

成功時:

Success! The configuration is valid.

4. validate 結果レポート

成功時:

## 検証結果: ✅ 成功

### フォーマット
{フォーマット問題なし / N 件の問題あり}

### 構文検証
✅ 設定は有効です

{--fix なしでフォーマット問題がある場合}
フォーマットを修正するには、自然言語で依頼してください。例:
「Terraform のフォーマットを修正して」「フォーマットを直して」「フォーマットを自動修正して」

エラー時:

## 検証結果: ❌ エラー

### フォーマット
{フォーマットの差分}

### 構文検証
❌ {エラー数} 件のエラー

| ファイル | 行 | エラー |
|----------|-----|--------|
| main.tf | 2 | Missing required argument "ami" |
| ... | ... | ... |

### 修正方法

{エラーごとの修正方法を提案}

validate よくあるエラーと修正方法

エラー原因修正方法
Missing required argument必須属性がない属性を追加
Reference to undeclared resourceリソース参照エラーリソース名を確認
Invalid reference参照構文エラー構文を確認
Unsupported attribute存在しない属性プロバイダのドキュメントを確認
Cycle detected循環参照depends_on を見直し

その他の操作

output:

terraform output

version:

terraform version

出力フォーマット

## Terraform 実行結果

### コマンド
terraform {command}

### 結果
{コマンドの出力}

### サマリー
{成功/失敗と簡潔な説明}

注意事項

  • ✅ plan は安全な読み取り操作
  • ✅ validate は読み取り専用で安全な操作
  • ✅ apply は必ずユーザー確認を取る
  • ✅ 破壊的変更がある場合は特に慎重に
  • --out
    で plan ファイルを保存すると apply 時に同じ変更が適用される
  • -auto-approve
    は使用しない
  • destroy
    は直接実行しない(ユーザーに手動実行を案内)
  • ❌ plan 結果を見ずに apply しない
  • ❌ 確認なしで apply を実行しない