# Chart Skills

**UNOFFICIAL/EXPERIMENTAL — advisory.** Generated by
`scripts/generate-chart-skills.mjs`. Do not hand-edit. Regenerate with
`npm run chart-skills`.

Answers **"is there a skill for this chart?"** — which of the thematic operating
playbooks under [docs/skills/](../../docs/skills/README.md) apply to each chart,
and why. Skills are thematic, not per-chart; this derives applicability from each
chart's facts in the master matrix by documented rules (see
[contract.md](./contract.md)). It is advisory help ("which playbook applies"),
not a proof.

Two forms: [skills.csv](./skills.csv) (spreadsheet) and
[skills.json](./skills.json) (stable interface for agents).

## Coverage

102 of 110 charts have at least one applicable skill. A chart
with none is a plain chart that needs no special playbook.

| Skill | Charts |
| --- | ---: |
| [Live Parity](../../docs/skills/live-parity.md) | 97 |
| [Target Facts And Lifecycle](../../docs/skills/target-facts-and-lifecycle.md) | 54 |
| [Hook And Secret Lifecycle](../../docs/skills/hook-and-secret-lifecycle.md) | 41 |
| [Large App Evidence Funnel](../../docs/skills/large-app-evidence-funnel.md) | 22 |
| [Serious Chart Playbooks](../../docs/skills/serious-chart-playbooks.md) | 13 |

## How To Read One Row

`applicable_skills` lists the playbook slugs that apply; `top_skill` is the
most specific; `matched_signals` is the feature evidence that triggered them
(e.g. `named-serious; hooks:8; crds; webhooks`); `skill_docs` links the
playbooks. A chart almost always also keeps its lifecycle-route facts in
[../lifecycle-routes/](../lifecycle-routes/summary.md).

## Charts

| Chart | Skills | Top | Signals |
| --- | --- | --- | --- |
| aqua/trivy-operator@0.32.1 | 1 | live-parity | live |
| argo-cd/argo-cd@9.5.15 | 1 | live-parity | live |
| argo-cd/argo-cd@9.5.17 | 1 | live-parity | live |
| argo-cd/argo-events@2.4.21 | 1 | live-parity | live |
| argo-cd/argo-rollouts@2.40.9 | 1 | live-parity | live |
| argo-cd/argo-workflows@1.0.14 | 2 | hook-and-secret-lifecycle | hooks:1; live |
| argo-cd/argocd-image-updater@1.2.2 | 1 | live-parity | live |
| autoscaler/cluster-autoscaler@9.57.0 | 1 | live-parity | live |
| autoscaler/vertical-pod-autoscaler@0.9.0 | 1 | live-parity | live |
| aws-ebs-csi-driver/aws-ebs-csi-driver@2.60.1 | 0 | none | — |
| bitnami/apache@11.4.29 | 3 | hook-and-secret-lifecycle | generated-facts; lookup; live |
| bitnami/contour@21.1.4 | 4 | hook-and-secret-lifecycle | hooks:1; generated-facts; crds; lookup; live |
| bitnami/elasticsearch@22.1.6 | 3 | hook-and-secret-lifecycle | generated-facts; lookup; stateful-storage; live |
| bitnami/memcached@8.5.5 | 3 | hook-and-secret-lifecycle | generated-facts; lookup; stateful-storage; live |
| bitnami/mongodb@19.0.7 | 3 | hook-and-secret-lifecycle | generated-facts; lookup; stateful-storage; live |
| bitnami/mongodb@19.0.9 | 1 | live-parity | live |
| bitnami/mongodb@19.1.0 | 1 | live-parity | live |
| bitnami/mysql@14.0.3 | 3 | hook-and-secret-lifecycle | generated-facts; lookup; stateful-storage; live |
| bitnami/nginx@24.0.2 | 3 | hook-and-secret-lifecycle | generated-facts; lookup; live |
| bitnami/nginx@24.0.4 | 1 | live-parity | live |
| bitnami/nginx@25.0.0 | 1 | live-parity | live |
| bitnami/opensearch@2.0.10 | 1 | live-parity | live |
| bitnami/phpmyadmin@20.0.0 | 3 | hook-and-secret-lifecycle | generated-facts; lookup; stateful-storage; live |
| bitnami/postgresql@18.6.10 | 1 | live-parity | live |
| bitnami/postgresql@18.6.7 | 3 | hook-and-secret-lifecycle | generated-facts; lookup; stateful-storage; live |
| bitnami/postgresql@18.7.0 | 1 | live-parity | live |
| bitnami/rabbitmq@16.0.14 | 3 | hook-and-secret-lifecycle | generated-facts; lookup; stateful-storage; live |
| bitnami/redis@25.5.3 | 3 | hook-and-secret-lifecycle | generated-facts; lookup; stateful-storage; live |
| bitnami/redis@27.0.0 | 1 | live-parity | live |
| bitnami/spark@10.0.3 | 3 | hook-and-secret-lifecycle | generated-facts; lookup; stateful-storage; live |
| bitnami/zookeeper@13.8.7 | 3 | hook-and-secret-lifecycle | generated-facts; lookup; stateful-storage; live |
| cloudnative-pg/cloudnative-pg@0.28.2 | 5 | serious-chart-playbooks | crds+webhooks; generated-facts; webhooks; crds; live |
| coredns/coredns@1.45.2 | 3 | hook-and-secret-lifecycle | generated-facts; live |
| crossplane-stable/crossplane@2.3.1 | 1 | live-parity | live |
| descheduler/descheduler@0.36.0 | 1 | live-parity | live |
| dex/dex@0.24.0 | 0 | none | — |
| elastic/eck-operator@3.4.0 | 3 | hook-and-secret-lifecycle | webhooks; stateful-storage; live |
| elastic/filebeat@8.5.1 | 0 | none | — |
| elastic/kibana@8.5.1 | 0 | none | — |
| elastic/logstash@8.5.1 | 2 | target-facts-and-lifecycle | stateful-storage; live |
| elastic/metricbeat@8.5.1 | 1 | target-facts-and-lifecycle | stateful-storage |
| external-dns/external-dns@1.21.1 | 3 | target-facts-and-lifecycle | crds; live |
| external-secrets/external-secrets@2.5.0 | 3 | serious-chart-playbooks | named-serious; live |
| fairwinds-stable/goldilocks@10.3.0 | 5 | serious-chart-playbooks | crds+webhooks; generated-facts; webhooks; crds; lookup; live |
| fairwinds-stable/vpa@4.11.0 | 5 | serious-chart-playbooks | crds+webhooks; webhooks; crds; lookup; live |
| falcosecurity/falco@9.0.0 | 2 | target-facts-and-lifecycle | lookup; stateful-storage; live |
| falcosecurity/falcosidekick@0.13.1 | 2 | target-facts-and-lifecycle | stateful-storage; live |
| fluent/fluent-bit@0.57.6 | 2 | hook-and-secret-lifecycle | hooks:1; live |
| fluent/fluentd@0.5.3 | 2 | target-facts-and-lifecycle | stateful-storage; live |
| gatekeeper/gatekeeper@3.22.2 | 5 | serious-chart-playbooks | crds+webhooks; hooks:4; webhooks; crds; live |
| gitlab/gitlab-runner@0.89.0 | 2 | hook-and-secret-lifecycle | generated-facts |
| grafana/alloy@1.8.2 | 3 | target-facts-and-lifecycle | crds; stateful-storage; live |
| grafana/grafana@10.5.15 | 1 | live-parity | live |
| grafana/loki@7.0.0 | 5 | serious-chart-playbooks | named-serious; generated-facts; webhooks; crds; lookup; stateful-storage; live |
| grafana/promtail@6.17.1 | 1 | live-parity | live |
| grafana/pyroscope@2.0.2 | 4 | hook-and-secret-lifecycle | generated-facts; crds; lookup; stateful-storage; live |
| grafana/rollout-operator@0.49.0 | 1 | live-parity | live |
| grafana/tempo@1.24.4 | 1 | live-parity | live |
| haproxytech/kubernetes-ingress@1.52.0 | 1 | live-parity | live |
| hashicorp/consul@2.0.0 | 5 | serious-chart-playbooks | named-serious; webhooks; stateful-storage; live |
| hashicorp/terraform@1.1.2 | 2 | target-facts-and-lifecycle | crds |
| hashicorp/vault@0.32.0 | 3 | hook-and-secret-lifecycle | webhooks; stateful-storage; live |
| ingress-nginx/ingress-nginx@4.15.1 | 3 | hook-and-secret-lifecycle | webhooks; live |
| istio/gateway@1.30.0 | 0 | none | — |
| istio/istiod@1.30.0 | 0 | none | — |
| jaegertracing/jaeger-operator@2.57.0 | 5 | serious-chart-playbooks | crds+webhooks; webhooks; crds; live |
| jaegertracing/jaeger@4.8.0 | 3 | hook-and-secret-lifecycle | generated-facts; lookup; live |
| jetstack/cert-manager-csi-driver@v0.14.0 | 1 | live-parity | live |
| jetstack/cert-manager@v1.20.2 | 3 | serious-chart-playbooks | named-serious; live |
| jetstack/trust-manager@v0.22.1 | 1 | live-parity | live |
| kedacore/keda@2.19.0 | 5 | serious-chart-playbooks | crds+webhooks; hooks:1; webhooks; crds; live |
| kyverno/kyverno-policies@3.8.0 | 2 | target-facts-and-lifecycle | lookup; live |
| kyverno/kyverno@3.8.1 | 4 | hook-and-secret-lifecycle | hooks:8; generated-facts; crds; lookup; stateful-storage; live |
| linkerd/linkerd-crds@1.8.0 | 1 | live-parity | live |
| longhorn/longhorn@1.11.2 | 3 | hook-and-secret-lifecycle | generated-facts; live |
| metrics-server/metrics-server@3.13.0 | 3 | hook-and-secret-lifecycle | generated-facts; lookup; live |
| minio-operator/operator@7.1.1 | 1 | live-parity | live |
| minio-operator/tenant@7.1.1 | 1 | live-parity | live |
| nats/nack@0.34.0 | 1 | live-parity | live |
| nats/nats@2.14.0 | 1 | live-parity | live |
| nats/surveyor@0.20.9 | 0 | none | — |
| nfs-subdir-external-provisioner/nfs-subdir-external-provisioner@4.0.18 | 1 | target-facts-and-lifecycle | stateful-storage |
| open-telemetry/opentelemetry-operator@0.114.0 | 1 | live-parity | live |
| opencost/opencost@2.5.21 | 1 | target-facts-and-lifecycle | stateful-storage |
| percona/pg-operator@3.0.0 | 1 | live-parity | live |
| percona/psmdb-operator@1.22.0 | 1 | live-parity | live |
| percona/pxc-operator@1.19.1 | 3 | target-facts-and-lifecycle | crds; lookup; live |
| projectcalico/tigera-operator@v3.32.0 | 3 | hook-and-secret-lifecycle | hooks:1; lookup; live |
| prometheus-community/alertmanager@1.37.0 | 2 | target-facts-and-lifecycle | stateful-storage; live |
| prometheus-community/kube-prometheus-stack@85.3.3 | 5 | serious-chart-playbooks | named-serious; hooks:2; generated-facts; webhooks; crds; lookup; stateful-storage; live |
| prometheus-community/kube-prometheus-stack@86.1.0 | 4 | serious-chart-playbooks | named-serious; hooks:2; live |
| prometheus-community/kube-state-metrics@7.4.0 | 3 | hook-and-secret-lifecycle | generated-facts; stateful-storage; live |
| prometheus-community/prometheus-adapter@5.3.0 | 1 | live-parity | live |
| prometheus-community/prometheus-blackbox-exporter@11.10.0 | 1 | live-parity | live |
| prometheus-community/prometheus-node-exporter@4.55.0 | 3 | hook-and-secret-lifecycle | generated-facts; live |
| prometheus-community/prometheus-operator-crds@29.0.0 | 4 | hook-and-secret-lifecycle | generated-facts; crds; live |
| prometheus-community/prometheus-pushgateway@3.6.0 | 2 | target-facts-and-lifecycle | stateful-storage; live |
| prometheus-community/prometheus@29.8.0 | 3 | hook-and-secret-lifecycle | generated-facts; stateful-storage; live |
| prometheus-community/prometheus@29.9.0 | 1 | live-parity | live |
| rook-release/rook-ceph-cluster@v1.19.5 | 1 | live-parity | live |
| rook-release/rook-ceph@v1.19.5 | 1 | live-parity | live |
| runix/pgadmin4@1.62.0 | 2 | target-facts-and-lifecycle | stateful-storage; live |
| sealed-secrets/sealed-secrets@2.18.6 | 1 | live-parity | live |
| secrets-store-csi-driver/secrets-store-csi-driver@1.6.0 | 1 | live-parity | live |
| stakater/reloader@2.2.12 | 1 | live-parity | live |
| strimzi/strimzi-kafka-operator@1.0.0 | 3 | target-facts-and-lifecycle | crds; live |
| traefik/traefik@40.2.0 | 5 | serious-chart-playbooks | crds+webhooks; generated-facts; webhooks; crds; lookup; stateful-storage; live |
| velero/velero@12.0.1 | 0 | none | — |
| vm/victoria-logs-single@0.12.5 | 1 | live-parity | live |
| vm/victoria-metrics-single@0.39.0 | 1 | live-parity | live |

## Boundaries

- Static derivation from the committed master matrix. No cluster, no ConfigHub,
  no `runs/` edits.
- Advisory: applicability is a documented heuristic over chart facts, not proof
  that a chart was operated with the skill.
- `large-app-evidence-funnel` is proxied by CRD/operator shape until a
  per-chart object count exists.
