Best practices for writing, structuring, and securing Terraform code. This rule set enforces clean HCL syntax, encourages modular design, validates safe resource lifecycle handling, and ensures secure cloud configurations. It also includes AI-specific response formatting for automated agents.
depends_on
.description
, type
, and default
if applicable. - Include meaningful output
blocks for downstream use. - Mark sensitive outputs with sensitive = true
.prevent_destroy = true
for critical resources when applicable. - Use lifecycle rules and depends_on
defensively, not by default."Action": "*"
unless explicitly requested. - Respect least privilege principle in IAM definitions. - Do not expose secrets or credentials in code or output.project-env-role
(e.g., app-prod-db
). - Add optional inline comments if documentation = true
. - Encourage documentation of module inputs and outputs.terraform validate
and terraform plan
after each change. - Generate minimal examples/
blocks if relevant for modules.terraform destroy
without confirmation.