Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Build production-grade Helm charts with templating, values.yaml parameterization, dependencies, and hooks for multi-environment Kubernetes deployments.
.claude/skills/williamzujkowski-helm-chart-builder/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 11% | 0% |
| case-05 | ✓→✗ | ▼ Worse | 70% | 0% |
| case-07 | ✓→✗ | ▼ Worse | 57% | 0% |
| case-20 | ✓→✗ | ▼ Worse | 25% | 0% |
| case-21 | ✓→✓ | = Same ✓ | 173% | 0% |
Trigger conditions:
Not for:
Time normalization:
NOW_ET using NIST/time.gov semantics (America/New_York, ISO-8601): 2025-10-26T01:33:54-04:00NOW_ET for all citation access datesInput validation:
chart_name must be DNS-1123 compliant (lowercase, alphanumeric, hyphens)app_version must follow semantic versioning (e.g., 1.0.0)chart_version must follow semantic versioningresources array must contain valid K8s resource types (Deployment, Service, etc.)Source freshness:
Decision thresholds:
Step 1: Create chart directory structure
Step 2: Parameterize templates
Output:
Abort conditions:
All T1 steps plus:
Step 1: Multi-environment configuration
Step 2: Chart dependencies
Step 3: Helm hooks
Step 4: Advanced templating
Step 5: Validation and linting
Output:
Abort conditions:
All T1 + T2 steps plus:
Step 1: Chart testing
Step 2: Documentation
Step 3: Chart repository packaging
Output:
Chart structure patterns:
Dependency management:
condition or tags for optional dependenciesHook usage:
Values organization:
Ambiguity handling:
Required fields (all tiers):
yamlchart_structure: Chart.yaml: "chart metadata" values.yaml: "default configuration values" templates/: - deployment.yaml - service.yaml - _helpers.tpl NOTES.txt: "post-install instructions" validation_results: helm_lint: "output of helm lint" template_render: "output of helm template" errors: ["array of validation errors if any"]
Additional T2 fields:
yamlmulti_environment: values_dev.yaml: "development overrides" values_staging.yaml: "staging overrides" values_prod.yaml: "production overrides" dependencies: Chart.yaml_dependencies: ["array of chart dependencies"] Chart.lock: "locked dependency versions" hooks: pre_install: ["array of pre-install hook jobs"] post_install: ["array of post-install hook jobs"] pre_upgrade: ["array of pre-upgrade hook jobs"] helpers: _helpers.tpl: "named template definitions" values_schema: values.schema.json: "JSON schema for values validation"
Additional T3 fields:
yamltesting: tests/: ["array of test YAML files"] test_commands: ["helm test chart-name"] documentation: README.md: "comprehensive chart documentation" UPGRADING.md: "upgrade and migration guide" packaging: chart_package: "chart-name-version.tgz" chart_signature: "chart-name-version.tgz.prov" index.yaml: "chart repository index"
yaml# T1 Example: Chart.yaml apiVersion: v2 name: myapp description: A Helm chart for my application type: application version: 0.1.0 appVersion: "1.0.0" maintainers: - name: Developer email: dev@example.com
yaml# T1 Example: values.yaml replicaCount: 3 image: repository: myregistry/myapp pullPolicy: IfNotPresent tag: "1.0.0" service: type: ClusterIP port: 80 resources: limits: cpu: 500m memory: 512Mi requests: cpu: 250m memory: 256Mi autoscaling: enabled: false minReplicas: 2 maxReplicas: 10
yaml# T1 Example: templates/deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: {{ include "myapp.fullname" . }} labels: {{- include "myapp.labels" . | nindent 4 }} spec: replicas: {{ .Values.replicaCount }} selector: matchLabels: {{- include "myapp.selectorLabels" . | nindent 6 }} template: metadata: labels: {{- include "myapp.selectorLabels" . | nindent 8 }} spec: containers: - name: {{ .Chart.Name }} image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" ports: - containerPort: 8080 resources: {{- toYaml .Values.resources | nindent 12 }}
Token budgets (enforced):
Safety checks:
Auditability:
Determinism:
Validation requirements:
helm lint without errorshelm templatehelm test successfullyOfficial Documentation (accessed 2025-10-26T01:33:54-04:00):
Template Functions:
Validation and Testing:
Chart Repositories:
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 22,034 | 14,703 | -33% | 1 | 1 | 0% | 6,246 | 6,955 | +11% | 0 | 0 | — |
case-02 | fail→fail | 25,664 | 23,589 | -8% | 1 | 1 | 0% | 6,234 | 9,141 | +47% | 0 | 0 | — |
case-21 | pass→pass | 12,240 | 14,852 | +21% | 1 | 1 | 0% | 2,536 | 6,922 | +173% | 0 | 0 | — |
case-03 | fail→fail | 26,303 | 23,999 | -9% | 1 | 1 | 0% | 6,247 | 9,154 | +47% | 0 | 0 | — |
case-04 | pass→pass | 6,437 | 4,538 | -30% | 1 | 1 | 0% | 1,364 | 3,773 | +177% | 0 | 0 | — |
case-05 | pass→fail | 11,364 | 9,790 | -14% | 1 | 1 | 0% | 2,760 | 4,681 | +70% | 0 | 0 | — |
case-06 | pass→pass | 12,983 | 6,939 | -47% | 1 | 1 | 0% | 2,785 | 4,442 | +59% | 0 | 0 | — |
case-07 | pass→fail | 20,995 | 19,404 | -8% | 1 | 1 | 0% | 4,525 | 7,094 | +57% | 0 | 0 | — |
case-08 | pass→pass | 16,019 | 13,150 | -18% | 1 | 1 | 0% | 3,916 | 6,145 | +57% | 0 | 0 | — |
case-09 | pass→pass | 12,062 | 15,507 | +29% | 1 | 1 | 0% | 2,787 | 6,778 | +143% | 0 | 0 | — |
case-10 | pass→pass | 10,585 | 13,737 | +30% | 1 | 1 | 0% | 2,736 | 6,655 | +143% | 0 | 0 | — |
case-11 | pass→pass | 9,124 | 10,053 | +10% | 1 | 1 | 0% | 1,920 | 5,230 | +172% | 0 | 0 | — |
case-12 | pass→pass | 7,474 | 11,870 | +59% | 1 | 1 | 0% | 1,609 | 5,976 | +271% | 0 | 0 | — |
case-13 | pass→pass | 9,983 | 9,540 | -4% | 1 | 1 | 0% | 2,456 | 5,228 | +113% | 0 | 0 | — |
case-14 | fail→fail | 13,020 | 13,387 | +3% | 1 | 1 | 0% | 2,798 | 6,003 | +115% | 0 | 0 | — |
case-15 | pass→pass | 23,439 | 20,060 | -14% | 1 | 1 | 0% | 6,183 | 7,746 | +25% | 0 | 0 | — |
case-16 | pass→pass | 7,661 | 10,941 | +43% | 1 | 1 | 0% | 1,504 | 5,639 | +275% | 0 | 0 | — |
case-17 | pass→pass | 10,019 | 12,414 | +24% | 1 | 1 | 0% | 2,358 | 5,936 | +152% | 0 | 0 | — |
case-18 | pass→pass | 13,464 | 12,248 | -9% | 1 | 1 | 0% | 2,498 | 5,516 | +121% | 0 | 0 | — |
case-19 | pass→pass | 14,252 | 16,769 | +18% | 1 | 1 | 0% | 3,304 | 7,261 | +120% | 0 | 0 | — |
case-20 | pass→fail | 24,953 | 17,680 | -29% | 1 | 1 | 0% | 5,804 | 7,257 | +25% | 0 | 0 | — |
case-22 | pass→pass | 8,246 | 13,027 | +58% | 1 | 1 | 0% | 1,907 | 6,297 | +230% | 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 -9 percentage points is the difference between those two pass rates over the 22 comparable cases. 3 cases got worse with the skill loaded, and they are 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.