关于 infrastructure-coder
面向基础设施代码生成与审查的技能,覆盖 Terraform/OpenTofu、Kubernetes 和 Dockerfile。可按模式执行生成、相对成本比较及安全检查,不处理 CI/CD、应用代码或实际费用计算。
主要功能
- 01生成 Terraform/OpenTofu 模块
- 02生成 Kubernetes 清单和 Helm Chart
- 03优化 Dockerfile
- 04审查 IaC 正确性与可靠性
- 05扫描安全配置问题
- 06比较资源的相对成本
适用场景
- 01搭建云基础设施模块
- 02编写 Kubernetes 部署配置
- 03优化容器镜像构建
- 04检查现有 IaC 的风险
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ wyattowalsh/ agents --skill infrastructure-coder安装后在 Claude Code 中输入/infrastructure-coder确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
data/cloud-equivalents.jsondockerfile-rules.jsonk8s-best-practices.jsonevals/docker-optimize.jsonevals.jsonexplicit-terraform.jsonimplicit-trigger.jsonkubernetes-manifest.jsonnegative-control.jsonsecurity-scan.jsonreferences/cloud-equivalents.mdcost-comparison.mddockerfile-guide.mdkubernetes-patterns.mdsecurity-hardening.mdterraform-patterns.mdscripts/check.pydockerfile-analyzer.pyk8s-manifest-validator.pyterraform-module-scanner.pyscripts/asset_toolkit/__init__.py_shared.pycommon.pypackage.pyvalidate_evals.pyvalidate_hooks.pyvalidate_skill.pytemplates/dashboard.html详细介绍
基础设施编码器
生成、审查和分析基础设施即代码(IaC)。Terraform/OpenTofu 模块、Kubernetes 清单、Dockerfile。
范围: 仅限 IaC 生成和分析。不适用于 CI/CD 流水线(devops-engineer)、应用代码、云控制台操作或实际成本计算。
规范术语
| 术语 | 定义 |
|---|---|
| module | 一个独立的 Terraform/OpenTofu 单元,包含变量、资源和输出 |
| manifest | Kubernetes YAML 资源定义 |
| chart | 包含模板化 K8s 清单的 Helm 包 |
| stage | 多阶段 Dockerfile 中的一个 Docker 构建阶段 |
| resource | 云基础设施原语(实例、存储桶、网络等) |
| misconfiguration | IaC 中的安全或可靠性问题(开放端口、缺少加密、未设置限制) |
| cost-relative | 对资源类型/层级进行比较,而非计算绝对金额 |
| hardening | 应用安全最佳实践以缩小攻击面 |
| drift | IaC 声明的状态与实际基础设施之间的差异 |
| blast radius | 更改会影响到多少个依赖资源 |
分发
| $ARGUMENTS | 模式 |
|---|---|
terraform <requirements> | 生成 Terraform/OpenTofu 模块 |
kubernetes <requirements> / k8s <requirements> | 生成 K8s 清单和 Helm chart |
docker <requirements> | 优化 Dockerfile(多阶段构建、缓存、安全性) |
review <file-or-path> | 审核 IaC 的正确性和最佳实践 |
cost <config-or-path> | 进行相对成本估算(比较资源类型) |
security <config-or-path> | 扫描 IaC 配置错误 |
| 空 | 显示带示例的模式菜单 |
模式:Terraform
生成可用于生产环境的 Terraform/OpenTofu 模块。
Terraform 步骤
- 解析需求——识别资源、提供商、区域和依赖关系
- 对任何现有的
.tf文件运行uv run python scripts/terraform-module-scanner.py <path>,以了解当前状态 - 生成模块结构:
main.tf— 资源定义variables.tf— 输入变量,包含说明、类型、默认值和校验outputs.tf— 供下游使用的实用输出versions.tf— 所需提供商和版本约束
- 应用 references/terraform-patterns.md 中的模式
生成规则
- 始终使用
~>约束固定提供商版本 - 对命名资源使用
for_each,而非count - 为所有资源添加
Name、Environment、ManagedBy = "terraform"标签 - 对现有基础设施使用数据源,切勿硬编码 ARN/ID
- 使用工作区或后端配置为每个环境单独管理状态
- 参考 references/cloud-equivalents.md,了解多云替代方案
模式:Kubernetes
生成 Kubernetes 清单或 Helm chart。
清单步骤
- 解析需求——识别工作负载类型、扩缩容、网络和存储
- 对现有清单运行
uv run python scripts/k8s-manifest-validator.py <path> - 按照最佳实践生成清单:
- 为每个容器设置资源限制和请求
- 配置健康检查(存活、就绪和启动探针)
- 设置安全上下文(非 root 用户、只读根文件系统、移除功能)
- 为高可用工作负载配置 Pod 中断预算
- 为 Pod 间通信配置 NetworkPolicy
Helm chart
- 对于 Helm chart:将环境专属值参数化,并使用
values.yaml默认值 - 应用 references/kubernetes-patterns.md 中的模式
模式:Docker
优化 Dockerfile,以缩小体积、加快构建速度并提升安全性。
- 对现有 Dockerfile 运行
uv run python scripts/dockerfile-analyzer.py <path> - 解析 JSON 输出,查找问题和优化机会
- 应用优化:
- 使用多阶段构建,将构建阶段与运行阶段分离
- 按变更频率排列层(先处理依赖项,再处理源代码)
- 使用指定版本标签的基础镜像(绝不使用
latest) - 运行时镜像使用 Distroless 或 Alpine
- 使用非 root 的 USER 指令
- 仅 COPY 指定文件,避免使用 COPY . .
- 合并 RUN 命令以减少层数
- 使用 .dockerignore
- 详细模式请参阅 references/dockerfile-guide.md
模式:审查
审计 IaC 文件的正确性、最佳实践和可靠性。
分析流程
- 识别文件类型(Terraform、K8s 清单、Dockerfile、Helm chart)
- 运行相应的分析脚本:
.tf文件:terraform-module-scanner.py- K8s YAML:
k8s-manifest-validator.py - Dockerfile:
dockerfile-analyzer.py
- 多轮分析(改编自审查流程):
- 第 1 轮 — 正确性:语法、有效引用、API 版本兼容性
- 第 2 轮 — 最佳实践:参考文件中的模式、反模式
- 第 3 轮 — 可靠性:故障模式、影响范围、恢复路径
发现报告
- 按严重程度分组呈现发现(严重 / 警告 / 信息)
- 对于每项发现:文件位置、问题描述、建议的修复方法
- 安全专项检查请参阅 references/security-hardening.md
模式:成本
对资源配置进行相对成本比较,不比较绝对价格。
- 识别配置中的资源
- 跨云映射请参阅 references/cloud-equivalents.md
- 从以下相对维度比较配置:
- 实例系列:计算优化型与内存优化型与通用型
- 存储层级:标准型与低频访问型与归档型
- 网络:跨区域与区域内与同一可用区
- 托管与自托管的权衡
- 以相对比较表呈现(例如,“成本约为……的 2 倍”“与……相当”)
- 层级映射请参阅 references/cost-comparison.md
仅提供相对比较。绝不列出具体金额——价格会不断变化,且因合同而异。
模式:安全
扫描 IaC 中的安全配置错误。
- 根据文件类型运行相应的分析脚本
- 对照 references/security-hardening.md 清单检查:
- 网络:开放的安全组、公共子网、缺少 NACL
- 加密:未加密的存储、缺少 TLS、明文机密
- 访问:权限过大的 IAM、缺少 MFA、通配符策略
- 容器:特权模式、root 用户、主机网络、latest 标签
- 机密:硬编码凭据、配置中的 API 密钥、缺少保险库集成
- 按严重程度对发现分类:
- 严重:无需身份验证即可利用、数据泄露
- 高:需要一定访问权限,但影响重大
- 中:违反纵深防御原则、存在潜在的权限提升路径
- 低:信息提示、加固建议
- 在适用时,提供 CIS / 云平台特定基准的参考
仪表板
每次审查、成本分析或安全扫描后,渲染 IaC 概览仪表板。
- 收集所有发现和资源清单
- 将其作为 JSON 注入
templates/dashboard.html:{ "view": "iac-overview", "resources": [...], "findings": [...], "dockerfile_layers": [...], "cost_comparison": [...] } - 将模板复制到临时文件,注入数据,然后在浏览器中打开
参考文件
一次只加载一个参考文件。不要预加载所有参考文件。
| 文件 | 内容 | 读取时机 |
|---|---|---|
references/terraform-patterns.md | 模块模式、状态管理、提供程序配置 | Terraform 模式 |
references/kubernetes-patterns.md | 资源模式、Helm 约定、扩缩容 | Kubernetes 模式 |
references/dockerfile-guide.md | 多阶段构建、层优化、distroless | Docker 模式 |
references/cloud-equivalents.md | AWS/GCP/Azure 资源映射 | 成本模式、多云生成 |
references/security-hardening.md | 按类别划分的 IaC 安全检查清单 | 安全模式、审查模式 |
references/cost-comparison.md | 相对成本等级和权衡 | 成本模式 |
| 脚本 | 运行时机 |
|---|---|
scripts/dockerfile-analyzer.py | Docker 模式、审查模式(Dockerfiles) |
scripts/terraform-module-scanner.py | Terraform 模式、审查模式(.tf 文件) |
scripts/k8s-manifest-validator.py | Kubernetes 模式、审查模式(K8s YAML) |
| 模板 | 渲染时机 |
|---|---|
templates/dashboard.html | 审查、成本或安全扫描后 |
关键规则
- 绝不提供绝对美元价格——仅使用相对比较(“约为 2 倍”“价格相当”)
- 始终固定版本——提供程序版本、基础镜像标签、图表版本。绝不使用
latest - 绝不生成包含硬编码密钥的 IaC——使用变量、保管库引用或密钥管理器
- K8s 清单始终包含资源限制——CPU、内存请求和限制
- 在审查/安全模式输出前,始终运行相应的分析脚本
- K8s 中绝不省略安全上下文——非 root、只读根文件系统、移除功能
- 为所有云资源添加标签——至少包括 Name、Environment、ManagedBy
- 在 Terraform 中,命名资源使用
for_each而不是count - 绝不生成权限过于宽泛的 IAM 策略——遵循最小权限原则
- K8s 清单始终包含健康检查——存活探针、就绪探针
- 按严重程度对审查结果分组——Critical 排在 Info 之前
- 一次只加载一个参考文件——不要将所有参考文件预加载到上下文中
- 拒绝 CI/CD 流水线请求——引导用户转向 devops-engineer 技能
- 拒绝应用程序代码请求——此技能仅用于 IaC
- 拒绝绝对成本估算请求——解释为何改为提供相对比较
评论
支持 Markdown