Helm
Use this skill when the user is working on Helm charts, values.yaml, templates, helper functions, release configuration, or chart review for Kubernetes workloads.
Reuse examples/minimal-web-app/ when the user wants a clean starter chart with helpers, labels, probes, ingress, and explicit resource defaults.
Outcomes
- Scaffold clean Helm charts that are easy to override and review
- Fix broken templates, values wiring, and release behavior
- Review charts for Kubernetes safety, upgrade stability, and maintainability
- Explain how Helm values, helpers, and templates map to rendered manifests
Where This Fits In The Flow
- Use after
infra-kit.workflow / infra-kit.workflow.design when the deliverable is a chart or a chart refactor.
- Use during implementation to harden defaults and validate with
helm lint / helm template where possible.
Workflow
- Inspect the existing chart layout before changing files:
Chart.yaml
values.yaml
templates/
_helpers.tpl
charts/
crds/
- Identify whether the request is about:
- authoring a new chart
- fixing templates or values wiring
- hardening workload defaults
- debugging render or upgrade behavior
- Confirm the chart contract:
- chart name and purpose
- supported Kubernetes version
- required values
- optional overrides
- subchart or dependency behavior
- Keep templates DRY:
- centralize names and common labels in
_helpers.tpl
- avoid copy-pasting metadata blocks across resources
- Prefer predictable values design:
- use clear lower-camel-case or existing repo conventions
- keep nesting shallow unless grouping materially improves readability
- document values that users are expected to override often
- Apply Kubernetes-safe defaults for workload charts when the user has not defined them:
- standard labels
- resource requests and limits
- liveness, readiness, and startup probes when the workload supports them
- pod and container security context when compatible with the image
- If the chart renders CRDs or third-party APIs, look up the exact upstream documentation before changing templates.
- After editing, run the strongest local Helm and manifest validation available.
Hallucination Guardrails
- Open and quote the actual chart files (
Chart.yaml, values.yaml, templates/<file>) before describing changes so every recommendation is anchored to evidence instead of assumptions.
- When referencing Kubernetes resources or Helm helpers, double-check the API version and function signature from official docs to avoid inventing fields or behavior.
- If a value, helper, or manifest is missing, state that absence plainly and explain whether you are proposing to add it rather than speaking as if it already exists.
- When
helm lint, helm template, or cluster-side validation cannot run, document the limitation and keep findings scoped to static review rather than implying manifests were validated.
Output Standards
- Lead with the current chart status (what changed or what was reviewed) before diving into file-by-file commentary so users get the headline immediately.
- Cite the Helm or Kubernetes best practice that backs each recommendation—examples include stable selectors, standard labels, resource sizing, probe coverage, or security-context requirements.
- Always list the validation commands executed (or why they were skipped) so maintainers understand test coverage before trusting the result.
- When residual risks remain (upgrade drift, CRDs, missing sizing), state them explicitly along with the follow-up action required.
Authoring Rules
- Keep
Chart.yaml metadata deliberate:
apiVersion: v2 unless the repo has a specific reason not to
- SemVer
version
- accurate
appVersion when relevant
- Prefer named templates for:
- fullname generation
- chart labels
- selector labels
- service account names
- Keep selectors stable. Do not mutate
matchLabels patterns casually in an existing chart.
- Standardize labels across rendered resources. Include Helm/Kubernetes common labels when they fit:
app.kubernetes.io/name
app.kubernetes.io/instance
app.kubernetes.io/component
app.kubernetes.io/part-of
app.kubernetes.io/managed-by
helm.sh/chart
- Avoid hiding critical behavior behind clever template logic. Readability beats template tricks.
- Prefer explicit values over deeply magical defaults.
- For workloads, expose image repository, tag, and pull policy explicitly.
- For workloads, do not leave resource sizing undefined by default unless the chart is intentionally tiny, local-only, or the user asked for a minimal scaffold.
- If limits are set, set requests deliberately too instead of relying on cluster-side defaulting.
- Prefer configurable pod annotations, node selectors, tolerations, affinity, and extra labels when the chart is intended for reusable platform use.
- Avoid embedding secrets directly in
values.yaml; prefer existing secret references or clearly marked placeholders.
- Use
with, range, include, and nindent only when they improve template clarity.
Review Priorities
When reviewing or debugging Helm, check in this order:
- Broken template syntax, indentation, or bad function usage
- Incorrect values paths or missing required values
- Selector and label mismatches that can break upgrades or Services
- Unsafe workload defaults:
- no resources
- no probes
- weak security context
- privileged or root execution without need
- Dependency and subchart issues:
- wrong values inheritance
- version drift
- brittle condition or tags behavior
- Upgrade and operability risks:
- immutable field changes
- hook misuse
- CRD handling mistakes
- unreadable helper sprawl
Validation Loop
Use what exists in the target repo. Prefer this order when available:
helm lint <chart>
helm template <release-name> <chart> --values <values-file>
helm upgrade --install <release-name> <chart> --namespace <ns> --dry-run --debug
If the repo uses additional tooling, include it:
kubeconform -strict
kubectl apply --dry-run=server -f <rendered-manifests>
helm dependency update <chart>
helm unittest <chart>
If cluster access, dependencies, schemas, or plugins are unavailable, say exactly what was skipped and continue with the strongest offline review possible.
Bundled helper:
bash scripts/validate_helm.sh <chart> [values-file]
Delivery Standard
Always leave the user with:
- the chart files changed or recommended
- the values and template assumptions you made
- the validation commands run
- unresolved risks around upgrades, CRDs, workload security, or resource sizing
1---2name: infra-kit-domain-helm3description: Create, review, validate, refactor, or troubleshoot Helm charts, values.yaml files, templates, helpers, releases, and Kubernetes deployment defaults.4---56# Helm78Use this skill when the user is working on Helm charts, `values.yaml`, templates, helper functions, release configuration, or chart review for Kubernetes workloads.910Reuse `examples/minimal-web-app/` when the user wants a clean starter chart with helpers, labels, probes, ingress, and explicit resource defaults.1112## Outcomes1314- Scaffold clean Helm charts that are easy to override and review15- Fix broken templates, values wiring, and release behavior16- Review charts for Kubernetes safety, upgrade stability, and maintainability17- Explain how Helm values, helpers, and templates map to rendered manifests1819## Where This Fits In The Flow2021- Use after `infra-kit.workflow` / `infra-kit.workflow.design` when the deliverable is a chart or a chart refactor.22- Use during implementation to harden defaults and validate with `helm lint` / `helm template` where possible.2324## Workflow25261. Inspect the existing chart layout before changing files:27 - `Chart.yaml`28 - `values.yaml`29 - `templates/`30 - `_helpers.tpl`31 - `charts/`32 - `crds/`332. Identify whether the request is about:34 - authoring a new chart35 - fixing templates or values wiring36 - hardening workload defaults37 - debugging render or upgrade behavior383. Confirm the chart contract:39 - chart name and purpose40 - supported Kubernetes version41 - required values42 - optional overrides43 - subchart or dependency behavior444. Keep templates DRY:45 - centralize names and common labels in `_helpers.tpl`46 - avoid copy-pasting metadata blocks across resources475. Prefer predictable values design:48 - use clear lower-camel-case or existing repo conventions49 - keep nesting shallow unless grouping materially improves readability50 - document values that users are expected to override often516. Apply Kubernetes-safe defaults for workload charts when the user has not defined them:52 - standard labels53 - resource requests and limits54 - liveness, readiness, and startup probes when the workload supports them55 - pod and container security context when compatible with the image567. If the chart renders CRDs or third-party APIs, look up the exact upstream documentation before changing templates.578. After editing, run the strongest local Helm and manifest validation available.5859## Hallucination Guardrails6061- Open and quote the actual chart files (`Chart.yaml`, `values.yaml`, `templates/<file>`) before describing changes so every recommendation is anchored to evidence instead of assumptions.62- When referencing Kubernetes resources or Helm helpers, double-check the API version and function signature from official docs to avoid inventing fields or behavior.63- If a value, helper, or manifest is missing, state that absence plainly and explain whether you are proposing to add it rather than speaking as if it already exists.64- When `helm lint`, `helm template`, or cluster-side validation cannot run, document the limitation and keep findings scoped to static review rather than implying manifests were validated.6566## Output Standards6768- Lead with the current chart status (what changed or what was reviewed) before diving into file-by-file commentary so users get the headline immediately.69- Cite the Helm or Kubernetes best practice that backs each recommendation—examples include stable selectors, standard labels, resource sizing, probe coverage, or security-context requirements.70- Always list the validation commands executed (or why they were skipped) so maintainers understand test coverage before trusting the result.71- When residual risks remain (upgrade drift, CRDs, missing sizing), state them explicitly along with the follow-up action required.7273## Authoring Rules7475- Keep `Chart.yaml` metadata deliberate:76 - `apiVersion: v2` unless the repo has a specific reason not to77 - SemVer `version`78 - accurate `appVersion` when relevant79- Prefer named templates for:80 - fullname generation81 - chart labels82 - selector labels83 - service account names84- Keep selectors stable. Do not mutate `matchLabels` patterns casually in an existing chart.85- Standardize labels across rendered resources. Include Helm/Kubernetes common labels when they fit:86 - `app.kubernetes.io/name`87 - `app.kubernetes.io/instance`88 - `app.kubernetes.io/component`89 - `app.kubernetes.io/part-of`90 - `app.kubernetes.io/managed-by`91 - `helm.sh/chart`92- Avoid hiding critical behavior behind clever template logic. Readability beats template tricks.93- Prefer explicit values over deeply magical defaults.94- For workloads, expose image repository, tag, and pull policy explicitly.95- For workloads, do not leave resource sizing undefined by default unless the chart is intentionally tiny, local-only, or the user asked for a minimal scaffold.96- If limits are set, set requests deliberately too instead of relying on cluster-side defaulting.97- Prefer configurable pod annotations, node selectors, tolerations, affinity, and extra labels when the chart is intended for reusable platform use.98- Avoid embedding secrets directly in `values.yaml`; prefer existing secret references or clearly marked placeholders.99- Use `with`, `range`, `include`, and `nindent` only when they improve template clarity.100101## Review Priorities102103When reviewing or debugging Helm, check in this order:1041051. Broken template syntax, indentation, or bad function usage1062. Incorrect values paths or missing required values1073. Selector and label mismatches that can break upgrades or Services1084. Unsafe workload defaults:109 - no resources110 - no probes111 - weak security context112 - privileged or root execution without need1135. Dependency and subchart issues:114 - wrong values inheritance115 - version drift116 - brittle condition or tags behavior1176. Upgrade and operability risks:118 - immutable field changes119 - hook misuse120 - CRD handling mistakes121 - unreadable helper sprawl122123## Validation Loop124125Use what exists in the target repo. Prefer this order when available:126127```bash128helm lint <chart>129helm template <release-name> <chart> --values <values-file>130helm upgrade --install <release-name> <chart> --namespace <ns> --dry-run --debug131```132133If the repo uses additional tooling, include it:134135```bash136kubeconform -strict137kubectl apply --dry-run=server -f <rendered-manifests>138helm dependency update <chart>139helm unittest <chart>140```141142If cluster access, dependencies, schemas, or plugins are unavailable, say exactly what was skipped and continue with the strongest offline review possible.143144Bundled helper:145146```bash147bash scripts/validate_helm.sh <chart> [values-file]148```149150## Delivery Standard151152Always leave the user with:153154- the chart files changed or recommended155- the values and template assumptions you made156- the validation commands run157- unresolved risks around upgrades, CRDs, workload security, or resource sizing