Obtain and analyze a Helm chart (local path, ArtifactHub URL, Helm repo reference, or Git URL) and extract an ordered list of discrete features as YAML. Use when: analyzing an upstream chart before feature parity, comparing charts, listing features in a reference chart, understanding chart structure. Trigger phrases: "analyze chart", "list features in chart", "compare chart features", "what features does this chart have".
67
84%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Low
Low-risk findings worth noting
Analyze a Helm chart and extract an ordered list of discrete, injectable features as YAML output.
scripts/setup.sh. If any tools are missing, they can be installed by running scripts/setup.sh --install.The chart reference can be any of:
| Format | Example |
|---|---|
| Local path | charts/rabbitmq/ |
| ArtifactHub URL | https://artifacthub.io/packages/helm/bitnami/nginx |
| Helm repo reference | bitnami/nginx |
| Git URL | https://github.com/bitnami/charts/tree/main/bitnami/nginx |
If the input is not a local directory, fetch it first into a temporary location (e.g. /tmp/reference-charts/):
ArtifactHub URL:
helm repo add <repo-name> <repo-url>
helm repo update
helm pull <repo-name>/<chart-name> --untar --untardir /tmp/reference-chartsHelm repo reference (e.g. bitnami/nginx):
helm pull <repo>/<chart> --untar --untardir /tmp/reference-chartsGit URL (e.g. https://github.com/<org>/<repo>/tree/<branch>/<path>):
git clone --depth 1 --branch <branch> --filter=blob:none --sparse \
https://github.com/<org>/<repo>.git /tmp/reference-charts/<repo>
cd /tmp/reference-charts/<repo>
git sparse-checkout set <path>
# This also works for GitLab, Gitea, and other forges — adjust the URL parsing accordinglyIf the input is a local directory, then use as-is.
List every file under <chart>/templates/ (excluding _helpers.tpl, NOTES.txt, and tests/).
For each file, extract:
kind:(s)apiVersion:(s).Values.* references (these become the feature's values_keys)Base chart (not features — produced by the generator):
Deployment or StatefulSet (primary workload)Service (primary service)ServiceAccountEverything else is a feature.
Grouping rules:
Role + RoleBinding → rbac)For every feature, collect all .Values.* dotted paths from its source templates. Deduplicate and sort alphabetically.
Flag features with deprecated/removed apiVersion for Kubernetes 1.29+:
extensions/v1beta1networking.k8s.io/v1beta1policy/v1beta1 (PodSecurityPolicy)rbac.authorization.k8s.io/v1beta1Mark these as deprecated_api: true. For all other features, run an additional check to verify the chart's Chart.yaml and README files for any mentions of deprecated APIs in the documentation, and if found, mark them as deprecated_api: true with a warning that the chart may be using deprecated APIs despite not declaring them in the templates.
Assign numeric priority (1 = inject first):
Within the same category, simpler features (fewer templates, fewer values keys) come first.
Use yq to ensure the format, sorting and existence of the feature fields, in conformity with the schema specified in the Output section below.
A YAML document sorted by priority ascending:
features:
- id: <kebab-case-id>
name: <human-readable name>
kind: <primary Kubernetes Kind>
api_version: <apiVersion>
source_templates:
- templates/<file>.yaml
values_keys:
- <dotted.path.to.value>
priority: <number>
deprecated_api: falsekind and api_version as-is.Values references → values_keys: []78b355b
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.