helm-chart-builder
Claude Code、Codex、Gemini CLI、Cursor、OpenClawのためのHelmチャート開発エージェントスキルおよびプラグインです。チャートのスキャフォルディング、values設計、テンプレートパターン、依存関係管理、セキュリティ強化、チャートテストに対応しています。ユーザーがHelmチャートの作成や改善、values.yamlファイルの設計、テンプレートヘルパーの実装、チャートセキュリティの監査(RBAC、ネットワークポリシー、Podセキュリティ)、サブチャートの管理、またはhelm lintやテストの実行を求めている場合に使用します。
description の原文を見る
Helm chart development agent skill and plugin for Claude Code, Codex, Gemini CLI, Cursor, OpenClaw — chart scaffolding, values design, template patterns, dependency management, security hardening, and chart testing. Use when: user wants to create or improve Helm charts, design values.yaml files, implement template helpers, audit chart security (RBAC, network policies, pod security), manage subcharts, or run helm lint/test.
SKILL.md 本文
Helm Chart Builder
本番環境対応のHelm chart。合理的なデフォルト。セキュアバイデザイン。不要な模倣は不要。
アドホックなKubernetesマニフェストをメンテナンス可能でテスト可能、再利用可能なchartに変える、意見を持ったHelmワークフロー。chart構造、values設計、templateパターン、依存関係管理、セキュリティ強化をカバーします。
Helm チュートリアルではなく、オペレーターが信頼でき、開発者が戦わなくて済むchartを構築する方法についての具体的な判断の集合です。
スラッシュコマンド
| コマンド | 機能 |
|---|---|
/helm:create | ベストプラクティスの構造を持つ本番環境対応のHelm chartをスキャフォルディング |
/helm:review | 既存のchartを分析 — 欠落ラベル、ハードコードされた値、templateのアンチパターンを検出 |
/helm:security | chart のセキュリティ問題を監査 — RBAC、ネットワークポリシー、ポッドセキュリティ、シークレット処理 |
このスキルが起動する場面
ユーザーからこれらのパターンを認識してください:
- 「このサービスのHelm chartを作成して」
- 「私のHelm chartをレビューして」
- 「このchartはセキュアですか?」
- 「values.yamlを設計して」
- 「subchart依存関係を追加して」
- 「helmテストをセットアップして」
- 「[ワークロードタイプ]のHelm ベストプラクティス」
- Helm chart、values.yaml、Chart.yaml、templates、helpers、_helpers.tpl、subcharts、helm lint、helm testに関わるリクエスト
ユーザーがHelm chartを持っているか、Kubernetesリソースをパッケージ化したい場合 → このスキルが適用されます。
ワークフロー
/helm:create — Chart スキャフォルディング
-
ワークロードタイプを識別
- Webサービス(Deployment + Service + Ingress)
- Worker(Deployment、Serviceなし)
- CronJob(CronJob + ServiceAccount)
- ステートフルサービス(StatefulSet + PVC + Headless Service)
- Library chart(templatesなし、ヘルパーのみ)
-
chart構造をスキャフォルディング
mychart/ ├── Chart.yaml # Chart メタデータと依存関係 ├── values.yaml # デフォルト設定 ├── values.schema.json # オプション:values検証用JSONスキーマ ├── .helmignore # パッケージから除外するファイル ├── templates/ │ ├── _helpers.tpl # 名前付きtemplateとヘルパー関数 │ ├── deployment.yaml # ワークロードリソース │ ├── service.yaml # Service公開 │ ├── ingress.yaml # Ingress(該当する場合) │ ├── serviceaccount.yaml # ServiceAccount │ ├── hpa.yaml # HorizontalPodAutoscaler │ ├── pdb.yaml # PodDisruptionBudget │ ├── networkpolicy.yaml # NetworkPolicy │ ├── configmap.yaml # ConfigMap(必要に応じて) │ ├── secret.yaml # Secret(必要に応じて) │ ├── NOTES.txt # インストール後の使用説明 │ └── tests/ │ └── test-connection.yaml └── charts/ # Subchart(依存関係) -
Chart.yaml ベストプラクティスを適用
METADATA ├── apiVersion: v2 (Helm 3 のみ — v1は不可) ├── name: ディレクトリ名と正確に一致 ├── version: semver (chartバージョン、appバージョンではない) ├── appVersion: アプリケーションバージョン文字列 ├── description: chartが展開するものの一行要約 └── type: application (共有ヘルパー用の library) DEPENDENCIES ├── 依存関係バージョンを ~X.Y.Z でピン止め(パッチレベルフロート) ├── condition フィールドを使用してsubchartをオプション化 ├── alias を使用して同じsubchartの複数インスタンス化 └── 変更後に helm dependency update を実行 -
ドキュメント付きvalues.yamlを生成
- すべての値には目的と型を説明するインラインコメントがあります
- 開発で機能する合理的なデフォルト値
- オーバーライドしやすい構造(可能な限りフラット、論理的な場合のみネストされたもの)
- ハードコードされたクラスター固有の値がない(imageレジストリ、ドメイン、ストレージクラス)
-
検証
python3 scripts/chart_analyzer.py mychart/ helm lint mychart/ helm template mychart/ --debug
/helm:review — Chart 分析
-
chart構造をチェック
チェック 重大度 修正方法 _helpers.tpl がない 高 共通ラベルとセレクタ用のヘルパーを作成 NOTES.txt がない 中 インストール後の指示を追加 .helmignore がない 低 .git、CI ファイル、テストを除外する Chart.yaml フィールドが欠落している 中 description、appVersion、maintainers を追加 templateにハードコード値がある 高 values.yaml にデフォルト値とともに抽出 -
templateの品質をチェック
チェック 重大度 修正方法 標準ラベルがない 高 _helpers.tpl で app.kubernetes.io/*ラベルを使用リソースリクエスト/リミットがない 極度 resources セクションにvalues.yaml でデフォルト値を追加 imageタグがハードコード 高 {{ .Values.image.repository }}:{{ .Values.image.tag }}を使用imagePullPolicy がない 中 デフォルトで IfNotPresentに、オーバーライド可能liveness/readiness probeがない 高 パスとポートを設定可能なprobeを追加 ポッドアンチアフィニティがない 中 HA 向けに推奨アンチアフィニティを追加 templateコードが重複している 中 _helpers.tpl の名前付きtemplateに抽出 -
values.yaml の品質をチェック
python3 scripts/values_validator.py mychart/values.yaml -
レビューレポートを生成
HELM CHART REVIEW — [chart名] Date: [タイムスタンプ] CRITICAL: [数] HIGH: [数] MEDIUM: [数] LOW: [数] [詳細な発見事項と修正推奨事項]
/helm:security — セキュリティ監査
-
ポッドセキュリティ監査
チェック 重大度 修正方法 securityContext がない 極度 runAsNonRoot、readOnlyRootFilesystem を追加 root として実行中 極度 runAsNonRoot: true、runAsUser: 1000を設定書き込み可能なrootファイルシステム 高 readOnlyRootFilesystem: true+ tmp用emptyDir を設定すべての capability が保持されている 高 ALL をドロップ、必要な特定の cap のみ追加 特権コンテナ 極度 privileged: falseを設定、特定の capability を使用seccomp profile がない 中 seccompProfile.type: RuntimeDefaultを設定allowPrivilegeEscalation が true 高 allowPrivilegeEscalation: falseを設定 -
RBAC 監査
チェック 重大度 修正方法 ServiceAccount がない 中 専用 SA を作成、default を使用しない automountServiceAccountToken が true 中 pod が K8s API アクセスを必要としない限り false に設定 ClusterRole ではなく Role を使用 中 クラスタワイドが必要でない限り namespace スコープ Role を使用 ワイルドカード権限 極度 リソース名と verb を指定 RBAC がない 低 pod が K8s API アクセスを必要としない場合は許容可能 -
ネットワークとシークレット監査
チェック 重大度 修正方法 NetworkPolicy がない 中 default-deny ingress + 明示的な allow ルールを追加 values.yaml にシークレット 極度 external secrets operator または sealed-secrets を使用 PodDisruptionBudget がない 中 HA ワークロード向けに minAvailable で PDB を追加 hostNetwork: true 高 絶対に必要でない限り削除(例:CNI プラグイン) hostPID または hostIPC 極度 アプリケーション chart では決して使用しない -
セキュリティレポートを生成
SECURITY AUDIT — [chart名] Date: [タイムスタンプ] CRITICAL: [数] HIGH: [数] MEDIUM: [数] LOW: [数] [詳細な発見事項と修復ステップ]
ツール
scripts/chart_analyzer.py
Helm chart ディレクトリの静的分析用 CLI ユーティリティ。
機能:
- chart構造検証(必須ファイル、ディレクトリレイアウト)
- Template アンチパターン検出(ハードコード値、欠落ラベル、リソースリミットなし)
- Chart.yaml メタデータチェック
- 標準ラベル検証(app.kubernetes.io/*)
- セキュリティベースラインチェック
- JSON およびテキスト出力
使用方法:
# chart ディレクトリを分析
python3 scripts/chart_analyzer.py mychart/
# JSON 出力
python3 scripts/chart_analyzer.py mychart/ --output json
# セキュリティ重視の分析
python3 scripts/chart_analyzer.py mychart/ --security
scripts/values_validator.py
values.yaml をベストプラクティスに対して検証する CLI ユーティリティ。
機能:
- ドキュメント化カバレッジ(インラインコメント)
- 型の一貫性チェック
- ハードコードされたシークレット検出
- デフォルト値の品質分析
- 構造の深さ分析
- 命名規則検証
- JSON およびテキスト出力
使用方法:
# values.yaml を検証
python3 scripts/values_validator.py values.yaml
# JSON 出力
python3 scripts/values_validator.py values.yaml --output json
# 厳格モード(警告で失敗)
python3 scripts/values_validator.py values.yaml --strict
Template パターン
パターン 1:標準ラベル(_helpers.tpl)
{{/*
すべてのリソース用の共通ラベル。
*/}}
{{- define "mychart.labels" -}}
helm.sh/chart: {{ include "mychart.chart" . }}
app.kubernetes.io/name: {{ include "mychart.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
セレクタラベル(共通ラベルのサブセット — 不変である必要があります)。
*/}}
{{- define "mychart.selectorLabels" -}}
app.kubernetes.io/name: {{ include "mychart.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
パターン 2:条件付きリソース
{{- if .Values.ingress.enabled -}}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ include "mychart.fullname" . }}
labels:
{{- include "mychart.labels" . | nindent 4 }}
{{- with .Values.ingress.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
{{- if .Values.ingress.tls }}
tls:
{{- range .Values.ingress.tls }}
- hosts:
{{- range .hosts }}
- {{ . | quote }}
{{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
rules:
{{- range .Values.ingress.hosts }}
- host: {{ .host | quote }}
http:
paths:
{{- range .paths }}
- path: {{ .path }}
pathType: {{ .pathType }}
backend:
service:
name: {{ include "mychart.fullname" $ }}
port:
number: {{ $.Values.service.port }}
{{- end }}
{{- end }}
{{- end }}
パターン 3:セキュリティ強化済みポッドspec
spec:
serviceAccountName: {{ include "mychart.serviceAccountName" . }}
automountServiceAccountToken: false
securityContext:
runAsNonRoot: true
runAsUser: 1000
fsGroup: 1000
seccompProfile:
type: RuntimeDefault
containers:
- name: {{ .Chart.Name }}
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities:
drop:
- ALL
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
resources:
{{- toYaml .Values.resources | nindent 8 }}
volumeMounts:
- name: tmp
mountPath: /tmp
volumes:
- name: tmp
emptyDir: {}
Values 設計原則
STRUCTURE
├── ネストより平坦(image.tag > container.spec.image.tag)
├── リソース単位でグループ化(service.*、ingress.*、resources.*)
├── オプションリソース向けに enabled: true/false を使用
├── すべてのキーをインライン YAML コメントでドキュメント化
└── 開発向けの合理的なデフォルト値を提供
NAMING
├── キーに camelCase を使用(replica_count ではなく replicaCount)
├── Boolean キー:verb ではなく形容詞を使用(enabled、required)
├── ネストされたキー:最大 3 レベルまで
└── アップストリーム規約に合致(image.repository、image.tag、image.pullPolicy)
ANTI-PATTERNS
├── ハードコードされたクラスター URL またはドメイン
├── デフォルト値としてのシークレット
├── null が正しい場所での空文字列
├── 深くネストされた構造(>3 レベル)
├── ドキュメント化されていない値
└── オーバーライドなしでは機能しない values.yaml
依存関係管理
SUBCHARTS
├── Chart.yaml の依存関係を使用(requirements.yaml ではない — Helm 3)
├── バージョンをピン止め:version: ~15.x.x(パッチフロート)
├── オプション化に condition: を使用:condition: postgresql.enabled
├── 同じ chart の複数インスタンスに alias: を使用
├── values.yaml の subchart 名キー下で subchart 値をオーバーライド
└── パッケージング前に helm dependency update を実行
LIBRARY CHARTS
├── Chart.yaml で type: library — templates ディレクトリなし
├── 名前付きtemplate のみをエクスポート — レンダリング済みリソースなし
├── 共有ラベル、アノテーション、securitycontext に使用
└── アプリケーション chart とは独立してバージョン管理
プロアクティブなトリガー
要求なしにこれらにフラグを立てます:
- _helpers.tpl がない → 作成します。すべての chart に標準ラベルと fullname ヘルパーが必要です。
- template にハードコードされたimage tag → values.yaml に抽出します。タグはオーバーライド可能である必要があります。
- リソースリクエスト/リミットがない → 追加します。リミットなしのポッドはノードを枯渇させることができます。
- root として実行中 → securityContext を追加します。本番環境 chart では例外はありません。
- NOTES.txt がない → 作成します。ユーザーはインストール後の指示が必要です。
- values.yaml デフォルトにシークレット → 削除します。プレースホルダーを使用し、シークレット提供方法を説明するコメントを追加します。
- liveness/readiness probe がない → 追加します。Kubernetes がポッドが正常かどうかを知る必要があります。
- app.kubernetes.io ラベルが欠落 → _helpers.tpl で追加します。適切なリソーストラッキングに必須です。
インストール
ワンライナー(任意のツール)
git clone https://github.com/alirezarezvani/claude-skills.git
cp -r claude-skills/engineering/helm-chart-builder ~/.claude/skills/
マルチツールインストール
./scripts/convert.sh --skill helm-chart-builder --tool codex|gemini|cursor|windsurf|openclaw
OpenClaw
clawhub install cs-helm-chart-builder
関連スキル
- senior-devops — より広い DevOps スコープ(CI/CD、IaC、モニタリング)。補完的 — chart 固有の作業に helm-chart-builder を使用、パイプラインとインフラストラクチャに senior-devops を使用。
- docker-development — コンテナビルド。補完的 — docker-development がイメージをビルド、helm-chart-builder がそれを Kubernetes に展開。
- ci-cd-pipeline-builder — パイプライン構築。補完的 — helm-chart-builder がデプロイメント成果物を定義、ci-cd-pipeline-builder がその配信を自動化。
- senior-security — アプリケーションセキュリティ。補完的 — helm-chart-builder は Kubernetes レベルのセキュリティ(RBAC、ポッドセキュリティ)をカバー、senior-security はアプリケーションレベルの脅威をカバー。
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- Boboegg
- リポジトリ
- Boboegg/ai-resources
- ライセンス
- MIT
- 最終更新
- 2026/4/3
Source: https://github.com/Boboegg/ai-resources / ライセンス: MIT
関連スキル
superpowers-streamer-cli
SuperPowers デスクトップストリーマーの npm パッケージをインストール、ログイン、実行、トラブルシューティングできます。ユーザーが npm から `superpowers-ai` をセットアップしたい場合、メールまたは電話でサインインもしくはアカウント作成を行いたい場合、ストリーマーを起動したい場合、表示されたコントロールリンクを開きたい場合、後で停止したい場合、またはソースコードへのアクセスなしに npm やランタイムの一般的な問題から復旧したい場合に使用します。
catc-client-ops
Catalyst Centerのクライアント操作・監視機能 - 有線・無線クライアントのリスト表示・フィルタリング、MACアドレスによる詳細なクライアント検索、クライアント数分析、時間軸での分析、SSIDおよび周波数帯によるフィルタリング、無線トラブルシューティング機能を提供します。MACアドレスやIPアドレスでのクライアント検索、サイト別やSSID別のクライアント数集計、無線周波数帯の分布分析、Wi-Fi信号の問題調査が必要な場合に活用できます。
ci-cd-and-automation
CI/CDパイプラインの設定を自動化します。ビルドおよびデプロイメントパイプラインの構築または変更時に使用できます。品質ゲートの自動化、CI内のテストランナー設定、またはデプロイメント戦略の確立が必要な場合に活用します。
shipping-and-launch
本番環境へのリリース準備を行います。本番環境へのデプロイ準備が必要な場合、リリース前チェックリストが必要な場合、監視機能の設定を行う場合、段階的なロールアウトを計画する場合、またはロールバック戦略が必要な場合に使用します。
linear-release-setup
Linear Releaseに向けたCI/CD設定を生成します。リリース追跡の設定、LinearのCIパイプライン構築、またはLinearリリースとのデプロイメント連携を実施する際に利用できます。GitHub Actions、GitLab CI、CircleCIなど複数のプラットフォームに対応しています。
tracking-application-response-times
API エンドポイント、データベースクエリ、サービスコール全体にわたるアプリケーションのレスポンスタイムを追跡・最適化できます。パフォーマンス監視やボトルネック特定の際に活用してください。「レスポンスタイムを追跡する」「API パフォーマンスを監視する」「遅延を分析する」といった表現で呼び出せます。