[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CWDETSXAZHT5875JYRX25J":3,"skill-same:01M6CWDETSXAZHT5875JYRX25J":74},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":27,"publishedAt":42,"linkOnly":43,"markdownContent":44,"markdownBody":45,"frontMatter":46,"refName":53,"commitSha":54,"skillDirectory":55,"forksCount":56,"repositoryHtmlUrl":57,"repositoryHomepageUrl":6,"ownerHtmlUrl":58,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":59,"install":60,"resources":73},"01M6CWDETSXAZHT5875JYRX25J","infrastructure-as-code",null,"Managing and provisioning infrastructure through machine-readable definition files","ffsshhttiikk\u002Fopencode-agents-skills","ffsshhttiikk","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F226346827?v=4","01M6CWD9RR3Y7VRQX3MXYC8FYH","01M6CWD9WVPYAZW0J82G1VKGHY",3,"MIT","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002FInfrastructure-as-Code\u002FSKILL.md",[17,22],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000011","运维与部署","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[28,29,30,31,32,33,34,35,36,37,38,39,40,41],"infrastructure","code","infrastructure as code","google","azure","deployment","terraform","bicep","cloud","aws","provisioning","devops","files","provisioning infrastructure","2026-11-10 10:12:30",false,"---\nname: infrastructure-as-code\ndescription: Managing and provisioning infrastructure through machine-readable definition files\nlicense: MIT\ncompatibility:\n  - terraform\n  - pulumi\n  - aws-cdk\n  - azure-bicep\n  - google-deployment-manager\naudience: DevOps engineers, cloud architects, platform engineers\ncategory: devops\n---\n\n# Infrastructure as Code\n\n## What I Do\n\nI provide expertise in Infrastructure as Code (IaC) - defining and managing infrastructure through version-controlled, declarative configuration files. I cover Terraform, Pulumi, AWS CDK, and cloud-native IaC tools for provisioning networks, compute, databases, and services. IaC enables consistent, repeatable, and auditable infrastructure management across multiple environments with full lifecycle control.\n\n## When to Use Me\n\n- Provisioning cloud resources across AWS, Azure, GCP, or multi-cloud environments\n- Managing infrastructure versioning and change tracking\n- Implementing immutable infrastructure patterns\n- Creating reproducible development, staging, and production environments\n- Automating infrastructure provisioning in CI\u002FCD pipelines\n- Managing complex infrastructure dependencies and modules\n- Implementing policy as code for compliance enforcement\n- Setting up infrastructure monitoring and alerting as code\n- Managing secrets and sensitive configuration securely\n- Creating self-service infrastructure platforms for development teams\n\n## Core Concepts\n\n- **Declarative Configuration**: Define desired state, let tools reconcile actual state\n- **Immutable Infrastructure**: Replace rather than modify infrastructure for consistency\n- **State Management**: Tracking infrastructure state for drift detection and updates\n- **Modules**: Reusable, composable infrastructure components\n- **Providers**: Plugins interfacing with APIs of cloud and service providers\n- **Plan\u002FApply Pattern**: Preview changes before applying (terraform plan)\n- **Drift Detection**: Identifying differences between desired and actual state\n- **Remote State**: Shared state storage for team collaboration\n- **State Locking**: Preventing concurrent modifications to infrastructure\n- **Variables and Outputs**: Parameterizing and exposing infrastructure values\n- **Workspaces**: Isolating state for different environments\n- **Policies as Code**: Enforcing governance through automated policy checks\n- **Provisioners**: Executing scripts during resource creation\n- **Data Sources**: Querying existing infrastructure for use in configurations\n- **Resource Graph**: Understanding dependencies between resources\n\n## Code Examples\n\n### Terraform Multi-Environment Architecture\n\n```hcl\n# environments\u002Fprod\u002Fmain.tf\nterraform {\n  required_version = \"~> 1.7\"\n  required_providers {\n    aws = {\n      source  = \"hashicorp\u002Faws\"\n      version = \"~> 5.30\"\n    }\n    kubernetes = {\n      source  = \"hashicorp\u002Fkubernetes\"\n      version = \"~> 2.24\"\n       }\n    helm = {\n      source  = \"hashicorp\u002Fhelm\"\n      version = \"~> 2.12\"\n    }\n  }\n\n  backend \"s3\" {\n    bucket         = \"company-terraform-state\"\n    key            = \"prod\u002Fnetwork\u002Fterraform.tfstate\"\n    region         = \"us-east-1\"\n    encrypt        = true\n    dynamodb_table = \"terraform-state-lock\"\n    acl            = \"bucket-owner-full-control\"\n  }\n}\n\nmodule \"vpc\" {\n  source = \"..\u002F..\u002Fmodules\u002Fnetworking\u002Fvpc\"\n\n  environment = \"prod\"\n  cidr_block = \"10.0.0.0\u002F16\"\n\n  azs             = [\"us-east-1a\", \"us-east-1b\", \"us-east-1c\"]\n  private_subnets = [\"10.0.1.0\u002F24\", \"10.0.2.0\u002F24\", \"10.0.3.0\u002F24\"]\n  public_subnets  = [\"10.0.101.0\u002F24\", \"10.0.102.0\u002F24\", \"10.0.103.0\u002F24\"]\n\n  enable_nat_gateway     = true\n  single_nat_gateway    = false\n  enable_dns_hostnames  = true\n  enable_dns_support    = true\n\n  tags = {\n    Environment = \"prod\"\n    ManagedBy   = \"terraform\"\n    Project     = \"api-platform\"\n  }\n}\n\nmodule \"eks\" {\n  source = \"..\u002F..\u002Fmodules\u002Fcompute\u002Feks\"\n\n  cluster_name    = \"api-prod-eks\"\n  cluster_version = \"1.29\"\n\n  vpc_id            = module.vpc.vpc_id\n  subnet_ids       = module.vpc.private_subnet_ids\n  cluster_endpoint = \"public\"\n\n  enable_irsa = true\n\n  node_groups = {\n    general = {\n      instance_types = [\"m6i.xlarge\", \"m5.xlarge\"]\n      min_size       = 3\n      max_size       = 20\n      desired_size   = 5\n      capacity_type  = \"ON_DEMAND\"\n    },\n    spot = {\n      instance_types = [\"m6i.2xlarge\", \"m5.2xlarge\", \"m5a.2xlarge\"]\n      min_size       = 1\n      max_size       = 10\n      desired_size   = 2\n      capacity_type  = \"SPOT\"\n    }\n  }\n\n  enable_autoscaling = true\n  cluster_autoscaler = {\n    min_size = 1\n    max_size = 20\n  }\n\n  addons = {\n    vpc-cni            = { version = \"v1.16.0-eksbuild.1\" }\n    coredns            = { version = \"v1.11.1-eksbuild.3\" }\n    kube-proxy         = { version = \"v1.29.0-eksbuild.2\" }\n    aws-ebs-csi-driver = { version = \"v1.25.0-eksbuild.1\" }\n  }\n\n  enable_monitoring = true\n  enable_logging = [\"api\", \"audit\", \"authenticator\", \"controllerManager\", \"scheduler\"]\n\n  tags = {\n    Environment = \"prod\"\n    Project     = \"api-platform\"\n  }\n}\n\nmodule \"rds_postgres\" {\n  source = \"..\u002F..\u002Fmodules\u002Fdata\u002Fpostgres\"\n\n  identifier = \"api-prod-postgres\"\n\n  engine               = \"postgres\"\n  engine_version       = \"15.5\"\n  instance_class       = \"db.r6g.2xlarge\"\n  allocated_storage    = 500\n  max_allocated_storage = 1000\n\n  db_name  = \"api_production\"\n  username = \"api_admin\"\n  password = random_password.db_password.result\n\n  vpc_id             = module.vpc.vpc_id\n  subnet_ids        = module.vpc.private_subnet_ids\n  security_group_ids = [module.vpc.security_group_id]\n\n  backup_retention_period = 35\n  deletion_protection  = true\n  skip_final_snapshot  = false\n  final_snapshot_identifier = \"api-prod-postgres-final\"\n\n  performance_insights_enabled = true\n  enable_logging = [\"postgresql\", \"upgrade\"]\n\n  maintenance_window = \"sun:02:00-sun:06:00\"\n  backup_window      = \"08:00-12:00\"\n\n  tags = {\n    Environment = \"prod\"\n    Project     = \"api-platform\"\n  }\n}\n\nresource \"random_password\" \"db_password\" {\n  length  = 32\n  special = false\n}\n\noutput \"cluster_endpoint\" {\n  value = module.eks.cluster_endpoint\n}\n\noutput \"rds_endpoint\" {\n  value     = module.rds_postgres.endpoint\n  sensitive = true\n}\n```\n\n### Terraform Module for Kubernetes Namespace\n\n```hcl\n# modules\u002Fkubernetes\u002Fnamespace\u002Fmain.tf\nvariable \"name\" {\n  description = \"Namespace name\"\n  type        = string\n}\n\nvariable \"labels\" {\n  description = \"Additional labels\"\n  type        = map(string)\n  default     = {}\n}\n\nvariable \"annotations\" {\n  description = \"Additional annotations\"\n  type        = map(string)\n  default     = {}\n}\n\nvariable \"quota\" {\n  description = \"Resource quota configuration\"\n  type = object({\n    limits_cpu    = string\n    limits_memory = string\n    requests_cpu  = string\n    requests_memory = string\n    pods          = number\n    services      = number\n  })\n  default = null\n}\n\nvariable \"network_policy\" {\n  description = \"Network policy configuration\"\n  type = object({\n    default_deny_ingress = bool\n    default_deny_egress  = bool\n    ingress_cidrs        = list(string)\n    egress_cidrs        = list(string)\n  })\n  default = null\n}\n\nresource \"kubernetes_namespace\" \"this\" {\n  metadata {\n    name        = var.name\n    labels      = var.labels\n    annotations = var.annotations\n  }\n}\n\nresource \"kubernetes_resource_quota\" \"this\" {\n  count = var.quota != null ? 1 : 0\n\n  metadata {\n    name      = \"${var.name}-quota\"\n    namespace = kubernetes_namespace.this.metadata[0].name\n  }\n\n  spec {\n    hard = {\n      cpu    = var.quota.limits_cpu\n      memory = var.quota.limits_memory\n      pods   = var.quota.pods\n    }\n  }\n}\n\nresource \"kubernetes_network_policy\" \"this\" {\n  count = var.network_policy != null ? 1 : 0\n\n  metadata {\n    name      = \"${var.name}-network-policy\"\n    namespace = kubernetes_namespace.this.metadata[0].name\n  }\n\n  spec {\n    pod_selector {\n      match_labels = {\n        \"kubernetes.io\u002Fmetadata.name\" = kubernetes_namespace.this.metadata[0].name\n      }\n    }\n\n    dynamic \"ingress\" {\n      for_each = var.network_policy.default_deny_ingress ? [] : [1]\n      content {\n        from {\n          ip_block {\n            cidr = var.network_policy.ingress_cidrs[count.index]\n          }\n        }\n      }\n    }\n\n    dynamic \"egress\" {\n      for_each = var.network_policy.default_deny_egress ? [] : [1]\n      content {\n        to {\n          ip_block {\n            cidr = var.network_policy.egress_cidrs[count.index]\n          }\n        }\n      }\n    }\n\n    policy_types = [\"Ingress\", \"Egress\"]\n  }\n}\n\noutput \"namespace_name\" {\n  value = kubernetes_namespace.this.metadata[0].name\n}\n\noutput \"namespace_uid\" {\n  value = kubernetes_namespace.this.metadata[0].uid\n}\n```\n\n### Pulumi Infrastructure Program\n\n```typescript\n\u002F\u002F infrastructure\u002Findex.ts\nimport * as pulumi from \"@pulumi\u002Fpulumi\";\nimport * as aws from \"@pulumi\u002Faws\";\nimport * as kubernetes from \"@pulumi\u002Fkubernetes\";\n\nconst config = new pulumi.Config();\nconst env = pulumi.getStack();\n\nconst project = \"api-platform\";\n\n\u002F\u002F VPC Configuration\nconst vpc = new aws.ec2.Vpc(`${project}-vpc-${env}`, {\n    cidrBlock: config.require(\"vpcCidr\"),\n    enableDnsHostnames: true,\n    enableDnsSupport: true,\n    tags: {\n        Name: `${project}-vpc-${env}`,\n        Environment: env,\n        ManagedBy: \"pulumi\",\n    },\n});\n\nconst publicSubnets: aws.ec2.Subnet[] = [];\nconst privateSubnets: aws.ec2.Subnet[] = [];\n\nconst availabilityZones = aws.getAvailabilityZones({ state: \"available\" });\n\n(availabilityZones.then(azs => azs.names.slice(0, 2).forEach((az, index) => {\n    const publicSubnet = new aws.ec2.Subnet(`${project}-public-${index}`, {\n        vpcId: vpc.id,\n        cidrBlock: config.require(`publicSubnetCidr${index}`),\n        availabilityZone: az,\n        mapPublicIpOnLaunch: true,\n        tags: {\n            Name: `${project}-public-${index}`,\n            Type: \"public\",\n            Environment: env,\n        },\n    });\n    publicSubnets.push(publicSubnet);\n\n    const privateSubnet = new aws.ec2.Subnet(`${project}-private-${index}`, {\n        vpcId: vpc.id,\n        cidrBlock: config.require(`privateSubnetCidr${index}`),\n        availabilityZone: az,\n        tags: {\n            Name: `${project}-private-${index}`,\n            Type: \"private\",\n            Environment: env,\n        },\n    });\n    privateSubnets.push(privateSubnet);\n})));\n\n\u002F\u002F EKS Cluster\nconst eksRole = new aws.iam.Role(`${project}-eks-role-${env}`, {\n    assumeRolePolicy: aws.iam.assumeRolePolicyForPrincipal({ Service: \"eks.amazonaws.com\" }),\n});\n\nnew aws.iam.RolePolicyAttachment(`${project}-eks-cni-${env}`, {\n    policyArn: \"arn:aws:iam::aws:policy\u002FAmazonEKS_CNI_Policy\",\n    role: eksRole.name,\n});\n\nnew aws.iam.RolePolicyAttachment(`${project}-eks-ebs-${env}`, {\n    policyArn: \"arn:aws:iam::aws:policy\u002FAmazonEBSCSIDriverPolicy\",\n    role: eksRole.name,\n});\n\nconst cluster = new aws.eks.Cluster(`${project}-eks-${env}`, {\n    roleArn: eksRole.arn,\n    vpcConfig: {\n        subnetIds: privateSubnets.map(s => s.id),\n        endpointPrivateAccess: true,\n        endpointPublicAccess: true,\n        publicAccessCidrs: [\"0.0.0.0\u002F0\"],\n    },\n    kubernetesNetworkConfig: {\n        serviceIpv4Cidr: \"10.100.0.0\u002F16\",\n    },\n    enabledClusterLogTypes: [\"api\", \"audit\", \"authenticator\"],\n    tags: {\n        Environment: env,\n        ManagedBy: \"pulumi\",\n    },\n});\n\n\u002F\u002F Kubernetes Provider\nconst k8sProvider = new kubernetes.Provider(`${project}-k8s-${env}`, {\n    kubeconfig: cluster.eksCluster.apply(c => \n        `apiVersion: v1\\nkind: Config\\nclusters:\\n- cluster:\\n    certificate-authority-data: ${c.encodedCertificateAuthority?.apply(b => Buffer.from(b, \"base64\").toString())}\\n    server: ${c.endpoint}\\n  name: ${c.name}\\ncontexts:\\n- context:\\n    cluster: ${c.name}\\n    user: ${c.name}\\n  name: ${c.name}\\ncurrent-context: ${c.name}\\nusers:\\n- name: ${c.name}\\n  user:\\n    exec:\\n      apiVersion: client.authentication.k8s.io\u002Fv1beta1\\n      command: aws-iam-authenticator\\n      args:\\n        - token\\n        - -i\\n        - ${c.name}`\n    ),\n}, { dependsOn: cluster });\n\n\u002F\u002F Namespace\nconst namespace = new kubernetes.core.v1.Namespace(`${project}-ns-${env}`, {\n    metadata: {\n        name: `${project}-${env}`,\n        labels: {\n            environment: env,\n        },\n    },\n}, { provider: k8sProvider });\n\n\u002F\u002F Export outputs\nexport const vpcId = vpc.id;\nexport const clusterName = cluster.name;\nexport const kubeconfig = cluster.eksCluster.apply(c => \n    Buffer.from(c.encodedCertificateAuthority!.data, \"base64\").toString()\n);\nexport const namespaceName = namespace.metadata.name;\n```\n\n### AWS CDK Infrastructure\n\n```python\n# infrastructure\u002Fapp.py\nfrom aws_cdk import (\n    App, Stack, Duration,\n    aws_ec2 as ec2,\n    aws_ecs as ecs,\n    aws_ecr as ecr,\n    aws_rds as rds,\n    aws_secretsmanager as secrets,\n    aws_elasticloadbalancingv2 as elbv2,\n    aws_autoscaling as autoscaling,\n    aws_iam as iam,\n)\nfrom constructs import Construct\n\nclass ApiPlatformStack(Stack):\n    def __init__(self, scope: Construct, id: str, *, environment: str = \"prod\", **kwargs):\n        super().__init__(scope, id, **kwargs)\n        \n        self.environment = environment\n        self.project = \"api-platform\"\n        \n        # VPC\n        self.vpc = ec2.Vpc(\n            self, \"Vpc\",\n            cidr=\"10.0.0.0\u002F16\",\n            max_azs=2,\n            nat_gateways=1,\n            subnet_configuration=[\n                ec2.SubnetConfiguration(\n                    name=\"Public\",\n                    subnet_type=ec2.SubnetType.PUBLIC,\n                    cidr_mask=24,\n                ),\n                ec2.SubnetConfiguration(\n                    name=\"Private\",\n                    subnet_type=ec2.SubnetType.PRIVATE_WITH_NAT,\n                    cidr_mask=24,\n                ),\n            ],\n        )\n        \n        # ECR Repository\n        self.repository = ecr.Repository(\n            self, \"EcrRepo\",\n            repository_name=f\"{self.project}-{environment}\",\n            lifecycle_rules=[\n                ecr.LifecycleRule(\n                    description=\"Keep last 10 images\",\n                    max_image_count=10,\n                ),\n            ],\n        )\n        \n        # ECS Cluster\n        self.cluster = ecs.Cluster(\n            self, \"EcsCluster\",\n            cluster_name=f\"{self.project}-{environment}\",\n            container_insights=True,\n        )\n        \n        # Database\n        self.database = rds.DatabaseInstance(\n            self, \"Database\",\n            engine=rds.DatabaseInstanceEngine.postgres(\n                version=rds.PostgresEngineVersion.VER_15_5\n            ),\n            instance_type=ec2.InstanceType.of(\n                ec2.InstanceClass.M6I, ec2.InstanceSize.XLARGE2\n            ),\n            vpc=self.vpc,\n            vpc_subnets=ec2.SubnetSelection(\n                subnet_type=ec2.SubnetType.PRIVATE\n            ),\n            deletion_protection=(environment == \"prod\"),\n            backup_retention=Duration.days(35),\n        )\n        \n        # ALB\n        self.load_balancer = elbv2.ApplicationLoadBalancer(\n            self, \"ALB\",\n            vpc=self.vpc,\n            internet_facing=(environment == \"prod\"),\n            vpc_subnets=ec2.SubnetSelection(\n                subnet_type=ec2.SubnetType.PUBLIC\n                if environment == \"prod\" else ec2.SubnetType.PRIVATE\n            ),\n        )\n        \n        self.create_ecs_service()\n    \n    def create_ecs_service(self):\n        task_definition = ecs.FargateTaskDefinition(\n            self, \"TaskDef\",\n            cpu=512,\n            memory_mib=1024,\n            runtime_platform={\n                \"operatingSystemFamily\": ecs.OperatingSystemFamily.LINUX,\n                \"cpuArchitecture\": ecs.CpuArchitecture.X86_64,\n            },\n        )\n        \n        container = task_definition.add_container(\n            \"ApiContainer\",\n            image=ecs.ContainerImage.from_ecr_repository(\n                self.repository, \"latest\"\n            ),\n            port_mappings=[ecs.PortMapping(container_port=8080)],\n            environment={\n                \"ENVIRONMENT\": self.environment,\n                \"DB_HOST\": self.database.db_instance_endpoint_address,\n            },\n            secrets={\n                \"DB_PASSWORD\": ecs.Secret.from_secrets_manager(\n                    self.database.secret\n                ),\n            },\n            logging=ecs.LogDrivers.aws_logs(\n                stream_prefix=\"api\"\n            ),\n        )\n        \n        ecs.FargateService(\n            self, \"FargateService\",\n            cluster=self.cluster,\n            task_definition=task_definition,\n            desired_count=2,\n            vpc_subnets=ec2.SubnetSelection(\n                subnet_type=ec2.SubnetType.PRIVATE\n            ),\n            load_balancer=self.load_balancer,\n            target_group=elbv2.ApplicationTargetGroup(\n                self, \"TargetGroup\",\n                port=8080,\n                vpc=self.vpc,\n                health_check=elbv2.HealthCheck(\n                    path=\"\u002Fhealth\",\n                    interval=Duration.seconds(30),\n                    healthy_threshold_count=2,\n                    unhealthy_threshold_count=3,\n                ),\n            ),\n        )\n\napp = App()\nApiPlatformStack(app, \"api-platform-prod\", environment=\"prod\")\napp.synth()\n```\n\n## Best Practices\n\n- Use version control for all IaC files with meaningful commit messages\n- Implement a consistent directory structure separating environments and modules\n- Use remote state storage with state locking for team collaboration\n- Never commit state files or secrets to version control\n- Use variable files (.tfvars) for environment-specific configuration\n- Implement drift detection and regular state synchronization\n- Use modules to standardize infrastructure patterns across projects\n- Enable versioning on state backends for state recovery\n- Use `terraform plan` output to review changes before applying\n- Implement policy as code with OPA or Sentinel for compliance\n- Use `terraform destroy` or `terraform plan -destroy` for safe cleanup\n- Structure pipelines with plan, validate, apply stages with approvals\n- Use workspaces or separate state files for environment isolation\n- Implement proper naming conventions for resources across providers\n- Use data sources to reference existing infrastructure rather than duplicating\n- Regular dependency updates for providers and modules\n- Use output values to share information between configurations\n- Implement cost estimation in CI\u002FCD pipelines for budget control\n\n## Common Patterns\n\n- **Module Library Pattern**: Create reusable, versioned infrastructure modules\n- **Environment Parity**: Ensure dev, staging, prod use same infrastructure patterns\n- **Immutable Infrastructure**: Replace rather than modify resources for consistency\n- **GitOps for IaC**: Pull-based deployment of infrastructure changes\n- **Policy as Code**: Automated compliance checking in deployment pipelines\n- **Drift Detection**: Regular reconciliation of desired and actual state\n- **State Isolation**: Separate state per environment or service\n- **Blue-Green Infrastructure**: Parallel environments with cutover\n- **Feature Flags in IaC**: Toggle infrastructure features without code changes\n- **Self-Service Infrastructure**: Catalog of approved infrastructure templates\n","# Infrastructure as Code\n\n## What I Do\n\nI provide expertise in Infrastructure as Code (IaC) - defining and managing infrastructure through version-controlled, declarative configuration files. I cover Terraform, Pulumi, AWS CDK, and cloud-native IaC tools for provisioning networks, compute, databases, and services. IaC enables consistent, repeatable, and auditable infrastructure management across multiple environments with full lifecycle control.\n\n## When to Use Me\n\n- Provisioning cloud resources across AWS, Azure, GCP, or multi-cloud environments\n- Managing infrastructure versioning and change tracking\n- Implementing immutable infrastructure patterns\n- Creating reproducible development, staging, and production environments\n- Automating infrastructure provisioning in CI\u002FCD pipelines\n- Managing complex infrastructure dependencies and modules\n- Implementing policy as code for compliance enforcement\n- Setting up infrastructure monitoring and alerting as code\n- Managing secrets and sensitive configuration securely\n- Creating self-service infrastructure platforms for development teams\n\n## Core Concepts\n\n- **Declarative Configuration**: Define desired state, let tools reconcile actual state\n- **Immutable Infrastructure**: Replace rather than modify infrastructure for consistency\n- **State Management**: Tracking infrastructure state for drift detection and updates\n- **Modules**: Reusable, composable infrastructure components\n- **Providers**: Plugins interfacing with APIs of cloud and service providers\n- **Plan\u002FApply Pattern**: Preview changes before applying (terraform plan)\n- **Drift Detection**: Identifying differences between desired and actual state\n- **Remote State**: Shared state storage for team collaboration\n- **State Locking**: Preventing concurrent modifications to infrastructure\n- **Variables and Outputs**: Parameterizing and exposing infrastructure values\n- **Workspaces**: Isolating state for different environments\n- **Policies as Code**: Enforcing governance through automated policy checks\n- **Provisioners**: Executing scripts during resource creation\n- **Data Sources**: Querying existing infrastructure for use in configurations\n- **Resource Graph**: Understanding dependencies between resources\n\n## Code Examples\n\n### Terraform Multi-Environment Architecture\n\n```hcl\n# environments\u002Fprod\u002Fmain.tf\nterraform {\n  required_version = \"~> 1.7\"\n  required_providers {\n    aws = {\n      source  = \"hashicorp\u002Faws\"\n      version = \"~> 5.30\"\n    }\n    kubernetes = {\n      source  = \"hashicorp\u002Fkubernetes\"\n      version = \"~> 2.24\"\n       }\n    helm = {\n      source  = \"hashicorp\u002Fhelm\"\n      version = \"~> 2.12\"\n    }\n  }\n\n  backend \"s3\" {\n    bucket         = \"company-terraform-state\"\n    key            = \"prod\u002Fnetwork\u002Fterraform.tfstate\"\n    region         = \"us-east-1\"\n    encrypt        = true\n    dynamodb_table = \"terraform-state-lock\"\n    acl            = \"bucket-owner-full-control\"\n  }\n}\n\nmodule \"vpc\" {\n  source = \"..\u002F..\u002Fmodules\u002Fnetworking\u002Fvpc\"\n\n  environment = \"prod\"\n  cidr_block = \"10.0.0.0\u002F16\"\n\n  azs             = [\"us-east-1a\", \"us-east-1b\", \"us-east-1c\"]\n  private_subnets = [\"10.0.1.0\u002F24\", \"10.0.2.0\u002F24\", \"10.0.3.0\u002F24\"]\n  public_subnets  = [\"10.0.101.0\u002F24\", \"10.0.102.0\u002F24\", \"10.0.103.0\u002F24\"]\n\n  enable_nat_gateway     = true\n  single_nat_gateway    = false\n  enable_dns_hostnames  = true\n  enable_dns_support    = true\n\n  tags = {\n    Environment = \"prod\"\n    ManagedBy   = \"terraform\"\n    Project     = \"api-platform\"\n  }\n}\n\nmodule \"eks\" {\n  source = \"..\u002F..\u002Fmodules\u002Fcompute\u002Feks\"\n\n  cluster_name    = \"api-prod-eks\"\n  cluster_version = \"1.29\"\n\n  vpc_id            = module.vpc.vpc_id\n  subnet_ids       = module.vpc.private_subnet_ids\n  cluster_endpoint = \"public\"\n\n  enable_irsa = true\n\n  node_groups = {\n    general = {\n      instance_types = [\"m6i.xlarge\", \"m5.xlarge\"]\n      min_size       = 3\n      max_size       = 20\n      desired_size   = 5\n      capacity_type  = \"ON_DEMAND\"\n    },\n    spot = {\n      instance_types = [\"m6i.2xlarge\", \"m5.2xlarge\", \"m5a.2xlarge\"]\n      min_size       = 1\n      max_size       = 10\n      desired_size   = 2\n      capacity_type  = \"SPOT\"\n    }\n  }\n\n  enable_autoscaling = true\n  cluster_autoscaler = {\n    min_size = 1\n    max_size = 20\n  }\n\n  addons = {\n    vpc-cni            = { version = \"v1.16.0-eksbuild.1\" }\n    coredns            = { version = \"v1.11.1-eksbuild.3\" }\n    kube-proxy         = { version = \"v1.29.0-eksbuild.2\" }\n    aws-ebs-csi-driver = { version = \"v1.25.0-eksbuild.1\" }\n  }\n\n  enable_monitoring = true\n  enable_logging = [\"api\", \"audit\", \"authenticator\", \"controllerManager\", \"scheduler\"]\n\n  tags = {\n    Environment = \"prod\"\n    Project     = \"api-platform\"\n  }\n}\n\nmodule \"rds_postgres\" {\n  source = \"..\u002F..\u002Fmodules\u002Fdata\u002Fpostgres\"\n\n  identifier = \"api-prod-postgres\"\n\n  engine               = \"postgres\"\n  engine_version       = \"15.5\"\n  instance_class       = \"db.r6g.2xlarge\"\n  allocated_storage    = 500\n  max_allocated_storage = 1000\n\n  db_name  = \"api_production\"\n  username = \"api_admin\"\n  password = random_password.db_password.result\n\n  vpc_id             = module.vpc.vpc_id\n  subnet_ids        = module.vpc.private_subnet_ids\n  security_group_ids = [module.vpc.security_group_id]\n\n  backup_retention_period = 35\n  deletion_protection  = true\n  skip_final_snapshot  = false\n  final_snapshot_identifier = \"api-prod-postgres-final\"\n\n  performance_insights_enabled = true\n  enable_logging = [\"postgresql\", \"upgrade\"]\n\n  maintenance_window = \"sun:02:00-sun:06:00\"\n  backup_window      = \"08:00-12:00\"\n\n  tags = {\n    Environment = \"prod\"\n    Project     = \"api-platform\"\n  }\n}\n\nresource \"random_password\" \"db_password\" {\n  length  = 32\n  special = false\n}\n\noutput \"cluster_endpoint\" {\n  value = module.eks.cluster_endpoint\n}\n\noutput \"rds_endpoint\" {\n  value     = module.rds_postgres.endpoint\n  sensitive = true\n}\n```\n\n### Terraform Module for Kubernetes Namespace\n\n```hcl\n# modules\u002Fkubernetes\u002Fnamespace\u002Fmain.tf\nvariable \"name\" {\n  description = \"Namespace name\"\n  type        = string\n}\n\nvariable \"labels\" {\n  description = \"Additional labels\"\n  type        = map(string)\n  default     = {}\n}\n\nvariable \"annotations\" {\n  description = \"Additional annotations\"\n  type        = map(string)\n  default     = {}\n}\n\nvariable \"quota\" {\n  description = \"Resource quota configuration\"\n  type = object({\n    limits_cpu    = string\n    limits_memory = string\n    requests_cpu  = string\n    requests_memory = string\n    pods          = number\n    services      = number\n  })\n  default = null\n}\n\nvariable \"network_policy\" {\n  description = \"Network policy configuration\"\n  type = object({\n    default_deny_ingress = bool\n    default_deny_egress  = bool\n    ingress_cidrs        = list(string)\n    egress_cidrs        = list(string)\n  })\n  default = null\n}\n\nresource \"kubernetes_namespace\" \"this\" {\n  metadata {\n    name        = var.name\n    labels      = var.labels\n    annotations = var.annotations\n  }\n}\n\nresource \"kubernetes_resource_quota\" \"this\" {\n  count = var.quota != null ? 1 : 0\n\n  metadata {\n    name      = \"${var.name}-quota\"\n    namespace = kubernetes_namespace.this.metadata[0].name\n  }\n\n  spec {\n    hard = {\n      cpu    = var.quota.limits_cpu\n      memory = var.quota.limits_memory\n      pods   = var.quota.pods\n    }\n  }\n}\n\nresource \"kubernetes_network_policy\" \"this\" {\n  count = var.network_policy != null ? 1 : 0\n\n  metadata {\n    name      = \"${var.name}-network-policy\"\n    namespace = kubernetes_namespace.this.metadata[0].name\n  }\n\n  spec {\n    pod_selector {\n      match_labels = {\n        \"kubernetes.io\u002Fmetadata.name\" = kubernetes_namespace.this.metadata[0].name\n      }\n    }\n\n    dynamic \"ingress\" {\n      for_each = var.network_policy.default_deny_ingress ? [] : [1]\n      content {\n        from {\n          ip_block {\n            cidr = var.network_policy.ingress_cidrs[count.index]\n          }\n        }\n      }\n    }\n\n    dynamic \"egress\" {\n      for_each = var.network_policy.default_deny_egress ? [] : [1]\n      content {\n        to {\n          ip_block {\n            cidr = var.network_policy.egress_cidrs[count.index]\n          }\n        }\n      }\n    }\n\n    policy_types = [\"Ingress\", \"Egress\"]\n  }\n}\n\noutput \"namespace_name\" {\n  value = kubernetes_namespace.this.metadata[0].name\n}\n\noutput \"namespace_uid\" {\n  value = kubernetes_namespace.this.metadata[0].uid\n}\n```\n\n### Pulumi Infrastructure Program\n\n```typescript\n\u002F\u002F infrastructure\u002Findex.ts\nimport * as pulumi from \"@pulumi\u002Fpulumi\";\nimport * as aws from \"@pulumi\u002Faws\";\nimport * as kubernetes from \"@pulumi\u002Fkubernetes\";\n\nconst config = new pulumi.Config();\nconst env = pulumi.getStack();\n\nconst project = \"api-platform\";\n\n\u002F\u002F VPC Configuration\nconst vpc = new aws.ec2.Vpc(`${project}-vpc-${env}`, {\n    cidrBlock: config.require(\"vpcCidr\"),\n    enableDnsHostnames: true,\n    enableDnsSupport: true,\n    tags: {\n        Name: `${project}-vpc-${env}`,\n        Environment: env,\n        ManagedBy: \"pulumi\",\n    },\n});\n\nconst publicSubnets: aws.ec2.Subnet[] = [];\nconst privateSubnets: aws.ec2.Subnet[] = [];\n\nconst availabilityZones = aws.getAvailabilityZones({ state: \"available\" });\n\n(availabilityZones.then(azs => azs.names.slice(0, 2).forEach((az, index) => {\n    const publicSubnet = new aws.ec2.Subnet(`${project}-public-${index}`, {\n        vpcId: vpc.id,\n        cidrBlock: config.require(`publicSubnetCidr${index}`),\n        availabilityZone: az,\n        mapPublicIpOnLaunch: true,\n        tags: {\n            Name: `${project}-public-${index}`,\n            Type: \"public\",\n            Environment: env,\n        },\n    });\n    publicSubnets.push(publicSubnet);\n\n    const privateSubnet = new aws.ec2.Subnet(`${project}-private-${index}`, {\n        vpcId: vpc.id,\n        cidrBlock: config.require(`privateSubnetCidr${index}`),\n        availabilityZone: az,\n        tags: {\n            Name: `${project}-private-${index}`,\n            Type: \"private\",\n            Environment: env,\n        },\n    });\n    privateSubnets.push(privateSubnet);\n})));\n\n\u002F\u002F EKS Cluster\nconst eksRole = new aws.iam.Role(`${project}-eks-role-${env}`, {\n    assumeRolePolicy: aws.iam.assumeRolePolicyForPrincipal({ Service: \"eks.amazonaws.com\" }),\n});\n\nnew aws.iam.RolePolicyAttachment(`${project}-eks-cni-${env}`, {\n    policyArn: \"arn:aws:iam::aws:policy\u002FAmazonEKS_CNI_Policy\",\n    role: eksRole.name,\n});\n\nnew aws.iam.RolePolicyAttachment(`${project}-eks-ebs-${env}`, {\n    policyArn: \"arn:aws:iam::aws:policy\u002FAmazonEBSCSIDriverPolicy\",\n    role: eksRole.name,\n});\n\nconst cluster = new aws.eks.Cluster(`${project}-eks-${env}`, {\n    roleArn: eksRole.arn,\n    vpcConfig: {\n        subnetIds: privateSubnets.map(s => s.id),\n        endpointPrivateAccess: true,\n        endpointPublicAccess: true,\n        publicAccessCidrs: [\"0.0.0.0\u002F0\"],\n    },\n    kubernetesNetworkConfig: {\n        serviceIpv4Cidr: \"10.100.0.0\u002F16\",\n    },\n    enabledClusterLogTypes: [\"api\", \"audit\", \"authenticator\"],\n    tags: {\n        Environment: env,\n        ManagedBy: \"pulumi\",\n    },\n});\n\n\u002F\u002F Kubernetes Provider\nconst k8sProvider = new kubernetes.Provider(`${project}-k8s-${env}`, {\n    kubeconfig: cluster.eksCluster.apply(c => \n        `apiVersion: v1\\nkind: Config\\nclusters:\\n- cluster:\\n    certificate-authority-data: ${c.encodedCertificateAuthority?.apply(b => Buffer.from(b, \"base64\").toString())}\\n    server: ${c.endpoint}\\n  name: ${c.name}\\ncontexts:\\n- context:\\n    cluster: ${c.name}\\n    user: ${c.name}\\n  name: ${c.name}\\ncurrent-context: ${c.name}\\nusers:\\n- name: ${c.name}\\n  user:\\n    exec:\\n      apiVersion: client.authentication.k8s.io\u002Fv1beta1\\n      command: aws-iam-authenticator\\n      args:\\n        - token\\n        - -i\\n        - ${c.name}`\n    ),\n}, { dependsOn: cluster });\n\n\u002F\u002F Namespace\nconst namespace = new kubernetes.core.v1.Namespace(`${project}-ns-${env}`, {\n    metadata: {\n        name: `${project}-${env}`,\n        labels: {\n            environment: env,\n        },\n    },\n}, { provider: k8sProvider });\n\n\u002F\u002F Export outputs\nexport const vpcId = vpc.id;\nexport const clusterName = cluster.name;\nexport const kubeconfig = cluster.eksCluster.apply(c => \n    Buffer.from(c.encodedCertificateAuthority!.data, \"base64\").toString()\n);\nexport const namespaceName = namespace.metadata.name;\n```\n\n### AWS CDK Infrastructure\n\n```python\n# infrastructure\u002Fapp.py\nfrom aws_cdk import (\n    App, Stack, Duration,\n    aws_ec2 as ec2,\n    aws_ecs as ecs,\n    aws_ecr as ecr,\n    aws_rds as rds,\n    aws_secretsmanager as secrets,\n    aws_elasticloadbalancingv2 as elbv2,\n    aws_autoscaling as autoscaling,\n    aws_iam as iam,\n)\nfrom constructs import Construct\n\nclass ApiPlatformStack(Stack):\n    def __init__(self, scope: Construct, id: str, *, environment: str = \"prod\", **kwargs):\n        super().__init__(scope, id, **kwargs)\n        \n        self.environment = environment\n        self.project = \"api-platform\"\n        \n        # VPC\n        self.vpc = ec2.Vpc(\n            self, \"Vpc\",\n            cidr=\"10.0.0.0\u002F16\",\n            max_azs=2,\n            nat_gateways=1,\n            subnet_configuration=[\n                ec2.SubnetConfiguration(\n                    name=\"Public\",\n                    subnet_type=ec2.SubnetType.PUBLIC,\n                    cidr_mask=24,\n                ),\n                ec2.SubnetConfiguration(\n                    name=\"Private\",\n                    subnet_type=ec2.SubnetType.PRIVATE_WITH_NAT,\n                    cidr_mask=24,\n                ),\n            ],\n        )\n        \n        # ECR Repository\n        self.repository = ecr.Repository(\n            self, \"EcrRepo\",\n            repository_name=f\"{self.project}-{environment}\",\n            lifecycle_rules=[\n                ecr.LifecycleRule(\n                    description=\"Keep last 10 images\",\n                    max_image_count=10,\n                ),\n            ],\n        )\n        \n        # ECS Cluster\n        self.cluster = ecs.Cluster(\n            self, \"EcsCluster\",\n            cluster_name=f\"{self.project}-{environment}\",\n            container_insights=True,\n        )\n        \n        # Database\n        self.database = rds.DatabaseInstance(\n            self, \"Database\",\n            engine=rds.DatabaseInstanceEngine.postgres(\n                version=rds.PostgresEngineVersion.VER_15_5\n            ),\n            instance_type=ec2.InstanceType.of(\n                ec2.InstanceClass.M6I, ec2.InstanceSize.XLARGE2\n            ),\n            vpc=self.vpc,\n            vpc_subnets=ec2.SubnetSelection(\n                subnet_type=ec2.SubnetType.PRIVATE\n            ),\n            deletion_protection=(environment == \"prod\"),\n            backup_retention=Duration.days(35),\n        )\n        \n        # ALB\n        self.load_balancer = elbv2.ApplicationLoadBalancer(\n            self, \"ALB\",\n            vpc=self.vpc,\n            internet_facing=(environment == \"prod\"),\n            vpc_subnets=ec2.SubnetSelection(\n                subnet_type=ec2.SubnetType.PUBLIC\n                if environment == \"prod\" else ec2.SubnetType.PRIVATE\n            ),\n        )\n        \n        self.create_ecs_service()\n    \n    def create_ecs_service(self):\n        task_definition = ecs.FargateTaskDefinition(\n            self, \"TaskDef\",\n            cpu=512,\n            memory_mib=1024,\n            runtime_platform={\n                \"operatingSystemFamily\": ecs.OperatingSystemFamily.LINUX,\n                \"cpuArchitecture\": ecs.CpuArchitecture.X86_64,\n            },\n        )\n        \n        container = task_definition.add_container(\n            \"ApiContainer\",\n            image=ecs.ContainerImage.from_ecr_repository(\n                self.repository, \"latest\"\n            ),\n            port_mappings=[ecs.PortMapping(container_port=8080)],\n            environment={\n                \"ENVIRONMENT\": self.environment,\n                \"DB_HOST\": self.database.db_instance_endpoint_address,\n            },\n            secrets={\n                \"DB_PASSWORD\": ecs.Secret.from_secrets_manager(\n                    self.database.secret\n                ),\n            },\n            logging=ecs.LogDrivers.aws_logs(\n                stream_prefix=\"api\"\n            ),\n        )\n        \n        ecs.FargateService(\n            self, \"FargateService\",\n            cluster=self.cluster,\n            task_definition=task_definition,\n            desired_count=2,\n            vpc_subnets=ec2.SubnetSelection(\n                subnet_type=ec2.SubnetType.PRIVATE\n            ),\n            load_balancer=self.load_balancer,\n            target_group=elbv2.ApplicationTargetGroup(\n                self, \"TargetGroup\",\n                port=8080,\n                vpc=self.vpc,\n                health_check=elbv2.HealthCheck(\n                    path=\"\u002Fhealth\",\n                    interval=Duration.seconds(30),\n                    healthy_threshold_count=2,\n                    unhealthy_threshold_count=3,\n                ),\n            ),\n        )\n\napp = App()\nApiPlatformStack(app, \"api-platform-prod\", environment=\"prod\")\napp.synth()\n```\n\n## Best Practices\n\n- Use version control for all IaC files with meaningful commit messages\n- Implement a consistent directory structure separating environments and modules\n- Use remote state storage with state locking for team collaboration\n- Never commit state files or secrets to version control\n- Use variable files (.tfvars) for environment-specific configuration\n- Implement drift detection and regular state synchronization\n- Use modules to standardize infrastructure patterns across projects\n- Enable versioning on state backends for state recovery\n- Use `terraform plan` output to review changes before applying\n- Implement policy as code with OPA or Sentinel for compliance\n- Use `terraform destroy` or `terraform plan -destroy` for safe cleanup\n- Structure pipelines with plan, validate, apply stages with approvals\n- Use workspaces or separate state files for environment isolation\n- Implement proper naming conventions for resources across providers\n- Use data sources to reference existing infrastructure rather than duplicating\n- Regular dependency updates for providers and modules\n- Use output values to share information between configurations\n- Implement cost estimation in CI\u002FCD pipelines for budget control\n\n## Common Patterns\n\n- **Module Library Pattern**: Create reusable, versioned infrastructure modules\n- **Environment Parity**: Ensure dev, staging, prod use same infrastructure patterns\n- **Immutable Infrastructure**: Replace rather than modify resources for consistency\n- **GitOps for IaC**: Pull-based deployment of infrastructure changes\n- **Policy as Code**: Automated compliance checking in deployment pipelines\n- **Drift Detection**: Regular reconciliation of desired and actual state\n- **State Isolation**: Separate state per environment or service\n- **Blue-Green Infrastructure**: Parallel environments with cutover\n- **Feature Flags in IaC**: Toggle infrastructure features without code changes\n- **Self-Service Infrastructure**: Catalog of approved infrastructure templates\n",{"name":5,"license":14,"audience":47,"category":39,"description":7,"compatibility":48},"DevOps engineers, cloud architects, platform engineers",[34,49,50,51,52],"pulumi","aws-cdk","azure-bicep","google-deployment-manager","main","5f7a3e453c98261f93d19a6a7de44ad8f7b72d41","Infrastructure-as-Code",2,"https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk","2026-03-01 06:55:40",{"source":8,"skillName":5,"commands":61,"prompt":71,"zipAvailable":72},[62,65,68],{"tool":63,"command":64},"npx","npx skills add ffsshhttiikk\u002Fopencode-agents-skills --skill infrastructure-as-code",{"tool":66,"command":67},"bunx","bunx skills add ffsshhttiikk\u002Fopencode-agents-skills --skill infrastructure-as-code",{"tool":69,"command":70},"pnpm","pnpm dlx skills add ffsshhttiikk\u002Fopencode-agents-skills --skill infrastructure-as-code","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002FInfrastructure-as-Code\u002FSKILL.md",true,[],[75,87,97,106,116,125],{"skillNo":76,"name":77,"nameZh":6,"description":78,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":81,"publishedAt":42},"01M6CXT9TXDF79BWJTMQAPB49G","xamarin","Xamarin cross-platform development","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fxamarin\u002FSKILL.md",[],[77,82,83,84,85,86],"platform","cross-platform","mobile","opencode","development",{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":93,"publishedAt":42},"01M6CXT8AD04MFYDA32VW3FKAG","wrangling","Data wrangling fundamentals","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fwrangling\u002FSKILL.md",[],[89,94,85,95,96],"data wrangling","science","data",{"skillNo":98,"name":99,"nameZh":6,"description":100,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":101,"categories":102,"keywords":103,"publishedAt":42},"01M6CXT717GCN7SRRNPBDP4508","windows","Windows operating system administration and scripting","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fwindows\u002FSKILL.md",[],[99,104,85,105],"system","scripting",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":112,"publishedAt":42},"01M6CXT54K794NMEM3XAPZZDKT","wide-column","Wide-column data model","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fwide-column\u002FSKILL.md",[],[113,114,85,115,96],"wide column","databases","model",{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":122,"publishedAt":42},"01M6CXT28FMT2P4V9GZE67WA8E","wide-column-stores","Wide-column database stores","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fwide-column-stores\u002FSKILL.md",[],[123,114,85,124],"wide column stores","database",{"skillNo":126,"name":127,"nameZh":6,"description":128,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":129,"categories":130,"keywords":131,"publishedAt":42},"01M6CXT0D0M0Q4T2N7C2RX7DSN","websockets","WebSocket implementation and best practices","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fwebsockets\u002FSKILL.md",[],[127,132,133,134,85,135,136],"websocket","real-time","time","best practices","implementation"]