Apply Terraform module structure, state management, and variable patterns for infrastructure as code. Use when writing Terraform.
Scanned 9/10/2026
Install to Claude Code
npx -y skills add kinncj/MAPLE --skill terraform-patterns --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Terraform Patterns?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/kinncj-terraform-patterns-4fee1ef4)More formats (shields.io, HTML) on the badges page.
---
name: terraform-patterns
description: "Apply Terraform module structure, state management, and variable patterns for infrastructure as code. Use when writing Terraform."
---
# SKILL: Terraform Patterns
## Module Structure
```
infra/terraform/
├── modules/
│ ├── networking/
│ ├── database/
│ └── compute/
└── environments/
├── dev/
│ ├── main.tf
│ ├── variables.tf
│ └── terraform.tfvars
├── staging/
└── prod/
```
## Module Pattern
```hcl
# modules/database/main.tf
resource "aws_db_instance" "main" {
# finops: ~$180/mo (db.t3.medium, 100GB gp3, single AZ)
identifier = "${var.environment}-${var.name}-db"
engine = "postgres"
engine_version = "16"
instance_class = var.instance_class
allocated_storage = var.storage_gb
storage_type = "gp3"
storage_encrypted = true
username = var.username
password = var.password
vpc_security_group_ids = [aws_security_group.db.id]
db_subnet_group_name = aws_db_subnet_group.main.name
backup_retention_period = var.environment == "prod" ? 7 : 1
deletion_protection = var.environment == "prod"
tags = merge(var.tags, {
Environment = var.environment
ManagedBy = "terraform"
})
}
```
## Workflow
```bash
# Initialize (first time or after provider changes)
terraform init
# Format check (CI)
terraform fmt -check -recursive
# Validate syntax
terraform validate
# Plan (always before apply)
terraform plan -out=plan.tfplan -var-file=environments/dev/terraform.tfvars
# Apply (requires explicit instruction)
terraform apply plan.tfplan
# State inspection
terraform show
terraform state list
```
## Rules
- ALWAYS run `terraform validate` before reporting complete.
- ALWAYS run `terraform plan` to show what will change.
- NEVER run `terraform apply` without explicit instruction.
- ALWAYS annotate resources with `# finops:` cost estimate.
- Use workspaces or separate state files per environment.
- Enable state locking (S3 + DynamoDB or Terraform Cloud).
- Tag all resources with environment, managed-by, and cost-center.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!