Complete helm toolkit with generation and validation capabilities
94
94%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Advisory
Suggest reviewing before use
Generate production-ready Helm charts with best practices built-in. Create complete charts or individual resources with standard helpers, proper templating, and automatic validation.
Official Documentation:
Use for creating/generating Helm charts and templates. For validation/linting of existing charts use devops-skills:helm-validator; for raw K8s YAML (no Helm) use k8s-generator.
REQUIRED: Use AskUserQuestion if any of these are missing or ambiguous:
| Missing Information | Question to Ask |
|---|---|
| Image repository/tag | "What container image should be used? (e.g., nginx:1.25)" |
| Service port | "What port does the application listen on?" |
| Resource limits | "What CPU/memory limits should be set? (e.g., 500m CPU, 512Mi memory)" |
| Probe endpoints | "What health check endpoints does the app expose? (e.g., /health, /ready)" |
| Scaling requirements | "Should autoscaling be enabled? If yes, min/max replicas and target CPU%?" |
| Workload type | "What workload type: Deployment, StatefulSet, or DaemonSet?" |
| Storage requirements | "Does the application need persistent storage? Size and access mode?" |
Do NOT assume values for critical settings. Ask first, then proceed.
If custom resources are needed:
Try context7 MCP first:
mcp__context7__resolve-library-id with operator name
mcp__context7__get-library-docs with topic for CRD kindFallback to WebSearch:
"<operator>" "<CRD-kind>" "<version>" kubernetes documentation specSee references/crd_patterns.md for common CRD examples.
Use the scaffolding script:
bash scripts/generate_chart_structure.sh <chart-name> <output-directory> [options]Script options:
--image <repo> - Image repository (default: nginx). Note: Pass only the repository name without tag (e.g., redis not redis:7-alpine)--port <number> - Service port (default: 80)--type <type> - Workload type: deployment, statefulset, daemonset (default: deployment)--with-templates - Generate resource templates (deployment.yaml, service.yaml, etc.)--with-ingress - Include ingress template--with-hpa - Include HPA template--force - Overwrite existing chart without promptingImportant customization notes:
http as the default port name in templates. Customize port names for non-HTTP services (e.g., redis, mysql, grpc).Values.configMap.enabled and .Values.secret.enabled)Use the helpers script or assets/_helpers-template.tpl:
bash scripts/generate_standard_helpers.sh <chart-name> <chart-directory>⚠️ CRITICAL REQUIREMENT: Read Reference Files NOW
You MUST use the
Readtool to load these reference files at this stage, even if you read them earlier in the conversation:1. Read references/resource_templates.md - for the specific resource type patterns 2. Read references/helm_template_functions.md - for template function usage 3. Read references/crd_patterns.md - if generating CRD resources (ServiceMonitor, Certificate, etc.)Why: Prior context may be incomplete or summarized. Reading reference files at generation time guarantees all patterns, functions, and examples are available for accurate template creation.
Do NOT skip this step. Template quality depends on having current reference patterns loaded.
Reference templates for all resource types in references/resource_templates.md:
Key patterns (MUST include in all templates):
# Use helpers for names and labels
metadata:
name: {{ include "mychart.fullname" . }}
labels: {{- include "mychart.labels" . | nindent 4 }}
# Conditional sections with 'with'
{{- with .Values.nodeSelector }}
nodeSelector: {{- toYaml . | nindent 2 }}
{{- end }}
# Checksum annotation (REQUIRED for Deployments/StatefulSets/DaemonSets to trigger restarts on config changes)
annotations:
checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}Structure guidelines:
# -- commentsSee assets/values-schema-template.json for JSON Schema validation.
Run validation using devops-skills:helm-validator skill (helm lint, template render, schema checks, dry-run).
See references/helm_template_functions.md for complete guide.
| Function | Purpose | Example |
|---|---|---|
required | Enforce required values | {{ required "msg" .Values.x }} |
default | Fallback value | {{ .Values.x | default 1 }} |
quote | Quote strings | {{ .Values.x | quote }} |
include | Use helpers | {{ include "name" . | nindent 4 }} |
toYaml | Convert to YAML | {{ toYaml .Values.x | nindent 2 }} |
tpl | Render as template | {{ tpl .Values.config . }} |
nindent | Newline + indent | {{- include "x" . | nindent 4 }} |
See references/crd_patterns.md for complete examples. Ship CRDs in crds/ directory (not templated); template CR instances in templates/.
toYaml for complex objects_helpers.tpl with standard helpers| Issue | Solution |
|---|---|
| Template syntax errors | Check {{- / -}} matching, use helm template --debug |
| Undefined values | Use default or required functions |
| Indentation issues | Use nindent consistently |
| CRD validation fails | Verify apiVersion, check docs for required fields |
After generating charts, invoke devops-skills:helm-validator to ensure quality.
values.yaml:latest or a hard-coded version in the chart prevents version overrides at deploy time.image: repository: myapp tag: latestimage: repository: myapp tag: "" with appVersion as the default, overridden via --set image.tag=v1.2.3.resources: limits and requests on containersresources: block in the container spec template.requests and limits for CPU and memory, with documented tuning guidance in values.yaml.helm upgrade --install without --atomic in CI/CD--atomic, a failed upgrade leaves the release in a broken state that blocks future upgrades and requires manual helm rollback.helm upgrade --install myapp ./charthelm upgrade --install --atomic --timeout 5m myapp ./chartvalues.yamlvalues.yaml.values.yaml for defaults, values-prod.yaml for overrides, -f values-prod.yaml at deploy time.helm template + kubeval/kubeconform validationhelm lint before deploying.helm template . | kubeval --strict --ignore-missing-schemas to validate rendered manifests against the Kubernetes API schema.| Script | Usage |
|---|---|
scripts/generate_chart_structure.sh | bash <script> <chart-name> <output-dir> |
scripts/generate_standard_helpers.sh | bash <script> <chart-name> <chart-dir> |
| File | Content |
|---|---|
references/helm_template_functions.md | Complete template function guide |
references/resource_templates.md | All K8s resource templates |
references/crd_patterns.md | CRD patterns (cert-manager, Prometheus, Istio, ArgoCD) |
| File | Purpose |
|---|---|
assets/_helpers-template.tpl | Standard helpers template |
assets/values-schema-template.json | JSON Schema for values validation |