Install any skill in seconds. Free to start, no credit card required.
Get Started Free →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".
.claude/skills/borghei-helm-chart-builder/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 50% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 34% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 222% | 0% |
| case-09 | ✗→✓ | ▲ Improved | -15% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 103% | 0% |
> Category: Engineering > Domain: Kubernetes & Helm
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.
Before analyzing the chart, confirm these inputs. If any is unknown or vague, ASK — do not assume:
--path/--chart)--values and what gets checked against best practices)--strict --format json and 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.
bash# 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.yaml
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 |
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 |
bash# 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" done
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 dependencies| 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 |
| Field | Description | |-------|-------------| | apiVersion | v2 for Helm 3 | | name | Chart name (lowercase) | | version | SemVer chart version | | appVersion | Application version | | description | Brief chart description |
| 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 |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-22 | pass→pass | 9,072 | 5,303 | -42% | 1 | 1 | 0% | 1,456 | 2,094 | +44% | 0 | 0 | — |
case-01 | fail→pass | 16,569 | 10,387 | -37% | 1 | 1 | 0% | 1,967 | 2,953 | +50% | 0 | 0 | — |
case-02 | fail→pass | 14,577 | 12,956 | -11% | 1 | 1 | 0% | 2,815 | 3,780 | +34% | 0 | 0 | — |
case-03 | fail→fail | 14,704 | 17,859 | +21% | 1 | 1 | 0% | 2,280 | 4,388 | +92% | 0 | 0 | — |
case-04 | pass→pass | 13,640 | 12,135 | -11% | 1 | 1 | 0% | 2,507 | 3,494 | +39% | 0 | 0 | — |
case-05 | pass→fail | 7,978 | 7,562 | -5% | 1 | 1 | 0% | 1,386 | 2,487 | +79% | 0 | 0 | — |
case-06 | pass→pass | 6,559 | 4,884 | -26% | 1 | 1 | 0% | 1,134 | 1,983 | +75% | 0 | 0 | — |
case-07 | fail→pass | 4,416 | 4,747 | +7% | 1 | 1 | 0% | 627 | 2,017 | +222% | 0 | 0 | — |
case-08 | pass→pass | 4,807 | 3,368 | -30% | 1 | 1 | 0% | 767 | 1,783 | +132% | 0 | 0 | — |
case-09 | fail→pass | 11,718 | 2,408 | -79% | 1 | 1 | 0% | 1,934 | 1,635 | -15% | 0 | 0 | — |
case-10 | pass→pass | 2,564 | 2,796 | +9% | 1 | 1 | 0% | 336 | 1,551 | +362% | 0 | 0 | — |
case-11 | pass→pass | 8,770 | 5,597 | -36% | 1 | 1 | 0% | 1,410 | 2,064 | +46% | 0 | 0 | — |
case-12 | pass→pass | 13,365 | 9,717 | -27% | 1 | 1 | 0% | 1,962 | 2,734 | +39% | 0 | 0 | — |
case-13 | pass→pass | 12,952 | 9,196 | -29% | 1 | 1 | 0% | 1,986 | 2,687 | +35% | 0 | 0 | — |
case-14 | pass→pass | 4,455 | 5,195 | +17% | 1 | 1 | 0% | 680 | 2,097 | +208% | 0 | 0 | — |
case-15 | pass→pass | 12,014 | 2,930 | -76% | 1 | 1 | 0% | 2,001 | 1,631 | -18% | 0 | 0 | — |
case-16 | pass→pass | 4,197 | 4,270 | +2% | 1 | 1 | 0% | 687 | 1,938 | +182% | 0 | 0 | — |
case-17 | pass→pass | 3,606 | 2,583 | -28% | 1 | 1 | 0% | 540 | 1,569 | +191% | 0 | 0 | — |
case-18 | fail→pass | 6,558 | 4,255 | -35% | 1 | 1 | 0% | 960 | 1,949 | +103% | 0 | 0 | — |
case-19 | pass→pass | 13,006 | 6,685 | -49% | 1 | 1 | 0% | 2,077 | 2,277 | +10% | 0 | 0 | — |
case-20 | fail→pass | 11,002 | 6,405 | -42% | 1 | 1 | 0% | 1,782 | 2,082 | +17% | 0 | 0 | — |
case-21 | pass→pass | 5,799 | 2,224 | -62% | 1 | 1 | 0% | 856 | 1,522 | +78% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +23 percentage points is the difference between those two pass rates over the 22 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.