terraform · git:20261018.90b97a9 · 2026-10-18 · sha256 fd43f54da65c6e2b
terraform git:20261018.90b97a9A
Immutable. This exact content never changes and is served at /api/v1/blob/fd43f54da65c6e2b.
---
name: terraform
description: Runs through the full Terraform validation pipeline — fmt, validate, tflint, security scan — and reviews a module or plan for blast radius, IAM risk, and state impact.
argument-hint: "[paste terraform code, plan output, or describe the change]"
title: "Terraform Command"
sidebar_label: "terraform"
custom_edit_url: null
---
---
## Interactive Wizard (fires when $ARGUMENTS is empty)
When invoked with no arguments, ask before reviewing:
**Q1 — What to review?**
```
Paste the Terraform code or plan output, or describe the change
(e.g. "adding an aws_rds_instance", "plan shows 3 resources destroyed", "here's my EKS module"):
```
**Q2 — Focus area?** (ask after Q1)
```
Any specific focus, or full review?
1. Full review — validation pipeline + blast radius + IAM + state impact
2. IAM / security — least privilege, wildcard actions, sensitive vars
3. Blast radius — what gets replaced vs updated, downstream impact
4. Module design — variable validation, output types, provider config
Enter 1–4 [default: 1]:
```
Then proceed with the review framework below.
---
You are a senior platform engineer reviewing Terraform.
The input is: $ARGUMENTS
## 1. Validation Pipeline
Walk through each gate in order. For each, state whether it would pass or fail based on the provided code, and why:
1. **`terraform fmt -check -recursive`** — formatting and style
2. **`terraform validate`** — syntax, type correctness, reference integrity (note: use `-backend=false` in CI)
3. **`tflint --recursive`** — provider-specific rules (invalid instance types, deprecated arguments, missing required_version)
4. **`tfsec . --minimum-severity HIGH`** or **`checkov -d . --framework terraform --compact`** — security misconfigurations
> **Checkov deep scan:** For full static and plan-level Checkov scanning with bootstrap, multi-cloud provider detection, private module auth, pre-commit generation, and fix mode — use `/platform-skills:checkov`.
> **tfsec version note:** Flag syntax changed in v1.0+. Check with `tfsec --version`.
> - `< v1.0`: use `--minimum-severity HIGH`
> - `>= v1.0`: use `--severity HIGH`
> - Drop-in alternative: `trivy config . --severity HIGH`
## 2. Blast Radius
- What cloud resources does this create, modify, or destroy?
- Which resources will be **replaced** (destroyed and recreated) vs updated in-place?
- What downstream systems depend on these resources?
- What is the impact if this apply fails halfway?
**Pre-merge validation:** Run against a test workspace before merging:
```bash
terraform workspace select <test-workspace>
terraform plan -out=tfplan
# Review the plan output for unexpected resource replacements (lines marked with -/+)
# Any replacement of stateful resources (RDS, ElastiCache, EKS node group) requires explicit approval
```
## 3. IAM and Security
- Are IAM policies least-privilege? Flag any wildcard actions or resources.
- Are tags enforced via `default_tags` (AWS) or `merge(local.common_tags, {...})` (Azure)?
- Are secrets passed via variables marked `sensitive = true`?
- Is the state backend encrypted?
## 4. State Impact
- Does this change require a state migration or `terraform state mv`?
- Are there resources that Terraform does not manage that could conflict?
- Is state isolated by environment and blast radius?
## 5. Module Design (if reviewing a module)
- Are variables validated with `validation` blocks?
- Are outputs documented and typed?
- Is the provider configured in the caller, not the module?
## 6. Recommended Actions
List exact fixes with the corrected HCL snippet where applicable.