Skills Agentes

Terraform Module Library

Construye módulos Terraform reutilizables para infraestructura AWS, Azure, GCP y OCI siguiendo buenas prácticas de infraestructura como código.

Estrellas
39.8k

en todo el repo

Actividad
32

0–100, la ruta de este skill

Actualizado
hace 6 meses

último commit aquí

Commits
0

últimos 90 días

Contexto
1.4k tok

61 tok en reposo

Paquete
3 archivos

8 KB

Instalar

Funciona con cualquier agente que lea SKILL.md

npx -y skills add wshobson/agents --skill terraform-module-library --agent claude-code

Se instala solo en este repositorio.

Qué hace

  • Estructura módulos Terraform reutilizables para AWS, Azure, GCP y OCI con el patrón main.tf/variables.tf/outputs.tf/versions.tf
  • Aporta ejemplos concretos como un módulo VPC de AWS con validación de CIDR y tags
  • Define buenas prácticas: versionado semántico, validación de variables, Terratest, pinning de providers
  • Muestra composición de módulos entre VPC y RDS mediante outputs encadenados

Úsalo cuando

  • Construir componentes de infraestructura reutilizables
  • Estandarizar el aprovisionamiento de recursos cloud
  • Implementar buenas prácticas de infraestructura como código
  • Crear módulos compatibles con multi-cloud o establecer estándares organizacionales de Terraform

No lo uses cuando

    Qué lo activa

    Di cualquiera de estas frases y el agente debería cargar este skill.

    • “Crea un módulo Terraform reutilizable para VPC en AWS”
    • “Ayúdame a estandarizar nuestros módulos de Terraform multi-cloud”
    • “Necesito estructurar un módulo con tests usando Terratest”

    SKILL.md

    En inglés

    Terraform Module Library

    Production-ready Terraform module patterns for AWS, Azure, GCP, and OCI infrastructure.

    Purpose

    Create reusable, well-tested Terraform modules for common cloud infrastructure patterns across multiple cloud providers.

    When to Use

    • Build reusable infrastructure components
    • Standardize cloud resource provisioning
    • Implement infrastructure as code best practices
    • Create multi-cloud compatible modules
    • Establish organizational Terraform standards

    Module Structure

    terraform-modules/
    ├── aws/
    │   ├── vpc/
    │   ├── eks/
    │   ├── rds/
    │   └── s3/
    ├── azure/
    │   ├── vnet/
    │   ├── aks/
    │   └── storage/
    ├── gcp/
    │   ├── vpc/
    │   ├── gke/
    │   └── cloud-sql/
    └── oci/
        ├── vcn/
        ├── oke/
        └── object-storage/
    

    Standard Module Pattern

    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.go
    

    AWS VPC Module Example

    main.tf:

    resource "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:

    variable "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:

    output "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
    }
    

    Best Practices

    1. Use semantic versioning for modules
    2. Document all variables with descriptions
    3. Provide examples in examples/ directory
    4. Use validation blocks for input validation
    5. Output important attributes for module composition
    6. Pin provider versions in versions.tf
    7. Use locals for computed values
    8. Implement conditional resources with count/for_each
    9. Test modules with Terratest
    10. Tag all resources consistently

    Reference: See references/aws-modules.md and references/oci-modules.md

    Module Composition

    module "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"
      }
    }
    

    Testing

    // 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)
    }
    

    Related Skills

    • multi-cloud-architecture - For architectural decisions
    • cost-optimization - For cost-effective designs

    Reproducido de wshobson/agents bajo licencia MIT. Leer esta página en markdown.

    Archivos

    3 archivos en el paquete. Solo se lee SKILL.md al activarse — las referencias se cargan si el skill decide que las necesita.

    Detalles

    Creador
    wshobson
    Licencia
    MIT
    Recursos incluidos
    referencias
    Repositorio
    wshobson/agents
    Código fuente
    Ver SKILL.md

    Etiquetas

    Más de wshobson/agents

    Este repo incluye 183 skills. Si instalas uno, normalmente ya tienes los demás. Ver el pack agents entero y su comando de instalación

    Instala y opera Hermes Tweet, un plugin de Hermes Agent para investigar X/Twitter, leer timelines, analizar tweets y ejecutar operaciones privadas o de cambio de estado con aprobación previa.

    Costo de contexto al activarse
    1.4k tok
    Tamaño del paquete
    3 archivos
    Última actualización
    el mes pasado
    redes sociales

    Úsalo para mantener un almacén Markdown de conocimiento donde cada afirmación compilada se rastrea hasta una fuente inmutable y el drift se detecta con git diff sin gastar tokens.

    Costo de contexto al activarse
    1.4k tok
    Tamaño del paquete
    2 archivos
    Última actualización
    hace 24 días
    documentos

    Úsalo al diseñar o revisar un esquema específico de PostgreSQL: buenas prácticas, tipos de datos, indexación, restricciones, patrones de rendimiento y funciones avanzadas.

    Costo de contexto al activarse
    2k tok
    Tamaño del paquete
    2 archivos
    Última actualización
    hace 24 días
    bases de datos

    Úsalo cuando un proyecto guarda su estado en Superself: lee `self context` al iniciar sesión, vincula el trabajo a una work unit, reporta con evidencia y registra decisiones confirmadas.

    Costo de contexto al activarse
    1.3k tok
    Tamaño del paquete
    1 archivo
    Última actualización
    hace 24 días
    productividad

    Úsalo cuando pidan optimizar un prompt, mejorar su rendimiento, diseñar una plantilla, aplicar chain-of-thought, few-shot prompting o técnicas avanzadas de prompt engineering para producción.

    Costo de contexto al activarse
    1.3k tok
    Tamaño del paquete
    10 archivos
    Última actualización
    el mes pasado
    herramientas desarrollo

    Audita y reescribe prosa para que deje de sonar generada por máquina. Incluye modo solo-detección, modo reescritura y modo edición en el lugar, con perfiles opcionales de voz y contexto.”

    Costo de contexto al activarse
    1.9k tok
    Tamaño del paquete
    4 archivos
    Última actualización
    el mes pasado
    redaccion contenido

    Skills relacionados

    Construye DAGs de Apache Airflow listos para producción con buenas prácticas para operadores, sensores, testing y despliegue.

    Costo de contexto al activarse
    784 tok
    Tamaño del paquete
    2 archivos
    Última actualización
    hace 4 meses
    devops infraestructura

    Domina técnicas de programación defensiva en Bash para scripts de nivel producción: úsalo al escribir shell scripts robustos, pipelines CI/CD o utilidades de sistema que requieran tolerancia a fallos.

    Costo de contexto al activarse
    498 tok
    Tamaño del paquete
    2 archivos
    Última actualización
    hace 4 meses
    devops infraestructura

    Optimiza builds de Bazel en monorepos a gran escala. Úsalo al configurar Bazel, implementar ejecución remota u optimizar el rendimiento de builds en codebases empresariales.

    Costo de contexto al activarse
    523 tok
    Tamaño del paquete
    2 archivos
    Última actualización
    hace 4 meses
    devops infraestructura