mcpField
I
infrastructure-coder

infrastructure-coder

github.com/wyattowalshクラウド・DevOps549 回インストール8 週間前に更新
リポジトリ

infrastructure-coder について

Terraform/OpenTofu、Kubernetes、Dockerfileを対象に、インフラコードの生成とレビューを行うスキルです。相対コストの比較やセキュリティ検査にも対応し、CI/CD、アプリケーションコード、実額の算出は対象外です。

主な機能

  1. 01Terraform/OpenTofuモジュールの生成
  2. 02KubernetesマニフェストとHelmチャートの作成
  3. 03Dockerfileの最適化
  4. 04IaCの正確性と信頼性のレビュー
  5. 05セキュリティ設定ミスの検査
  6. 06リソースの相対コスト比較

活用シーン

  1. 01クラウドインフラモジュールの構築
  2. 02Kubernetesデプロイ設定の作成
  3. 03コンテナイメージのビルド最適化
  4. 04既存IaCのリスク確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/wyattowalsh/agents --skill infrastructure-coder

インストール後、Claude Code で/infrastructure-coderを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

data/
cloud-equivalents.json
dockerfile-rules.json
k8s-best-practices.json
evals/
docker-optimize.json
evals.json
explicit-terraform.json
implicit-trigger.json
kubernetes-manifest.json
negative-control.json
security-scan.json
references/
cloud-equivalents.md
cost-comparison.md
dockerfile-guide.md
kubernetes-patterns.md
security-hardening.md
terraform-patterns.md
scripts/
check.py
dockerfile-analyzer.py
k8s-manifest-validator.py
terraform-module-scanner.py
scripts/asset_toolkit/
__init__.py
_shared.py
common.py
package.py
validate_evals.py
validate_hooks.py
validate_skill.py
templates/
dashboard.html

詳細

インフラストラクチャコーダー

Infrastructure-as-Code を生成、レビュー、分析します。Terraform/OpenTofu モジュール、Kubernetes マニフェスト、Dockerfile に対応します。

対象範囲: IaC の生成と分析のみです。CI/CD パイプライン(devops-engineer)、アプリケーションコード、クラウドコンソールの操作、実際のコスト計算には対応しません。

標準用語

用語定義
module変数、リソース、出力を含む、自己完結型の Terraform/OpenTofu ユニット
manifestKubernetes の YAML リソース定義
chartテンプレート化された K8s マニフェストを含む Helm パッケージ
stageマルチステージ Dockerfile の Docker ビルドステージ
resourceクラウドインフラストラクチャの基本要素(インスタンス、バケット、ネットワークなど)
misconfigurationIaC におけるセキュリティまたは信頼性の問題(ポートの開放、暗号化の欠如、制限の未設定など)
cost-relativeリソースの種類やティア間の比較であり、絶対的な金額の価格ではありません
hardening攻撃対象領域を縮小するためにセキュリティのベストプラクティスを適用すること
drift宣言された IaC の状態と実際のインフラストラクチャとの差異
blast radius変更によって影響を受ける依存リソースの数

ディスパッチ

$ARGUMENTSモード
terraform <requirements>Terraform/OpenTofu モジュールを生成
kubernetes <requirements> / k8s <requirements>K8s マニフェストと Helm チャートを生成
docker <requirements>Dockerfile を最適化(マルチステージ、キャッシュ、セキュリティ)
review <file-or-path>IaC の正確性とベストプラクティスを監査
cost <config-or-path>コストの相対的な見積もり(リソースの種類を比較)
security <config-or-path>IaC の設定ミスをセキュリティスキャン
Empty例を含むモードメニューを表示

モード:Terraform

本番環境に対応した Terraform/OpenTofu モジュールを生成します。

Terraform の手順
  1. 要件を解析し、リソース、プロバイダー、リージョン、依存関係を特定します
  2. 既存の .tf ファイルがある場合は、uv run python scripts/terraform-module-scanner.py <path> を実行して現在の状態を把握します
  3. モジュール構成を生成します:
    • main.tf — リソース定義
    • variables.tf — 説明、型、デフォルト値、検証を含む入力変数
    • outputs.tf — 後続処理で利用する有用な出力
    • versions.tf — 必須プロバイダーとバージョン制約
  4. references/terraform-patterns.md のパターンを適用します
生成ルール
  • プロバイダーのバージョンは必ず ~> 制約で固定します
  • 名前付きリソースには count より for_each を使用します
  • すべてのリソースに Name、Environment、ManagedBy = "terraform" タグを付けます
  • 既存のインフラストラクチャにはデータソースを使用し、ARN/ID をハードコードしないでください
  • ワークスペースまたはバックエンド設定を使用して、環境ごとに状態を分離します
  • マルチクラウドの代替手段については references/cloud-equivalents.md を参照します

モード:Kubernetes

Kubernetes マニフェストまたは Helm チャートを生成します。

マニフェストの手順
  1. 要件を解析し、ワークロードの種類、スケーリング、ネットワーク、ストレージを特定します
  2. 既存のマニフェストに対して uv run python scripts/k8s-manifest-validator.py <path> を実行します
  3. ベストプラクティスに従ってマニフェストを生成します:
    • すべてのコンテナにリソース制限とリクエストを設定
    • ヘルスチェック(liveness、readiness、startup probe)
    • セキュリティコンテキスト(root 以外のユーザー、読み取り専用のルートファイルシステム、ケイパビリティの削除)
    • 高可用性ワークロードに Pod Disruption Budget を設定
    • Pod 間通信に NetworkPolicy を設定
Helm チャート
  1. Helm チャートの場合:環境固有の値をパラメーター化し、values.yaml のデフォルト値を使用します
  2. references/kubernetes-patterns.md のパターンを適用します

モード:Docker

サイズ、ビルド速度、セキュリティを考慮して Dockerfile を最適化します。

  1. 既存の Dockerfile に対して uv run python scripts/dockerfile-analyzer.py <path> を実行します
  2. JSON 出力を解析し、問題点と最適化の機会を特定します
  3. 次の最適化を適用します:
    • ビルドとランタイムを分離するマルチステージビルド
    • 変更頻度に応じてレイヤーを配置します(ソースより依存関係を先に配置)
    • 特定のタグが付いたベースイメージを使用します(latest は使用しないでください)
    • ランタイムイメージには Distroless または Alpine を使用します
    • 非 root の USER ディレクティブ
    • 特定のファイルを COPY し、COPY . . は避けます
    • RUN コマンドをまとめてレイヤー数を減らします
    • .dockerignore を使用します
  4. 詳細なパターンについては references/dockerfile-guide.md を参照してください

モード:Review

IaC ファイルの正確性、ベストプラクティス、信頼性を監査します。

分析パイプライン
  1. ファイルの種類を特定します(Terraform、K8s マニフェスト、Dockerfile、Helm チャート)
  2. 適切な分析スクリプトを実行します:
    • .tf ファイル:terraform-module-scanner.py
    • K8s YAML:k8s-manifest-validator.py
    • Dockerfile:dockerfile-analyzer.py
  3. 複数パスで分析します(レビュー パイプラインを応用):
    • パス 1 — 正確性:構文、有効な参照、API バージョンとの互換性
    • パス 2 — ベストプラクティス:参照ファイルのパターン、アンチパターン
    • パス 3 — 信頼性:障害モード、影響範囲、復旧手段
検出結果レポート
  1. 検出結果を重大度別(Critical / Warning / Info)にまとめて提示します
  2. 各検出結果について、ファイルの場所、問題の説明、推奨される修正方法を示します
  3. セキュリティ固有のチェックについては references/security-hardening.md を参照してください

モード:Cost

リソース構成をコストの相対比較で評価します。絶対的な価格ではありません。

  1. 構成内のリソースを特定します
  2. クラウド間のマッピングについては references/cloud-equivalents.md を参照します
  3. 次の相対的な観点から構成を比較します:
    • インスタンスファミリー:コンピューティング最適化型とメモリ最適化型と汎用型
    • ストレージ階層:標準と低頻度アクセスとアーカイブ
    • ネットワーク:リージョン間とリージョン内と同一 AZ
    • マネージドとセルフホストのトレードオフ
  4. 相対比較表として提示します(例:「…の約 2 倍のコスト」、「…と同程度」)
  5. 階層のマッピングについては references/cost-comparison.md を参照します

相対比較のみを出力してください。価格は常に変動し、契約によっても異なるため、金額を記載しないでください。

モード:Security

IaC のセキュリティ設定ミスをスキャンします。

  1. ファイルの種類に応じた適切な分析スクリプトを実行します
  2. references/security-hardening.md のチェックリストに照らして確認します:
    • ネットワーク:開放されたセキュリティグループ、パブリックサブネット、NACL の不足
    • 暗号化:暗号化されていないストレージ、TLS の不足、平文のシークレット
    • アクセス:過度に許可的な IAM、MFA の不足、ワイルドカードポリシー
    • コンテナ:特権モード、root ユーザー、ホストネットワーク、latest タグ
    • シークレット:ハードコードされた認証情報、設定内の API キー、Vault 連携の不足
  3. 検出結果を重大度別に分類します:
    • Critical:認証なしで悪用可能、データ漏えい
    • High:一定のアクセスが必要だが、影響が大きい
    • Medium:多層防御への違反、潜在的な権限昇格経路
    • Low:参考情報、セキュリティ強化の推奨
  4. 該当する場合は、CIS またはクラウド固有のベンチマーク参照を添えて検出結果を提示します

ダッシュボード

レビュー、コスト分析、またはセキュリティスキャンの後に、IaC の概要ダッシュボードを表示します。

  1. すべての検出結果とリソース一覧を収集します
  2. データを JSON として templates/dashboard.html に挿入します:
    {
      "view": "iac-overview",
      "resources": [...],
      "findings": [...],
      "dockerfile_layers": [...],
      "cost_comparison": [...]
    }
    
  3. テンプレートを一時ファイルにコピーし、データを挿入して、ブラウザーで開きます

参考ファイル

一度に読み込む参考ファイルは1つだけにしてください。すべての参考ファイルを事前に読み込まないでください。

ファイル内容読み込むタイミング
references/terraform-patterns.mdモジュールパターン、状態管理、プロバイダー設定Terraform モード
references/kubernetes-patterns.mdリソースパターン、Helm の規約、スケーリングKubernetes モード
references/dockerfile-guide.mdマルチステージビルド、レイヤーの最適化、distrolessDocker モード
references/cloud-equivalents.mdAWS/GCP/Azure のリソース対応表コストモード、マルチクラウド生成
references/security-hardening.mdカテゴリー別 IaC セキュリティチェックリストセキュリティモード、レビュー モード
references/cost-comparison.md相対的なコスト帯とトレードオフコストモード
スクリプト実行するタイミング
scripts/dockerfile-analyzer.pyDocker モード、レビュー モード(Dockerfile)
scripts/terraform-module-scanner.pyTerraform モード、レビュー モード(.tf ファイル)
scripts/k8s-manifest-validator.pyKubernetes モード、レビュー モード(K8s YAML)
テンプレートレンダリングするタイミング
templates/dashboard.htmlレビュー、コスト、またはセキュリティスキャンの後

重要なルール

  1. 絶対的なドル建て価格は決して提示しないでください。相対比較のみを使用してください(「約2倍」「同程度」など)。
  2. 常にバージョンを固定してください。プロバイダーのバージョン、ベースイメージのタグ、チャートのバージョンが対象です。latest は決して使用しないでください。
  3. ハードコードされたシークレットを含む IaC は決して生成しないでください。変数、Vault の参照、またはシークレットマネージャーを使用してください。
  4. K8s マニフェストには常にリソース制限を含めてください。CPU とメモリのリクエストおよび制限を設定してください。
  5. レビュー/セキュリティモードの出力前に、必ず適切な分析スクリプトを実行してください。
  6. K8s でセキュリティコンテキストを省略しないでください。非 root、読み取り専用のルートファイルシステム、ケイパビリティの削除を設定してください。
  7. すべてのクラウドリソースにタグを付けてください。最低限、Name、Environment、ManagedBy を設定してください。
  8. Terraform の名前付きリソースでは、count ではなく for_each を使用してください。
  9. 過度に許容的な IAM ポリシーは決して生成しないでください。最小権限の原則に従ってください。
  10. K8s マニフェストには常にヘルスチェックを含めてください。liveness probe と readiness probe を設定してください。
  11. レビュー結果は重大度別に分類し、Critical から Info の順に提示してください。
  12. 一度に読み込む参考ファイルは1つだけにしてください。すべての参考ファイルをコンテキストに事前に読み込まないでください。
  13. CI/CD パイプラインのリクエストは断り、devops-engineer スキルへ案内してください。
  14. アプリケーションコードのリクエストは断ってください。このスキルの対象は IaC のみです。
  15. 絶対的なコスト見積もりのリクエストは断ってください。代わりに相対比較を提示する理由を説明してください。

コメント