# Terraform スタイル (terraform-style-guide)

> HashiCorp 公式のスタイル規約とベストプラクティスに沿って Terraform の HCL コードを生成・保守します。

- カテゴリ: [コーディング規約](https://www.myskills.tools/ja/categories/code-standards/)
- 提供元: 公式 · HashiCorp
- リポジトリ: https://github.com/hashicorp/agent-skills/tree/main/plugins/terraform/skills/terraform-style-guide (commit 4451cec)
- SKILL.md: https://github.com/hashicorp/agent-skills/blob/main/plugins/terraform/skills/terraform-style-guide/SKILL.md
- インストールコマンド: `npx skills add hashicorp/agent-skills --skill terraform-style-guide`
- ライセンス: MPL-2.0
- 対応ツール: Claude Code, Codex
- 権限: read-repo ✓, write-files ✓, shell ✓, network ✗
- 状態: スキャン済み
- ルールスキャンですべてのリスクを検出できるわけではありません。インストール前にこのスキルの SKILL.md を読み、権限を確認してください。

## 基本ルール

すべての変数に type と description を、すべての出力に description を必ず付けること。

## 実行フェーズ

1. **順序に沿って生成** — provider とバージョン制約から始め、データソース、依存順のリソース、主要属性の出力の順に書き、設定値はすべて変数にします。
2. **ファイル構成** — terraform.tf・providers.tf・main.tf・variables.tf・outputs.tf・locals.tf に分け、変数と出力はアルファベット順にします。
3. **書式と命名** — 2スペースでインデントし等号を揃え、メタ引数を先頭・lifecycle を最後に置きます。名前は小文字とアンダースコアの単数名詞にし、複数作成は count より for_each を使います。
4. **セキュリティと版** — バージョンを明示的に固定し、機密値に sensitive を付け、認証情報を直書きせず SECURITY.md に従って暗号化します。state は含めず .terraform.lock.hcl はコミットします。
5. **検証** — コミット前に terraform fmt -recursive と terraform validate を実行し、必要に応じて tflint・checkov・tfsec も使ってチェックリストを確認します。

## 権限の説明（SKILL.md より）

| 機能 | 必要か | 説明 |
|---|---|---|
| ファイル書き込み | 必要 | Terraform の設定ファイル（.tf）を生成・変更します。 |
| コマンド実行 | 一部で必要 | terraform fmt、terraform validate と、tflint・checkov・tfsec などの検査ツールのみを実行します。 |
| 外部通信 | 不要 | ネットワークアクセスは求めておらず、plan や apply も実行しません。 |

## SKILL.md のフロントマター（YAML）

```yaml
---
name: terraform-style-guide
description: Generate Terraform HCL code following HashiCorp's official style conventions and best practices. Use when writing, reviewing, or generating Terraform configurations.
metadata:
  lifecycle-status: active
---
```

ホーム: https://www.myskills.tools/ja/ · URL: https://www.myskills.tools/ja/skills/terraform-style-guide/
