Agent Skills
› kinncj/Heimdall
› terraform-patterns
terraform-patterns
GitHub提供Terraform基础设施即代码的最佳实践,涵盖模块化结构、状态管理及变量模式。规范工作流与规则,强调成本标注、验证检查及禁止无指令执行Apply,确保安全高效的云资源管理。
Trigger Scenarios
编写或重构Terraform配置
设计基础设施模块结构
管理多环境状态文件
优化Terraform工作流
Install
npx skills add kinncj/Heimdall --skill terraform-patterns -g -y
SKILL.md
Frontmatter
{
"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
# 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
# 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 validatebefore reporting complete. - ALWAYS run
terraform planto show what will change. - NEVER run
terraform applywithout 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.
Version History
- f4ea31f Current 2026-07-05 10:43


