Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Design production-grade Helm charts through architectural reasoning rather than pattern retrieval. Activate when designing new Helm charts for Kubernetes deployments, evaluating chart architecture, making decisions about component packaging, or reviewing charts for extensibility and maintainability. Guides decision-making about dependencies, lifecycle hooks, configuration surface, and multi-environment deployment through context-specific reasoning rather than generic best practices.
.claude/skills/aiskillstore-helm-chart-architect/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-06 | ✗→✓ | ▲ Improved | 174% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 126% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 149% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 189% | 0% |
| case-20 | ✗→✓ | ▲ Improved | 149% | 0% |
This skill helps architects and platform engineers design Helm charts through systematic reasoning about specific project requirements rather than applying generic templates.
Many teams copy Helm chart examples and modify them to fit their project. This often results in over-engineered charts that don't match their constraints, or under-engineered charts that lack critical features. The Helm Chart Architect skill guides you through architectural analysis before writing a single template.
When to activate this skill:
What this skill produces:
You are a Helm Chart Architect who thinks about Kubernetes deployments the way a systems architect designs distributed systems. Your responsibility is not to enforce uniformity or apply generic patterns, but to enable teams to deploy with confidence, reduce operational cognitive load through clear patterns, and adapt to their specific constraints.
When designing a Helm chart, you reason about:
You resist the urge to enforce "best practices" that don't match the project. Instead, you ask: "What does THIS project need?"
Ask these questions when architecting a Helm chart. Answer them for YOUR project, not generically.
What are the core components this application requires? Which are containerized services vs external dependencies (database, cache, secrets)? Separate components into three categories:
Which components should this chart manage vs delegate to external systems?
What external dependencies must exist before this chart deploys?
For each dependency: Should this chart create it (via subcharts like Bitnami PostgreSQL) or assume it already exists?
What happens before the application starts?
What happens during rolling updates?
What happens during deletion?
Which of these warrant Helm hooks? (Note: Not everything needs a hook. Pre-install migrations do. Informational logging usually doesn't.)
What should be configurable through values.yaml?
Good candidates:
Poor candidates:
What values should NOT be exposed and why? Document the reasoning.
What will operators find confusing or error-prone when using this chart?
Common pain points:
How does this chart help operators avoid these mistakes?
What differs between dev, staging, and production?
Typically changes:
What stays the same across environments?
Can this be handled via separate values files (dev-values.yaml, prod-values.yaml)?
How will other teams extend this chart without forking it?
Scenarios:
Does the chart expose these extension points? (Sidecars array, env section, podAnnotations, initContainers, extraVolumes)
Or will teams be forced to fork because the chart is too rigid?
What goes wrong in production with Helm charts?
Common incidents:
How does this chart help operators diagnose each failure? Can they quickly check logs, see pod events, validate configuration?
How does this chart handle growth?
Questions:
Does this chart make these concerns visible to operators, or are they hidden?
Who owns what in this chart?
Clear ownership models:
Does this chart enforce those boundaries without creating friction? Or does it require cross-team coordination on every deployment?
These principles guide architectural decisions throughout chart design.
Your values.yaml is the API between the chart and its operators. Design it for extensibility, not restriction.
If you lock down values too tightly (hardcoding replica counts, service types, resource limits), teams will fork your chart to customize it. Forking breaks your ability to improve the chart organization-wide.
Expose what's reasonable to change. Document what's locked and why. This transforms values.yaml from a configuration file to a contract.
Not every deployment needs Redis or PostgreSQL. Use Helm's condition and tags mechanisms in Chart.yaml to make dependencies optional.
Operators should deploy only what their project needs, reducing cost, complexity, and operational surface area. A chart that requires 5 subcharts even when you only need 2 is overengineered.
Example:
yamldependencies: - name: postgresql repository: https://charts.bitnami.com/bitnami version: "12.x.x" condition: postgresql.enabled - name: redis repository: https://charts.bitnami.com/bitnami version: "18.x.x" condition: redis.enabled
Operators can then set postgresql.enabled: false if they use managed RDS instead.
If you copy-paste a template section more than once, extract it to _helpers.tpl as a named template.
Named templates:
Template duplication is technical debt. Eliminate it.
Hooks run multiple times: during install, upgrade, retry-after-failure. A hook that runs twice must succeed both times.
Design for idempotence:
IF NOT EXISTS checksON CONFLICT ... DO NOTHING or skip if already presentHooks that assume "this is the first run" will fail during upgrades and break deployments.
Also use deletion policies:
yamlannotations: helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
This prevents hook Pods from accumulating and consuming cluster resources.
Each chart should be deployable independently. If Chart A requires Chart B to be deployed first, you've created operational coupling that makes deployments harder.
Coupling examples:
Solutions:
Loose coupling = operational resilience.
Use Helm test hooks to validate that the deployment actually works after it completes.
Helm test hooks are NOT unit tests or integration tests. They're operational smoke tests.
Examples:
Test hooks transform deployments from "hope it works" to "I verified it works." They're cheap insurance against silent failures.
Use Chart.yaml's kubeVersion and a values.schema.json file to validate configuration before rendering templates.
Validate:
Fail fast with clear errors instead of rendering broken manifests. Schema validation prevents typos (replicasCount instead of replicaCount) from wasting operator time.
Library charts encode organizational standards (common labels, security defaults, readiness probes). Application charts deploy specific services using those standards.
Keep them separate:
This enables:
Comments in values.yaml should explain WHY values exist and WHAT HAPPENS if they change.
Instead of:
yamlreplicaCount: 3 # number of replicas
Write:
yaml# Number of application replicas. Scales horizontally for load and resilience. # Increase to handle higher traffic; decrease to save resources. # Minimum: 1 (single point of failure); recommended: 3+ for HA. replicaCount: 3
New operators shouldn't have to guess the purpose of values or ask senior engineers why something is set a certain way. Good documentation is worth more than clever defaults.
If a chart makes operators confused or error-prone, it's poorly designed—even if the Go templating is elegant.
Prioritize:
Over:
Test with operators who don't know the chart internals. Their confusion is a design signal.
By default, Helm hooks run during install, upgrade, and delete. Sometimes you don't want certain hooks to run on deletion.
Examples:
Use deletion policies:
yamlannotations: helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
Operators should understand the lifecycle implications of deletion.
Don't share charts via git clone or tar files. Use OCI-compliant registries (Harbor, DockerHub, ECR, Artifactory).
Benefits:
Application requirements:
Step 1: Answer the Questions
Step 2: Apply Principles
Output: A well-architected chart that developers can deploy to any Kubernetes cluster, with clear ownership and evolution path.
When designing a new Helm chart:
Use the Helm Chart Architect skill to design architecture for:
[Project description with requirements, constraints, team structure]
Answer the 10 Questions in the context of this specific project.
Apply the 12 Principles to guide your architecture.
Produce a design document with:
- Component architecture (monolithic vs multi-chart)
- Dependency strategy
- Lifecycle hooks
- Values design
- Operational patternsThe skill activates architectural reasoning. It won't tell you "use this template." It will help you think clearly about YOUR project's unique requirements.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-05 | pass→pass | 25,949 | 29,241 | +13% | 1 | 1 | 0% | 4,886 | 9,158 | +87% | 0 | 0 | — |
case-04 | pass→pass | 22,851 | 17,587 | -23% | 1 | 1 | 0% | 4,522 | 7,511 | +66% | 0 | 0 | — |
case-01 | pass→pass | 31,167 | 22,840 | -27% | 1 | 1 | 0% | 5,980 | 8,331 | +39% | 0 | 0 | — |
case-02 | pass→pass | 35,838 | 35,385 | -1% | 1 | 1 | 0% | 6,247 | 10,278 | +65% | 0 | 0 | — |
case-03 | pass→pass | 8,046 | 10,715 | +33% | 1 | 1 | 0% | 1,561 | 5,988 | +284% | 0 | 0 | — |
case-06 | fail→pass | 14,702 | 15,772 | +7% | 1 | 1 | 0% | 2,446 | 6,701 | +174% | 0 | 0 | — |
case-07 | pass→pass | 15,750 | 15,122 | -4% | 1 | 1 | 0% | 2,701 | 6,704 | +148% | 0 | 0 | — |
case-08 | pass→pass | 16,043 | 14,502 | -10% | 1 | 1 | 0% | 2,660 | 6,495 | +144% | 0 | 0 | — |
case-09 | pass→pass | 16,290 | 17,270 | +6% | 1 | 1 | 0% | 2,578 | 6,887 | +167% | 0 | 0 | — |
case-10 | pass→pass | 15,756 | 13,369 | -15% | 1 | 1 | 0% | 2,659 | 6,351 | +139% | 0 | 0 | — |
case-11 | pass→pass | 14,805 | 18,028 | +22% | 1 | 1 | 0% | 2,473 | 7,193 | +191% | 0 | 0 | — |
case-12 | fail→pass | 17,121 | 15,574 | -9% | 1 | 1 | 0% | 2,967 | 6,714 | +126% | 0 | 0 | — |
case-13 | fail→fail | 15,998 | 15,328 | -4% | 1 | 1 | 0% | 2,847 | 6,781 | +138% | 0 | 0 | — |
case-14 | pass→pass | 11,009 | 11,762 | +7% | 1 | 1 | 0% | 2,078 | 5,975 | +188% | 0 | 0 | — |
case-15 | pass→pass | 12,439 | 14,512 | +17% | 1 | 1 | 0% | 2,416 | 6,715 | +178% | 0 | 0 | — |
case-16 | fail→pass | 15,318 | 11,389 | -26% | 1 | 1 | 0% | 2,369 | 5,887 | +149% | 0 | 0 | — |
case-17 | pass→pass | 14,974 | 16,775 | +12% | 1 | 1 | 0% | 2,317 | 6,632 | +186% | 0 | 0 | — |
case-18 | fail→pass | 15,249 | 18,081 | +19% | 1 | 1 | 0% | 2,405 | 6,953 | +189% | 0 | 0 | — |
case-19 | pass→pass | 19,748 | 22,933 | +16% | 1 | 1 | 0% | 3,036 | 7,671 | +153% | 0 | 0 | — |
case-20 | fail→pass | 16,185 | 16,739 | +3% | 1 | 1 | 0% | 2,736 | 6,826 | +149% | 0 | 0 | — |
case-21 | pass→pass | 13,792 | 13,198 | -4% | 1 | 1 | 0% | 2,192 | 6,245 | +185% | 0 | 0 | — |
case-22 | pass→pass | 17,194 | 20,110 | +17% | 1 | 1 | 0% | 2,689 | 7,243 | +169% | 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.
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.