skills/ci-cd/helm/generator/SKILL.md
Comprehensive toolkit for generating best practice Helm charts and resources following current standards and conventions. Use this skill when creating new Helm charts, implementing Helm templates, scaffolding Chart.yaml and values.yaml, defining deployment templates, service definitions, ingress configurations, .tpl helpers, or building Helm projects from scratch. Trigger phrases include "create", "generate", "build", "scaffold" alongside terms like "kubernetes helm", "k8s charts", "helm package", "chart dependencies", "values.yaml", or "helm install".
npx skillsauth add pantheon-org/tekhne helm-generatorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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 kind
Fallback to WebSearch:
"<operator>" "<CRD-kind>" "<version>" kubernetes documentation spec
See 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 |
tools
Generates Jenkinsfiles with stages, agents, parallel builds, post-build actions, and security scanning for Declarative and Scripted pipeline syntaxes. Use when creating a Jenkins pipeline script, Groovy pipeline, or build configuration; implementing CI/CD workflows, continuous integration, or build automation; adding Docker/Kubernetes deployments, matrix builds, parameterized pipelines, or DevSecOps security scanning to a Jenkins setup.
tools
Comprehensive toolkit for validating, linting, testing, and analyzing Helm charts and their rendered Kubernetes resources. Use this skill when working with Helm charts, validating templates, debugging chart issues, working with Custom Resource Definitions (CRDs) that require documentation lookup, or checking Helm best practices.
development
Validates .gitlab-ci.yml syntax, detects security misconfigurations in job definitions, checks for deprecated keywords, ensures proper stage ordering, and audits pipeline configurations for best practices. Use when working with .gitlab-ci.yml files, validating GitLab CI/CD pipeline syntax, debugging configuration errors, checking for hardcoded secrets or credentials in pipeline jobs, optimizing pipeline performance with DAG or cache, or performing security audits on GitLab CI/CD configurations.
development
Creates .gitlab-ci.yml files, configures pipeline stages, defines CI jobs and runners, sets up deployment workflows, and generates reusable GitLab CI/CD templates following current best practices and security standards. Use when users ask to create or build a GitLab CI/CD pipeline, CI config, build pipeline, deploy pipeline, GitLab YAML, CI jobs, or any .gitlab-ci.yml configuration from scratch or for a new project.