From helm-chart-best-practices
Review or generate Helm charts following the official Helm Chart Best Practices Guide (https://helm.sh/docs/chart_best_practices/). Use this skill whenever the user works with Helm charts — auditing a chart, fixing lint findings, writing a new chart from scratch, refactoring values.yaml, adjusting templates/labels/RBAC/CRDs, or asking "is this chart any good?". Trigger even when the user does not explicitly say "best practices" but is clearly editing or producing a Chart.yaml, templates/*.yaml, values.yaml, _helpers.tpl, or a crds/ directory.
How this skill is triggered — by the user, by Claude, or both
Slash command
/helm-chart-best-practices:helm-chart-best-practicesThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You help users **review** and **generate** Helm charts that conform to the official Helm guide at <https://helm.sh/docs/chart_best_practices/>. The guide has eight chapters; each one is mirrored as a file in `references/`. Treat the upstream guide as the source of truth — when in doubt, quote it.
You help users review and generate Helm charts that conform to the official Helm guide at https://helm.sh/docs/chart_best_practices/. The guide has eight chapters; each one is mirrored as a file in references/. Treat the upstream guide as the source of truth — when in doubt, quote it.
Mirror the language the user writes in. English is the default, but if the user writes in Japanese, Chinese, Korean, German, etc., respond in that same language — including the review report, the explanations of findings, and any narrative commentary around patches. Translate the section headers of assets/review_report_template.md (e.g. Summary, Findings, Must fix, Should fix, Consider) into the user's language; the template is a structural scaffold, not a fixed string.
Keep these in their original English form regardless of response language, because they carry meaning only in the original:
references/*.md and from the upstream Helm best-practices guide.https://helm.sh/docs/chart_best_practices/...).The same applies to the references themselves: when you cite a chapter, you may paraphrase it in the user's language, but the verbatim quote stays English.
Apply this skill whenever the user is working with anything that looks like a Helm chart, even if they don't say "best practice":
Chart.yaml, values.yaml, templates/, or crds/.{{ .Values.* }}, {{ .Release.* }}, {{ .Chart.* }}, {{ include "..." . }}.Decide which mode you are in from the user's request and the files in the working directory.
The user has an existing chart and wants feedback. Produce a categorized review report (template in assets/review_report_template.md). Steps:
Chart.yaml, values.yaml, templates/, crds/, charts/, templates/_helpers.tpl. Note the chart name, version, and dependencies.scripts/run_checks.sh <chart-dir> — it runs helm lint, helm template (to catch render errors), and scripts/check_labels.py (to flag missing recommended labels). If helm is not installed, tell the user and fall back to static reading.references/ in turn and walk through the rules:
references/conventions.md — chart names, SemVer, YAML formatting, namespace usagereferences/values.md — camelCase, flat structure, type clarity, --set ergonomics, documentationreferences/templates.md — file layout, _helpers.tpl naming, whitespace, comments, JSON usagereferences/dependencies.md — version ranges, repo URLs, conditions/tagsreferences/labels.md — required app.kubernetes.io/* and helm.sh/chart labelsreferences/pods.md — fixed image tags, imagePullPolicy, selector stabilityreferences/crds.md — crds/ directory semantics, upgrade caveatsreferences/rbac.md — rbac.create / serviceAccount.create split, helper templatesmetadata.labels, invalid chart name).values.yaml keys, latest image tag).The user wants a new chart. Do this even if they describe the app in plain language ("scaffold a Helm chart for a Go web service with Postgres dependency").
Default flow: build on top of helm create. The Helm team maintains the starter, and it already satisfies most of the guide (namespaced helpers, immutable selector, recommended labels, IfNotPresent pull policy, gated ServiceAccount). Standing on their work means our value-add is the parts they don't enforce (documentation, dependencies, scope discipline) plus validation — not re-implementing the scaffold. Fall back to a from-scratch write only when helm is unavailable.
Gather inputs you actually need: chart name (kebab-case, lowercase only — see conventions), application name, container image (repository + tag), ports, env vars / secrets, whether they need HPA / Ingress / RBAC / ServiceAccount, dependencies. If the user already supplied most of this, don't re-ask — fill in sensible defaults and call them out.
Generate the scaffold with helm create. Run helm create <chart-name> in the target directory. If helm is not installed, jump to step 7 (from-scratch fallback).
Strip what the user did NOT ask for. helm create always adds HPA, Ingress, and a tests/ directory. Delete the templates the user does not need so the chart stays minimal:
templates/hpa.yaml unless autoscaling was requested.templates/ingress.yaml unless ingress was requested.templates/tests/ unless the user wants Helm tests.
Leaving these in is the most common review finding against helm create output.Customize for the user's actual app. Edit values.yaml and templates/ so the chart is about their application, not a generic placeholder:
image.repository / image.tag / port / env vars / replica defaults into values.yaml.templates/deployment.yaml if needed.dependencies: to Chart.yaml per references/dependencies.md (version range, https:// repo, condition: for optional sub-charts).Apply the best-practice diffs that helm create does not enforce. This is where this skill earns its keep:
values.yaml documentation — every key gets a leading # <keyName> ... comment per references/values.md. The helm-create output is sparse; fix it.appVersion) and avoid YAML 1.1 keywords like yes/no for booleans.references/values.md.crds/ per references/crds.md, and warn in NOTES.txt that Helm cannot upgrade/delete CRDs.helm create only ships serviceAccount.create. If the chart needs Role/RoleBinding, add the rbac.create / serviceAccount.create separation per references/rbac.md.Validate. Run helm lint <chart-dir> and helm template _generate_ <chart-dir> to confirm the chart still renders. Report any findings. Tell the user explicitly which files you customized vs. left as defaults.
From-scratch fallback (helm unavailable). Produce the same file set by hand, applying every rule directly. Same target files as steps 2–5 would have produced:
Chart.yaml (SemVer version, appVersion, apiVersion: v2, type: application, optional dependencies).values.yaml — flat where possible, camelCase, every key documented per references/values.md.templates/_helpers.tpl — <chart>.name, .fullname, .chart, .labels, .selectorLabels, .serviceAccountName all namespaced with the chart name.templates/deployment.yaml — imagePullPolicy: IfNotPresent, fixed image tag, recommended labels via the labels helper, selector using only selectorLabels (immutable subset).templates/service.yaml if a port was specified.templates/serviceaccount.yaml gated on .Values.serviceAccount.create.templates/NOTES.txt, .helmignore.If the user, after a review, says "fix it" or "apply the suggestions", switch into refactor mode: apply the patches you proposed, file by file. After each file, briefly state what changed and which rule it satisfies. Re-run helm lint at the end.
references/*.md file includes the exact upstream wording.Each file in references/ is short (~50–120 lines) and has the same shape:
Open references lazily by mode — don't read all eight up front. Each chapter is small but the total adds up to thousands of tokens, and most tasks only touch a few chapters.
conventions.md, values.md, templates.md, labels.md, pods.md. Only open dependencies.md if the user asked for sub-charts; crds.md if they asked for CRDs; rbac.md if they asked for RBAC.Read each file fully the first time you touch its topic in a session. After that you can rely on memory unless you need to quote.
references/ and let SKILL.md focus on workflow.helm lint and label checks catch ~60% of issues. Doing them first lets the written report stay focused on the things that need a human-shaped argument.scripts/ is the place for these.If you find yourself wanting to add new rules that aren't in the official guide (security hardening, resource limits, probes, etc.), tell the user explicitly that those are beyond the upstream guide and offer them as a separate, opt-in pass.
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
npx claudepluginhub key60228/helm-chart-best-practices --plugin helm-chart-best-practices