kustomize — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited kustomize (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Customize Kubernetes resources declaratively without templating.
Use this skill when:
myapp/
├── base/
│ ├── kustomization.yaml
│ ├── deployment.yaml
│ ├── service.yaml
│ └── configmap.yaml
└── overlays/
├── development/
│ ├── kustomization.yaml
│ └── replica-patch.yaml
├── staging/
│ ├── kustomization.yaml
│ └── namespace.yaml
└── production/
├── kustomization.yaml
├── replica-patch.yaml
└── resource-patch.yaml# base/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- deployment.yaml
- service.yaml
- configmap.yaml
commonLabels:
app: myapp
commonAnnotations:
managed-by: kustomize# base/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
replicas: 1
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: myapp:latest
ports:
- containerPort: 8080
resources:
requests:
memory: "64Mi"
cpu: "100m"
limits:
memory: "128Mi"
cpu: "200m"# overlays/development/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../base
namespace: myapp-dev
namePrefix: dev-
commonLabels:
environment: development
images:
- name: myapp
newTag: dev-latest# overlays/production/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../base
namespace: myapp-prod
namePrefix: prod-
commonLabels:
environment: production
replicas:
- name: myapp
count: 5
images:
- name: myapp
newName: registry.example.com/myapp
newTag: v2.0.0
patches:
- path: resource-patch.yaml# overlays/production/resource-patch.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
template:
spec:
containers:
- name: myapp
resources:
requests:
memory: "256Mi"
cpu: "500m"
limits:
memory: "512Mi"
cpu: "1000m"# kustomization.yaml
patches:
- target:
kind: Deployment
name: myapp
patch: |-
- op: replace
path: /spec/replicas
value: 5
- op: add
path: /spec/template/spec/containers/0/env
value:
- name: LOG_LEVEL
value: info# kustomization.yaml
patches:
- patch: |-
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
replicas: 3
target:
kind: Deployment
name: myapp# kustomization.yaml
configMapGenerator:
- name: myapp-config
literals:
- APP_ENV=production
- LOG_LEVEL=info
files:
- config.yaml
envs:
- config.env
options:
disableNameSuffixHash: false# kustomization.yaml
secretGenerator:
- name: myapp-secrets
literals:
- api-key=secret123
files:
- tls.crt
- tls.key
type: kubernetes.io/tls# kustomization.yaml
images:
# Change tag
- name: myapp
newTag: v2.0.0
# Change registry
- name: myapp
newName: registry.example.com/myapp
newTag: v2.0.0
# Use digest
- name: myapp
digest: sha256:abc123...# kustomization.yaml
namePrefix: prod-
nameSuffix: -v2# kustomization.yaml
namespace: production# kustomization.yaml
commonLabels:
app.kubernetes.io/name: myapp
app.kubernetes.io/environment: production
commonAnnotations:
example.com/owner: team-a# kustomization.yaml
replicas:
- name: myapp
count: 5
- name: worker
count: 3# components/monitoring/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1alpha1
kind: Component
resources:
- servicemonitor.yaml
patches:
- patch: |-
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
template:
metadata:
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8080"# overlays/production/kustomization.yaml
components:
- ../../components/monitoring# kustomization.yaml
resources:
# Remote Git repository
- https://github.com/org/manifests//base?ref=v1.0.0
# Remote URL
- https://raw.githubusercontent.com/org/repo/main/deployment.yaml# Build and view output
kubectl kustomize overlays/production
# Apply to cluster
kubectl apply -k overlays/production
# Delete resources
kubectl delete -k overlays/production
# View diff
kubectl diff -k overlays/production
# Build with standalone kustomize
kustomize build overlays/production
# Build and apply
kustomize build overlays/production | kubectl apply -f -# kustomization.yaml
helmCharts:
- name: prometheus
repo: https://prometheus-community.github.io/helm-charts
version: 25.0.0
releaseName: prometheus
namespace: monitoring
valuesFile: values.yaml
includeCRDs: true# kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- deployment.yaml
replacements:
- source:
kind: ConfigMap
name: myapp-config
fieldPath: data.APP_VERSION
targets:
- select:
kind: Deployment
name: myapp
fieldPaths:
- spec.template.spec.containers.[name=myapp].image
options:
delimiter: ':'
index: 1Problem: Resources not updating when ConfigMap changes Solution: Enable name suffix hash (default) or use replacement
Problem: Strategic merge patch doesn't work Solution: Verify resource names match, use JSON patch for complex changes
Problem: Cannot fetch remote resources Solution: Check URL, verify ref/tag exists, ensure network access
Problem: commonLabels breaks selectors Solution: Use includeSelectors: false or exclude specific resources
commonLabels:
app: myapp
configurations:
- labelExclusions.yaml~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.