{"id":"448bcdd0-17ec-4598-b1de-dd9b2cf1cfc8","shortId":"fKvaP5","kind":"skill","title":"terraform-module-library","tagline":"Production-ready Terraform module patterns for AWS, Azure, and GCP infrastructure.","description":"# Terraform Module Library\n\nProduction-ready Terraform module patterns for AWS, Azure, and GCP infrastructure.\n\n## Do not use this skill when\n\n- The task is unrelated to terraform module library\n- You need a different domain or tool outside this scope\n\n## Instructions\n\n- Clarify goals, constraints, and required inputs.\n- Apply relevant best practices and validate outcomes.\n- Provide actionable steps and verification.\n- If detailed examples are required, open `resources/implementation-playbook.md`.\n\n## Purpose\n\nCreate reusable, well-tested Terraform modules for common cloud infrastructure patterns across multiple cloud providers.\n\n## Use this skill when\n\n- Build reusable infrastructure components\n- Standardize cloud resource provisioning\n- Implement infrastructure as code best practices\n- Create multi-cloud compatible modules\n- Establish organizational Terraform standards\n\n## Module Structure\n\n```\nterraform-modules/\n├── aws/\n│   ├── vpc/\n│   ├── eks/\n│   ├── rds/\n│   └── s3/\n├── azure/\n│   ├── vnet/\n│   ├── aks/\n│   └── storage/\n└── gcp/\n    ├── vpc/\n    ├── gke/\n    └── cloud-sql/\n```\n\n## Standard Module Pattern\n\n```\nmodule-name/\n├── main.tf          # Main resources\n├── variables.tf     # Input variables\n├── outputs.tf       # Output values\n├── versions.tf      # Provider versions\n├── README.md        # Documentation\n├── examples/        # Usage examples\n│   └── complete/\n│       ├── main.tf\n│       └── variables.tf\n└── tests/           # Terratest files\n    └── module_test.go\n```\n\n## AWS VPC Module Example\n\n**main.tf:**\n```hcl\nresource \"aws_vpc\" \"main\" {\n  cidr_block           = var.cidr_block\n  enable_dns_hostnames = var.enable_dns_hostnames\n  enable_dns_support   = var.enable_dns_support\n\n  tags = merge(\n    {\n      Name = var.name\n    },\n    var.tags\n  )\n}\n\nresource \"aws_subnet\" \"private\" {\n  count             = length(var.private_subnet_cidrs)\n  vpc_id            = aws_vpc.main.id\n  cidr_block        = var.private_subnet_cidrs[count.index]\n  availability_zone = var.availability_zones[count.index]\n\n  tags = merge(\n    {\n      Name = \"${var.name}-private-${count.index + 1}\"\n      Tier = \"private\"\n    },\n    var.tags\n  )\n}\n\nresource \"aws_internet_gateway\" \"main\" {\n  count  = var.create_internet_gateway ? 1 : 0\n  vpc_id = aws_vpc.main.id\n\n  tags = merge(\n    {\n      Name = \"${var.name}-igw\"\n    },\n    var.tags\n  )\n}\n```\n\n**variables.tf:**\n```hcl\nvariable \"name\" {\n  description = \"Name of the VPC\"\n  type        = string\n}\n\nvariable \"cidr_block\" {\n  description = \"CIDR block for VPC\"\n  type        = string\n  validation {\n    condition     = can(regex(\"^([0-9]{1,3}\\\\.){3}[0-9]{1,3}/[0-9]{1,2}$\", var.cidr_block))\n    error_message = \"CIDR block must be valid IPv4 CIDR notation.\"\n  }\n}\n\nvariable \"availability_zones\" {\n  description = \"List of availability zones\"\n  type        = list(string)\n}\n\nvariable \"private_subnet_cidrs\" {\n  description = \"CIDR blocks for private subnets\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"enable_dns_hostnames\" {\n  description = \"Enable DNS hostnames in VPC\"\n  type        = bool\n  default     = true\n}\n\nvariable \"tags\" {\n  description = \"Additional tags\"\n  type        = map(string)\n  default     = {}\n}\n```\n\n**outputs.tf:**\n```hcl\noutput \"vpc_id\" {\n  description = \"ID of the VPC\"\n  value       = aws_vpc.main.id\n}\n\noutput \"private_subnet_ids\" {\n  description = \"IDs of private subnets\"\n  value       = aws_subnet.private[*].id\n}\n\noutput \"vpc_cidr_block\" {\n  description = \"CIDR block of VPC\"\n  value       = aws_vpc.main.cidr_block\n}\n```\n\n## Best Practices\n\n1. **Use semantic versioning** for modules\n2. **Document all variables** with descriptions\n3. **Provide examples** in examples/ directory\n4. **Use validation blocks** for input validation\n5. **Output important attributes** for module composition\n6. **Pin provider versions** in versions.tf\n7. **Use locals** for computed values\n8. **Implement conditional resources** with count/for_each\n9. **Test modules** with Terratest\n10. **Tag all resources** consistently\n\n## Module Composition\n\n```hcl\nmodule \"vpc\" {\n  source = \"../../modules/aws/vpc\"\n\n  name               = \"production\"\n  cidr_block         = \"10.0.0.0/16\"\n  availability_zones = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n\n  private_subnet_cidrs = [\n    \"10.0.1.0/24\",\n    \"10.0.2.0/24\",\n    \"10.0.3.0/24\"\n  ]\n\n  tags = {\n    Environment = \"production\"\n    ManagedBy   = \"terraform\"\n  }\n}\n\nmodule \"rds\" {\n  source = \"../../modules/aws/rds\"\n\n  identifier     = \"production-db\"\n  engine         = \"postgres\"\n  engine_version = \"15.3\"\n  instance_class = \"db.t3.large\"\n\n  vpc_id     = module.vpc.vpc_id\n  subnet_ids = module.vpc.private_subnet_ids\n\n  tags = {\n    Environment = \"production\"\n  }\n}\n```\n\n## Reference Files\n\n- `assets/vpc-module/` - Complete VPC module example\n- `assets/rds-module/` - RDS module example\n- `references/aws-modules.md` - AWS module patterns\n- `references/azure-modules.md` - Azure module patterns\n- `references/gcp-modules.md` - GCP module patterns\n\n## Testing\n\n```go\n// tests/vpc_test.go\npackage test\n\nimport (\n    \"testing\"\n    \"github.com/gruntwork-io/terratest/modules/terraform\"\n    \"github.com/stretchr/testify/assert\"\n)\n\nfunc TestVPCModule(t *testing.T) {\n    terraformOptions := &terraform.Options{\n        TerraformDir: \"../examples/complete\",\n    }\n\n    defer terraform.Destroy(t, terraformOptions)\n    terraform.InitAndApply(t, terraformOptions)\n\n    vpcID := terraform.Output(t, terraformOptions, \"vpc_id\")\n    assert.NotEmpty(t, vpcID)\n}\n```\n\n## Related Skills\n\n- `multi-cloud-architecture` - For architectural decisions\n- `cost-optimization` - For cost-effective designs\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.","tags":["terraform","module","library","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding"],"capabilities":["skill","source-sickn33","skill-terraform-module-library","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/terraform-module-library","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 34460 github stars · SKILL.md body (5,948 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T06:52:00.165Z","embedding":null,"createdAt":"2026-04-18T21:46:07.522Z","updatedAt":"2026-04-22T06:52:00.165Z","lastSeenAt":"2026-04-22T06:52:00.165Z","tsv":"'-9':287,292,296 '/../modules/aws/rds':501 '/../modules/aws/vpc':463 '/16':469 '/24':488,490,492 '/examples/complete':569 '/gruntwork-io/terratest/modules/terraform':558 '/stretchr/testify/assert':561 '0':251,286,291,295 '1':237,250,288,293,297,397 '10':452 '10.0.0.0':468 '10.0.1.0':487 '10.0.2.0':489 '10.0.3.0':491 '15.3':510 '2':298,403 '2a':475 '2b':479 '2c':483 '3':289,290,294,409 '4':415 '5':422 '6':429 '7':435 '8':441 '9':447 'across':95 'action':71 'addit':353 'ak':139 'appli':63 'architectur':591,593 'ask':636 'assert.notempty':583 'assets/rds-module':533 'assets/vpc-module':528 'attribut':425 'avail':226,312,317,470 'aw':12,27,132,177,184,209,242,538 'aws_subnet.private':381 'aws_vpc.main.cidr':393 'aws_vpc.main.id':219,254,370 'azur':13,28,137,542 'best':65,115,395 'block':188,190,221,274,277,300,304,328,386,389,394,418,467 'bool':347 'boundari':644 'build':103 'cidr':187,216,220,224,273,276,303,309,325,327,385,388,466,486 'clarif':638 'clarifi':57 'class':512 'clear':611 'cloud':92,97,108,120,145,590 'cloud-sql':144 'code':114 'common':91 'compat':121 'complet':170,529 'compon':106 'composit':428,458 'comput':439 'condit':283,443 'consist':456 'constraint':59 'cost':596,600 'cost-effect':599 'cost-optim':595 'count':212,246 'count.index':225,230,236 'count/for_each':446 'creat':83,117 'criteria':647 'db':505 'db.t3.large':513 'decis':594 'default':335,348,358 'defer':570 'describ':615 'descript':265,275,314,326,340,352,364,375,387,408 'design':602 'detail':76 'differ':49 'directori':414 'dns':192,195,198,201,338,342 'document':166,404 'domain':50 'effect':601 'ek':134 'enabl':191,197,337,341 'engin':506,508 'environ':494,524,627 'environment-specif':626 'error':301 'establish':123 'exampl':77,167,169,180,411,413,532,536 'expert':632 'file':175,527 'func':562 'gateway':244,249 'gcp':15,30,141,546 'github.com':557,560 'github.com/gruntwork-io/terratest/modules/terraform':556 'github.com/stretchr/testify/assert':559 'gke':143 'go':550 'goal':58 'hcl':182,262,360,459 'hostnam':193,196,339,343 'id':218,253,363,365,374,376,382,515,517,519,522,582 'identifi':502 'igw':259 'implement':111,442 'import':424,554 'infrastructur':16,31,93,105,112 'input':62,157,420,641 'instanc':511 'instruct':56 'internet':243,248 'ipv4':308 'length':213 'librari':4,19,45 'limit':603 'list':315,320,333 'local':437 'main':154,186,245 'main.tf':153,171,181 'managedbi':496 'map':356 'match':612 'merg':204,232,256 'messag':302 'miss':649 'modul':3,9,18,24,44,89,122,127,131,148,151,179,402,427,449,457,460,498,531,535,539,543,547 'module-nam':150 'module.vpc.private':520 'module.vpc.vpc':516 'module_test.go':176 'multi':119,589 'multi-cloud':118 'multi-cloud-architectur':588 'multipl':96 'must':305 'name':152,205,233,257,264,266,464 'need':47 'notat':310 'open':80 'optim':597 'organiz':124 'outcom':69 'output':160,361,371,383,423,621 'outputs.tf':159,359 'outsid':53 'packag':552 'pattern':10,25,94,149,540,544,548 'permiss':642 'pin':430 'postgr':507 'practic':66,116,396 'privat':211,235,239,323,330,372,378,484 'product':6,21,465,495,504,525 'production-db':503 'production-readi':5,20 'provid':70,98,163,410,431 'provis':110 'purpos':82 'rds':135,499,534 'readi':7,22 'readme.md':165 'refer':526 'references/aws-modules.md':537 'references/azure-modules.md':541 'references/gcp-modules.md':545 'regex':285 'relat':586 'relev':64 'requir':61,79,640 'resourc':109,155,183,208,241,444,455 'resources/implementation-playbook.md':81 'reusabl':84,104 'review':633 's3':136 'safeti':643 'scope':55,614 'semant':399 'skill':36,101,587,606 'skill-terraform-module-library' 'sourc':462,500 'source-sickn33' 'specif':628 'sql':146 'standard':107,126,147 'step':72 'stop':634 'storag':140 'string':271,281,321,334,357 'structur':128 'subnet':210,215,223,324,331,373,379,485,518,521 'substitut':624 'success':646 'support':199,202 'tag':203,231,255,351,354,453,493,523 'task':39,610 'terraform':2,8,17,23,43,88,125,130,497 'terraform-modul':129 'terraform-module-librari':1 'terraform.destroy':571 'terraform.initandapply':574 'terraform.options':567 'terraform.output':578 'terraformdir':568 'terraformopt':566,573,576,580 'terratest':174,451 'test':87,173,448,549,553,555,630 'testing.t':565 'tests/vpc_test.go':551 'testvpcmodul':563 'tier':238 'tool':52 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'treat':619 'true':349 'type':270,280,319,332,346,355 'unrel':41 'us':473,477,481 'us-west-2a':472 'us-west-2b':476 'us-west-2c':480 'usag':168 'use':34,99,398,416,436,604 'valid':68,282,307,417,421,629 'valu':161,369,380,392,440 'var.availability':228 'var.cidr':189,299 'var.create':247 'var.enable':194,200 'var.name':206,234,258 'var.private':214,222 'var.tags':207,240,260 'variabl':158,263,272,311,322,336,350,406 'variables.tf':156,172,261 'verif':74 'version':164,400,432,509 'versions.tf':162,434 'vnet':138 'vpc':133,142,178,185,217,252,269,279,345,362,368,384,391,461,514,530,581 'vpcid':577,585 'well':86 'well-test':85 'west':474,478,482 'zone':227,229,313,318,471","prices":[{"id":"fccb2194-24a7-493f-ab50-8ed4c45df629","listingId":"448bcdd0-17ec-4598-b1de-dd9b2cf1cfc8","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:46:07.522Z"}],"sources":[{"listingId":"448bcdd0-17ec-4598-b1de-dd9b2cf1cfc8","source":"github","sourceId":"sickn33/antigravity-awesome-skills/terraform-module-library","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/terraform-module-library","isPrimary":false,"firstSeenAt":"2026-04-18T21:46:07.522Z","lastSeenAt":"2026-04-22T06:52:00.165Z"}],"details":{"listingId":"448bcdd0-17ec-4598-b1de-dd9b2cf1cfc8","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"terraform-module-library","github":{"repo":"sickn33/antigravity-awesome-skills","stars":34460,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-04-22T06:40:00Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"19ac33e63f5fbde6bd0ea7047d6ec4d64392d0d3","skill_md_path":"skills/terraform-module-library/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/terraform-module-library"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"terraform-module-library","description":"Production-ready Terraform module patterns for AWS, Azure, and GCP infrastructure."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/terraform-module-library"},"updatedAt":"2026-04-22T06:52:00.165Z"}}