dtsong/my-claude-setup · Archived

helm-generation

Use when creating Helm values.yaml files, converting docker-compose to Helm, or reviewing Helm configurations. Produces minimal-diff values that only override chart defaults. Triggers on 'helm values', 'create values.yaml', 'deploy to kubernetes'.

First seen Mar 10, 2026

Installation

$ npx skills add dtsong/my-claude-setup --skill helm-generation

Stronger alternatives

This repository is archived — consider an actively maintained alternative.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from dtsong/my-claude-setup · top by installs.

npx skills add dtsong/my-claude-setup

Browse all from dtsong/my-claude-setup

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 5
License LICENSE
Default branch main
Open issues 5
Status Archived

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 4,982 B
  • docs SUMMARY.md 270 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 2 installs

SKILL.md

Helm Values Generation Skill

Generate Helm values files that only override necessary defaults.

Core Principles

  1. Minimal diff: Output ONLY values that differ from chart defaults
  2. Proper types: Booleans as booleans, not strings
  3. Constraint validation: Verify values against chart's allowed options
  4. CLI args for metadata: name/namespace are CLI args, not values
  5. Verification-first: Read chart defaults before generating

Process

Step 1: Analyze Chart

Before generating values, understand the chart:

# Get chart info
helm show values <chart> [--version <version>]

# Or for OCI charts
helm show values oci://registry/chart

# Check chart README for constraints
helm show readme <chart>

Gather:

[ ] Default values identified
[ ] Required values (no defaults) identified
[ ] Value constraints documented (enums, ranges)
[ ] Chart version pinned

Step 2: Generate Values

Structure:

# values.yaml
# Only override what differs from defaults

# Example: Overriding replica count (default: 1)
replicaCount: 3

# Example: Overriding image (default: nginx:latest)
image:
  repository: myregistry/myapp
  tag: "1.2.3"  # Quotes for version strings

# Example: Boolean (NOT "true" string)
autoscaling:
  enabled: true

What to EXCLUDE:

  • Values matching chart defaults
  • name: or namespace: (use helm install <name> -n <ns>)
  • Commented-out defaults
  • Redundant nested keys

Step 3: Type Handling

YAML Type Example Common Mistake
Boolean enabled: true enabled: "true"
Integer replicas: 3 replicas: "3"
String version tag: "1.2.3" tag: 1.2.3 (parsed as float)
Null value: null value: ""
List - item Forgetting -

Step 4: Validation

# Lint values
helm lint <chart> -f values.yaml

# Template to verify
helm template <release> <chart> -f values.yaml

# Dry-run install
helm install <release> <chart> -f values.yaml --dry-run

Common Chart Patterns

Ingress:

ingress:
  enabled: true
  className: nginx
  hosts:
    - host: app.example.com
      paths:
        - path: /
          pathType: Prefix
  tls:
    - secretName: app-tls
      hosts:
        - app.example.com

Resources:

resources:
  requests:
    cpu: 100m
    memory: 128Mi
  limits:
    cpu: 500m
    memory: 512Mi

Service Account (with IRSA/Workload Identity):

serviceAccount:
  create: true
  annotations:
    eks.amazonaws.com/role-arn: arn:aws:iam::ACCOUNT:role/ROLE

Gotchas

  • tag: 1.2.3 without quotes is parsed as a float (1.2) then truncated — always quote version strings: tag: "1.2.3"
  • enabled: "true" is a string, not a boolean — Helm templates checking if .Values.enabled will always be true (non-empty string)
  • Including name: or namespace: in values.yaml has no effect — these are CLI args: helm install <name> -n <ns>
  • helm upgrade without --install fails if the release doesn't exist — use helm upgrade --install for idempotent deployments
  • Copying all chart defaults with minor changes makes diffs unreadable and breaks on chart upgrades — only override what differs
  • OCI-based charts (oci://) require helm registry login first — authentication errors are cryptic

Anti-patterns to Avoid

  • Including name: or namespace: in values
  • Copying all defaults with minor changes
  • String booleans: "true" instead of true
  • Unquoted version strings that look like numbers
  • Hardcoded secrets (use external-secrets, sealed-secrets, etc.)
  • Values that don't exist in the chart schema

Output Format

When generating values, output:

  1. Chart analysis: What chart, version, key constraints
  2. Values file: Only overridden values with comments
  3. Install command: Full helm install/upgrade command
  4. Validation command: How to verify before applying
  5. Notes: Any external dependencies (secrets, CRDs, etc.)

Example Workflow

User: "Generate Helm values for nginx-ingress"

Response:

# values.yaml for ingress-nginx
# Chart: ingress-nginx/ingress-nginx v4.10.0
# Only non-default values shown

controller:
  replicaCount: 2

  resources:
    requests:
      cpu: 100m
      memory: 90Mi
    limits:
      cpu: 500m
      memory: 256Mi

  service:
    type: LoadBalancer
# Install command
helm install ingress-nginx ingress-nginx/ingress-nginx \
  --namespace ingress-nginx \
  --create-namespace \
  -f values.yaml

# Verify
helm template ingress-nginx ingress-nginx/ingress-nginx -f values.yaml | kubectl apply --dry-run=client -f -