terraform-best-practices

Terraform and Infrastructure as Code optimization guidelines from Terramate. This skill should be used when writing, reviewing, or refactoring Terraform/OpenTofu code to ensure optimal patterns for security, maintainability, and reliability. Triggers on tasks involving Terraform modules, infrastruct

By terramate-io · 359 installs

npx skills add terramate-io/agent-skills --skill terraform-best-practices

Source repository · Upstream listing

Terraform Best Practices Comprehensive optimization guide for Terraform and Infrastructure as Code, maintained by Terramate. Contains 37 rules across 10 categories, prioritized by impact to guide automated refactoring and code generation. When to Apply Reference these guidelines when: Writing new Terraform modules or configurations Implementing infrastructure patterns (AWS, GCP, Azure, etc.) Reviewing code for security and reliability issues Refactoring existing Terraform/OpenTofu code Optimizing state management and performance Setting up team workflows and governance Rule Categories by Priority Priority Category Impact Prefix 1 Organization & Workflow CRITICAL org 2 State Management CRITICAL state 3 Security Best Practices CRITICAL security 4 Module Design HIGH module 5 Resource Organization MEDIUM HIGH resource 6 Variable & Output Patterns MEDIUM variable , output 7 Language Best Practices MEDIUM language 8 Provider Configuration MEDIUM provider 9 Performance Optimization LOW MEDIUM perf 10 Testing & Validation LOW test Quick Reference 1. Organization & Workflow (CRITICAL) 5 rules org version control All Terraform code in version control org workspaces One workspace per environment per configuration org access control Control who can change what infrastructure org change workflow Formal process for infrastructure changes org audit logging Track all infrastructure changes 2. State Management (CRITICAL) 3 rules state remote backend Always use remote state backends state locking Enable state locking to prevent corruption state import Import existing infrastructure into Terraform 3. Security Best Practices (CRITICAL) 3 rules security no hardcoded secrets Never hardcode secrets in code security credentials Use proper credential management (OIDC, Vault, IAM roles) security iam least privilege Follow least privilege principle 4. Module Design (HIGH) 5 rules module single responsibility One module per logical component module naming Use consistent naming conventions (terraform <PROVIDER <NAME ) module versioning Version all module references module composition Compose modules like building blocks module registry Use existing community/shared modules 5. Resource Organization (MEDIUM HIGH) 5 rules resource naming Use consistent naming conventions resource tagging Tag all resources for cost tracking resource lifecycle Use lifecycle blocks (prevent destroy, ignore changes) resource count vs foreach Prefer for each over count resource immutable Prefer immutable infrastructure patterns 6. Variable & Output Patterns (MEDIUM) 6 rules variable types Use specific types, positive naming, nullable variable validation Add validation rules for early error detection variable sensitive Mark secrets as sensitive, no defaults variable descriptions Document all variables with descriptions output descriptions Document all outputs with descriptions output no secrets Never output secrets directly 7. Language Best Practices (MEDIUM) 5 rules language no heredoc json Use jsonencode/yamlencode, not HEREDOC language locals Use locals to name complex expressions language linting Run terraform fmt and tflint language data sources Use data sources instead of hardcoding language dynamic blocks Use dynamic blocks for DRY code 8. Provider Configuration (MEDIUM) 1 rule provider version constraints Pin provider versions 9. Performance Optimization (LOW MEDIUM) 2 rules perf parallelism Tune parallelism for large deployments perf debug Enable debug logging for troubleshooting 10. Testing & Validation (LOW) 2 rules test strategies Testing pyramid (validate, lint, plan, integration) test policy as code Implement policy checks (OPA, Checkov, tfsec) How to Use Read individual rule files for detailed explanations and code examples: Each rule file contains: Brief explanation of why it matters Incorrect code example with explanation Correct code example with explanation Additional context and references Full Compiled Document For the complete guide with all rules expanded: AGENTS.md