helm-generator
Create, scaffold, or generate Helm charts, Chart.yaml, values.yaml, templates, helpers.
By akin-ozer · 518 installs
npx skills add akin-ozer/cc-devops-skills --skill helm-generator
Source repository · Upstream listing
Helm Chart Generator
Overview
Generate production ready Helm charts with deterministic scaffolding, standard helpers, reusable templates, and validation loops.
Official Documentation:
[Helm Docs](https://helm.sh/docs/) Main documentation
[Chart Best Practices](https://helm.sh/docs/chart best practices/) Official best practices guide
[Template Functions](https://helm.sh/docs/chart template guide/function list/) Built in functions
[Sprig Functions](http://masterminds.github.io/sprig/) Extended function library
When to Use This Skill
Use helm generator Use OTHER skill
Create new Helm charts helm validator : Validate/lint existing charts
Generate Helm templates k8s yaml generator : Raw K8s YAML (no Helm)
Convert K8s manifests to Helm k8s debug : Debug deployed resources
Implement CRDs in Helm k8s yaml validator : Validate K8s manifests
Trigger Phrases
Use this skill when prompts include phrases like:
"create Helm chart"
"scaffold Helm chart"
"generate Helm templates"
"convert manifests to Helm chart"
"build chart with Deployment/Service/Ingress"
Execution Flow
Follow these stages in order. Do not skip required stages.
Stage 1: Gather Requirements (Required)
Collect:
Scope: full chart, specific templates, or conversion from manifests
Workload: deployment , statefulset , or daemonset
Image reference: repository, optional tag, or digest
Ports: service port and container target port (separate values)
Runtime settings: resources, probes, autoscaling, ingress, storage
Security: service account, security contexts, optional RBAC/network policies
Use request user input when critical fields are missing.
If request user input is unavailable, ask in normal chat and continue with explicit assumptions.
Missing Information Question to Ask
Image repository/tag "What container image should be used? (e.g., nginx:1.25)"
Service port "What service port should be exposed?"
Container target port "What container port should traffic be forwarded to?"
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 silently assume critical settings.
Stage 2: Lookup CRD Documentation (Only if CRDs Are In Scope)
1. Try Context7 first:
mcp context7 resolve library id
mcp context7 query docs
2. Fallback chain if Context7 is unavailable or incomplete:
Operator official docs (preferred)
General web search
Also consult references/crd patterns.md for example patterns.
Stage 3: Scaffold Chart Structure (Required)
Run:
Options:
image <repo Supports repo only, tagged image, registry ports, and digest refs
port <number Service port (default: 80)
target port <number Container target port (default: 8080)
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 prompting
Image parsing behavior:
image nginx:1.27 repository nginx , tag 1.27
image registry.local:5000/team/app repository kept intact
image ghcr.io/org/app@sha256:... digest mode (no tag concatenation)
tag cannot be combined with digest image references
Idempotency and overwrite behavior:
generate chart structure.sh : prompts before overwrite; force overwrites non interactively.
generate standard helpers.sh : prompts before replacing templates/ helpers.tpl ; force bypasses prompt.
Expected scaffold shape:
Stage 4: Generate Standard Helpers
Run:
Required helpers: name , fullname , chart , labels , selectorLabels , serviceAccountName .
Fallback:
If script execution is blocked, copy assets/ helpers template.tpl and replace CHARTNAME with the chart name.
Stage 5: Consult References and Generate Templates (Required)
Consult relevant references once at this stage:
references/resource templates.md for the resource patterns being generated
references/helm template functions.md for templating function usage
references/crd patterns.md only when CRDs are in scope
Example file open commands:
Resource coverage from references/resource templates.md :
Workloads: Deployment, StatefulSet, DaemonSet, Job, CronJob
Services: Service, Ingress
Config: ConfigMap, Secret
RBAC: ServiceAccount, Role, RoleBinding, ClusterRole, ClusterRoleBinding
Network: NetworkPolicy
Autoscaling: HPA, PodDisruptionBudget
Required template patterns:
Checksum annotations are required for workloads, but must be conditional and only reference generated templates ( configmap.yaml , secret.yaml ).
Stage 6: Create values.yaml
Structure guidelines:
Group related settings logically
Document every value with comments
Provide sensible defaults
Include security contexts, resource limits, probes
Keep service.port and service.targetPort separate and explicit
Keep configMap.enabled / secret.enabled aligned with generated templates
See assets/values schema template.json for JSON Schema validation.
Stage 7: Validate
Preferred path: run the helm validator skill.
If skill invocation is unavailable, run local commands directly:
If helm is unavailable, report the block clearly and perform partial checks:
bash n scripts/generate chart structure.sh
bash n scripts/generate standard helpers.sh
Verify generated files and key fields manually
Re run validation after any fixes.
Template Functions Quick Reference
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 }}
Working with CRDs
See references/crd patterns.md for complete examples.
Key points:
CRDs you ship crds/ directory (not templated, not deleted on uninstall)
CR instances templates/ directory (fully templated)
Always look up documentation for CRD spec requirements
Document operator dependencies in Chart.yaml annotations
Converting Manifests to Helm
1. Parameterize: Names helpers, values values.yaml
2. Apply patterns: Labels, conditionals, toYaml for complex objects
3. Add helpers: Create helpers.tpl with standard helpers
4. Validate: Run helm validator (or local lint/template fallback), then test with different values
Error Handling
Issue Solution
Template syntax errors helm template test <chart dir debug show only templates/<file .yaml
Undefined values helm lint <chart dir strict and add default / required
Checksum include errors Ensure templates/configmap.yaml and templates/secret.yaml exist and configMap.enabled / secret.enabled are set correctly
Port mismatch (Service vs container) Set both service.port and service.targetPort , then re run helm template test <chart dir
CRD validation fails Verify apiVersion/spec fields with Context7 or operator docs, then re render
Script argument failures Run bash scripts/generate chart structure.sh help and pass required values for option flags
Example Flows
Full scaffold with templates, ingress, HPA, and explicit port mapping:
Digest based image scaffold:
Minimal scaffold without templates:
Scaffold Success Criteria
Mark complete only when all checks pass:
[ ] Chart.yaml , values.yaml , .helmignore , templates/NOTES.txt , and templates/ helpers.tpl exist
[ ] values.yaml contains explicit service.port and service.targetPort
[ ] If with templates was used, serviceaccount.yaml , service.yaml , configmap.yaml , secret.yaml , and one workload template exist
[ ] Generated workload template uses conditional checksum annotations for config/secret
[ ] Image rendering logic supports tag and digest modes
[ ] Validation completed ( helm validator skill or local fallback commands) and outcomes reported
Resources
Scripts
Script Usage
scripts/generate chart structure.sh bash scripts/generate chart structure.sh <chart name <output dir [options]
scripts/generate standard helpers.sh bash scripts/generate standard helpers.sh <chart name <chart dir [ force]
References
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)
Assets
File Purpose
assets/ helpers template.tpl Standard helpers template
assets/values schema template.json JSON Schema for values validation
Integration with helm validator
After generating charts, invoke helm validator and close the loop:
1. Generate chart/templates
2. Run helm validator (or local fallback commands)
3. Fix identified issues
4. Re validate until passing