Use when working with Helm templates and template functions for generating Kubernetes manifests dynamically.
View on GitHubTheBushidoCollective/han
jutsu-helm
January 24, 2026
Select agents to install to:
npx add-skill https://github.com/TheBushidoCollective/han/blob/main/jutsu/jutsu-helm/skills/helm-templates/SKILL.md -a claude-code --skill helm-templatesInstallation paths:
.claude/skills/helm-templates/# Helm Templates
Working with Helm templates and template functions.
## Basic Templating
### Values Access
```yaml
apiVersion: v1
kind: Pod
metadata:
name: {{ .Values.name }}
namespace: {{ .Release.Namespace }}
spec:
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
```
### Built-in Objects
- `.Values`: Values from values.yaml and overrides
- `.Release`: Release information (Name, Namespace, IsUpgrade, IsInstall)
- `.Chart`: Chart metadata from Chart.yaml
- `.Files`: Access non-template files in chart
- `.Capabilities`: Kubernetes cluster capabilities
- `.Template`: Current template information
## Template Functions
### String Functions
```yaml
# upper, lower, title
name: {{ .Values.name | upper }}
# quote
value: {{ .Values.password | quote }}
# trimSuffix, trimPrefix
image: {{ .Values.image | trimSuffix ":latest" }}
# replace
url: {{ .Values.url | replace "http" "https" }}
```
### Default Values
```yaml
# default function
port: {{ .Values.port | default 8080 }}
tag: {{ .Values.image.tag | default .Chart.AppVersion }}
# required function
database: {{ required "database.host is required" .Values.database.host }}
```
### Type Conversion
```yaml
# toString, toJson, toYaml
replicas: {{ .Values.replicas | toString }}
annotations:
{{ toYaml .Values.annotations | indent 2 }}
config: |
{{ toJson .Values.config | indent 2 }}
```
### Conditionals
```yaml
{{- if .Values.ingress.enabled }}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ .Release.Name }}
spec:
# ...
{{- end }}
{{- if and .Values.persistence.enabled .Values.persistence.existingClaim }}
# Use existing claim
{{- else if .Values.persistence.enabled }}
# Create new claim
{{- end }}
```
### Loops
```yaml
{{- range .Values.environments }}
- name: {{ .name }}
value: {{ .value | quote }}
{{- end }}
{{- range $key, $value := .Values.config }}
{{ $key }}: {{ $value | quote }}
{{- end