Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Build reusable Terraform modules for AWS, Azure, and GCP infrastructure following infrastructure-as-code best practices. Use when creating infrastructure modules, standardizing cloud provisioning, or implementing reusable IaC components.
.claude/skills/microck-terraform-module-library/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-11 | ✗→✓ | ▲ Improved | 34% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 74% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 46% | 0% |
| case-17 | ✗→✓ | ▲ Improved | 45% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 53% | 0% |
Production-ready Terraform module patterns for AWS, Azure, and GCP infrastructure.
Create reusable, well-tested Terraform modules for common cloud infrastructure patterns across multiple cloud providers.
terraform-modules/
├── aws/
│ ├── vpc/
│ ├── eks/
│ ├── rds/
│ └── s3/
├── azure/
│ ├── vnet/
│ ├── aks/
│ └── storage/
└── gcp/
├── vpc/
├── gke/
└── cloud-sql/module-name/
├── main.tf # Main resources
├── variables.tf # Input variables
├── outputs.tf # Output values
├── versions.tf # Provider versions
├── README.md # Documentation
├── examples/ # Usage examples
│ └── complete/
│ ├── main.tf
│ └── variables.tf
└── tests/ # Terratest files
└── module_test.gomain.tf:
hclresource "aws_vpc" "main" { cidr_block = var.cidr_block enable_dns_hostnames = var.enable_dns_hostnames enable_dns_support = var.enable_dns_support tags = merge( { Name = var.name }, var.tags ) } resource "aws_subnet" "private" { count = length(var.private_subnet_cidrs) vpc_id = aws_vpc.main.id cidr_block = var.private_subnet_cidrs[count.index] availability_zone = var.availability_zones[count.index] tags = merge( { Name = "${var.name}-private-${count.index + 1}" Tier = "private" }, var.tags ) } resource "aws_internet_gateway" "main" { count = var.create_internet_gateway ? 1 : 0 vpc_id = aws_vpc.main.id tags = merge( { Name = "${var.name}-igw" }, var.tags ) }
variables.tf:
hclvariable "name" { description = "Name of the VPC" type = string } variable "cidr_block" { description = "CIDR block for VPC" type = string validation { condition = can(regex("^([0-9]{1,3}\\.){3}[0-9]{1,3}/[0-9]{1,2}$", var.cidr_block)) error_message = "CIDR block must be valid IPv4 CIDR notation." } } variable "availability_zones" { description = "List of availability zones" type = list(string) } variable "private_subnet_cidrs" { description = "CIDR blocks for private subnets" type = list(string) default = [] } variable "enable_dns_hostnames" { description = "Enable DNS hostnames in VPC" type = bool default = true } variable "tags" { description = "Additional tags" type = map(string) default = {} }
outputs.tf:
hcloutput "vpc_id" { description = "ID of the VPC" value = aws_vpc.main.id } output "private_subnet_ids" { description = "IDs of private subnets" value = aws_subnet.private[*].id } output "vpc_cidr_block" { description = "CIDR block of VPC" value = aws_vpc.main.cidr_block }
hclmodule "vpc" { source = "../../modules/aws/vpc" name = "production" cidr_block = "10.0.0.0/16" availability_zones = ["us-west-2a", "us-west-2b", "us-west-2c"] private_subnet_cidrs = [ "10.0.1.0/24", "10.0.2.0/24", "10.0.3.0/24" ] tags = { Environment = "production" ManagedBy = "terraform" } } module "rds" { source = "../../modules/aws/rds" identifier = "production-db" engine = "postgres" engine_version = "15.3" instance_class = "db.t3.large" vpc_id = module.vpc.vpc_id subnet_ids = module.vpc.private_subnet_ids tags = { Environment = "production" } }
assets/vpc-module/ - Complete VPC module exampleassets/rds-module/ - RDS module examplereferences/aws-modules.md - AWS module patternsreferences/azure-modules.md - Azure module patternsreferences/gcp-modules.md - GCP module patternsgo// tests/vpc_test.go package test import ( "testing" "github.com/gruntwork-io/terratest/modules/terraform" "github.com/stretchr/testify/assert" ) func TestVPCModule(t *testing.T) { terraformOptions := &terraform.Options{ TerraformDir: "../examples/complete", } defer terraform.Destroy(t, terraformOptions) terraform.InitAndApply(t, terraformOptions) vpcID := terraform.Output(t, terraformOptions, "vpc_id") assert.NotEmpty(t, vpcID) }
multi-cloud-architecture - For architectural decisionscost-optimization - For cost-effective designs| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-11 | fail→pass | 17,219 | 15,864 | -8% | 1 | 1 | 0% | 3,226 | 4,325 | +34% | 0 | 0 | — |
case-20 | pass→pass | 8,499 | 9,462 | +11% | 1 | 1 | 0% | 2,142 | 3,465 | +62% | 0 | 0 | — |
case-01 | fail→fail | 18,537 | 17,059 | -8% | 1 | 1 | 0% | 4,340 | 5,531 | +27% | 0 | 0 | — |
case-02 | pass→pass | 12,732 | 10,459 | -18% | 1 | 1 | 0% | 2,249 | 3,423 | +52% | 0 | 0 | — |
case-03 | pass→pass | 9,666 | 3,612 | -63% | 1 | 1 | 0% | 1,847 | 2,396 | +30% | 0 | 0 | — |
case-04 | fail→fail | 13,694 | 8,403 | -39% | 1 | 1 | 0% | 2,350 | 3,280 | +40% | 0 | 0 | — |
case-05 | pass→pass | 11,216 | 7,574 | -32% | 1 | 1 | 0% | 2,052 | 3,036 | +48% | 0 | 0 | — |
case-06 | fail→pass | 10,651 | 9,966 | -6% | 1 | 1 | 0% | 2,189 | 3,808 | +74% | 0 | 0 | — |
case-07 | fail→pass | 8,243 | 3,753 | -54% | 1 | 1 | 0% | 1,583 | 2,314 | +46% | 0 | 0 | — |
case-08 | fail→fail | 14,468 | 13,970 | -3% | 1 | 1 | 0% | 2,485 | 4,284 | +72% | 0 | 0 | — |
case-09 | pass→pass | 11,924 | 10,902 | -9% | 1 | 1 | 0% | 2,247 | 3,857 | +72% | 0 | 0 | — |
case-10 | pass→fail | 8,746 | 3,203 | -63% | 1 | 1 | 0% | 1,544 | 2,293 | +49% | 0 | 0 | — |
case-12 | pass→pass | 6,966 | 4,848 | -30% | 1 | 1 | 0% | 1,243 | 2,365 | +90% | 0 | 0 | — |
case-13 | pass→pass | 7,892 | 5,907 | -25% | 1 | 1 | 0% | 1,426 | 2,788 | +96% | 0 | 0 | — |
case-14 | pass→pass | 12,153 | 2,425 | -80% | 1 | 1 | 0% | 2,205 | 2,074 | -6% | 0 | 0 | — |
case-15 | pass→pass | 14,762 | 7,536 | -49% | 1 | 1 | 0% | 2,256 | 3,038 | +35% | 0 | 0 | — |
case-16 | pass→pass | 13,354 | 6,638 | -50% | 1 | 1 | 0% | 2,513 | 2,986 | +19% | 0 | 0 | — |
case-17 | fail→pass | 32,500 | 2,257 | -93% | 1 | 1 | 0% | 1,399 | 2,027 | +45% | 0 | 0 | — |
case-18 | fail→pass | 7,557 | 1,835 | -76% | 1 | 1 | 0% | 1,262 | 1,928 | +53% | 0 | 0 | — |
case-19 | pass→pass | 11,884 | 12,618 | +6% | 1 | 1 | 0% | 2,363 | 4,236 | +79% | 0 | 0 | — |
case-21 | pass→pass | 9,963 | 8,412 | -16% | 1 | 1 | 0% | 2,016 | 3,401 | +69% | 0 | 0 | — |
case-22 | pass→pass | 5,009 | 4,946 | -1% | 1 | 1 | 0% | 986 | 2,691 | +173% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +18 percentage points is the difference between those two pass rates over the 22 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.