# Terraform 스타일 (terraform-style-guide)

> HashiCorp 공식 스타일 규칙과 모범 사례에 따라 Terraform HCL 코드를 생성하고 관리합니다.

- 카테고리: [코드 규약](https://www.myskills.tools/ko/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. **포맷과 명명** — 두 칸 들여쓰기와 등호 정렬, 메타 인자 먼저·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/ko/ · URL: https://www.myskills.tools/ko/skills/terraform-style-guide/
