borghei / helm-chart-builder
This skill should be used when the user asks to "analyze Helm charts", "validate Helm values", "review chart structure", "check Kubernetes Helm templates", or "audit chart dependencies and configuration".
Helm Chart Builder
Category: Engineering
Domain: Kubernetes & Helm
Overview
The Helm Chart Builder skill provides automated analysis of Helm charts including structure validation, values checking, template inspection, and dependency review. It helps teams maintain high-quality charts with correct configurations, proper security contexts, and complete documentation.
Clarify First
Before analyzing the chart, confirm these inputs. If any is unknown or vague, ASK — do not assume:
- [ ] Chart path — which chart directory to analyze (sets
--path/--chart) - [ ] Values files — which environment values files to validate (sets
--valuesand what gets checked against best practices) - [ ] Strictness — strict/lint mode and JSON for CI (sets
--strict --format jsonand whether findings gate the pipeline)
Stop rule: ask only the 2-3 that most change the output. If the user says "just draft it," proceed and list your assumptions at the top of the artifact.
Quick Start
# Analyze chart structure and quality
python scripts/chart_analyzer.py --path ./charts/my-app
# Validate values.yaml against chart requirements
python scripts/values_validator.py --chart ./charts/my-app --values values-prod.yaml
# JSON output for CI
python scripts/chart_analyzer.py --path ./charts/my-app --format json
# Validate multiple values files
python scripts/values_validator.py --chart ./charts/my-app --values values-dev.yaml values-prod.yamlTools Overview
chart_analyzer.py
Analyzes Helm chart structure, metadata, templates, and dependencies.
| Feature | Description |
|---|---|
| Structure validation | Checks required files exist (Chart.yaml, values.yaml, templates/) |
| Metadata check | Validates Chart.yaml fields, version format, appVersion |
| Template review | Inspects templates for common patterns and issues |
| Dependency analysis | Reviews subchart dependencies and version constraints |
| Documentation check | Verifies NOTES.txt and README presence |
values_validator.py
Validates values files against chart expectations and Kubernetes best practices.
| Feature | Description |
|---|---|
| Resource limits | Checks for CPU/memory requests and limits |
| Security context | Validates runAsNonRoot, readOnlyRootFilesystem |
| Replica count | Checks for production-appropriate replica counts |
| Image tags | Flags use of latest or missing image tags |
| Ingress config | Validates ingress annotations and TLS settings |
Workflows
Chart Review Workflow
- Analyze structure - Run chart_analyzer.py to check chart organization
- Validate defaults - Run values_validator.py against default values.yaml
- Check environments - Validate each environment's values file
- Review findings - Address critical issues first, then warnings
- Re-check - Confirm fixes pass validation
Pre-Release Workflow
- Bump version - Update Chart.yaml version and appVersion
- Lint chart - Run chart_analyzer.py in strict mode
- Validate all values - Check every environment's values file
- Check dependencies - Ensure subchart versions are pinned
- Package - Chart is ready for helm package
CI Integration
# Structure check
python scripts/chart_analyzer.py --path ./charts/my-app --format json --strict
# Values validation for all environments
for env in dev staging production; do
python scripts/values_validator.py \
--chart ./charts/my-app \
--values "values-${env}.yaml"
doneReference Documentation
- [Helm Best Practices](references/helm-best-practices.md) - Chart structure, templates, security, dependencies
Common Patterns Quick Reference
Required Chart Structure
my-chart/
Chart.yaml # Required: chart metadata
values.yaml # Required: default values
templates/ # Required: template directory
deployment.yaml
service.yaml
_helpers.tpl # Recommended: template helpers
NOTES.txt # Recommended: post-install notes
charts/ # Optional: subchart dependenciesValues Best Practices
| Setting | Requirement | Why |
|---|---|---|
| resources.limits | Required | Prevents resource exhaustion |
| resources.requests | Required | Enables proper scheduling |
| securityContext.runAsNonRoot | Required | Security baseline |
| image.tag | Required (not latest) | Reproducible deployments |
| replicaCount >= 2 | Recommended for prod | High availability |
| ingress.tls | Recommended | Encrypted traffic |
Chart.yaml Required Fields
| Field | Description |
|---|---|
| apiVersion | v2 for Helm 3 |
| name | Chart name (lowercase) |
| version | SemVer chart version |
| appVersion | Application version |
| description | Brief chart description |
Common Issues
| Issue | Severity | Fix |
|---|---|---|
| Missing Chart.yaml | Critical | Add required chart metadata |
| No resource limits | Warning | Set CPU/memory limits |
| Latest image tag | Warning | Pin specific version |
| No security context | Warning | Add runAsNonRoot: true |
| Missing NOTES.txt | Info | Add post-install notes |
| Unpinned dependencies | Warning | Pin subchart versions |