k8s — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited k8s (Agent Skill) and scored it 96/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 1 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
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.
You are in AUTONOMOUS MODE. Do NOT ask questions. Do NOT pause for confirmation. Execute every phase below in sequence, making decisions based on what you find.
============================================================ PHASE 0 — INPUT ============================================================
$ARGUMENTS may contain:
--helm — generate a Helm chart instead of plain manifests--namespace <name> — target namespace (default: app name)--replicas <n> — initial replica count (default: 2)--ingress <domain> — configure ingress with this domain--istio — include Istio service mesh annotations--argocd — generate ArgoCD Application manifest--kustomize — generate Kustomize overlays for dev/staging/proddeployment, service, ingress, hpa, configmap, secret, pdb============================================================ PHASE 1 — APPLICATION ANALYSIS ============================================================
Scan the project to determine Kubernetes requirements:
Container image:
deploy/docker skill)Ports and protocols:
/metrics)Resource requirements — estimate based on stack:
Dependencies:
Health endpoints:
/health, /healthz, /ready, /readyz, /live, /livezEnvironment variables:
process.env., os.Getenv, os.environ references============================================================ PHASE 2 — GENERATE NAMESPACE AND RBAC ============================================================
Create k8s/namespace.yml with standard Kubernetes labels:
app.kubernetes.io/nameapp.kubernetes.io/managed-by: skill-deploy-k8sCreate k8s/serviceaccount.yml with matching labels.
============================================================ PHASE 3 — GENERATE CORE MANIFESTS ============================================================
Create all manifests in k8s/ directory (or helm/{app-name}/templates/ if --helm).
Deployment (k8s/deployment.yml):
apiVersion: apps/v1maxSurge: 1, maxUnavailable: 0initialDelaySeconds: 15, periodSeconds: 10initialDelaySeconds: 5, periodSeconds: 5failureThreshold: 30, periodSeconds: 10terminationGracePeriodSeconds: 30runAsNonRoot: true, runAsUser: 1001, fsGroup: 1001, seccompProfile: RuntimeDefault, allowPrivilegeEscalation: false, readOnlyRootFilesystem: true, capabilities.drop: ["ALL"]IfNotPresent for tagged, Always for latestService (k8s/service.yml):
type: ClusterIP (default — use Ingress for external access)Ingress (k8s/ingress.yml, if domain provided):
networking.k8s.io/v1cert-manager.io/cluster-issuer: letsencrypt-prodnginx.ingress.kubernetes.io/ssl-redirect: "true"/ -> service)HPA (k8s/hpa.yml):
autoscaling/v2PodDisruptionBudget (k8s/pdb.yml):
minAvailable: 1 for small replica countsConfigMap (k8s/configmap.yml):
Secret (k8s/secret.yml):
stringData (not base64 in source)NetworkPolicy (k8s/networkpolicy.yml):
============================================================ PHASE 4 — HELM CHART (if --helm) ============================================================
Generate Helm chart structure under helm/{app-name}/:
Chart.yaml, values.yaml, values-dev.yaml, values-staging.yaml, values-prod.yamltemplates/: deployment, service, ingress, hpa, pdb, configmap, secret, serviceaccount, networkpolicy, _helpers.tpl, NOTES.txtvalues.yaml — parameterize all environment-specific values:
image.repository, image.tag, image.pullPolicyreplicaCount, resources.requests, resources.limitsingress.enabled, ingress.hosts, ingress.tlsautoscaling.enabled, autoscaling.minReplicas, autoscaling.maxReplicasenv as key-value map_helpers.tpl — standard helper templates: fullname, name, chart, labels, selectorLabels
============================================================ PHASE 5 — KUSTOMIZE (if --kustomize) ============================================================
Generate Kustomize structure under k8s/:
base/ with kustomization.yaml and all core manifestsoverlays/dev/ — 1 replica, lower resources, debug loggingoverlays/staging/ — 2 replicas, production-like resources, info loggingoverlays/prod/ — 3+ replicas, full resources, warn logging, PDB enabled============================================================ PHASE 6 — ISTIO / SERVICE MESH (if --istio) ============================================================
sidecar.istio.io/inject: "true"istio-injection: enabledVirtualService for traffic routingDestinationRule for connection pool settingsPeerAuthentication for mTLS (STRICT mode)============================================================ PHASE 7 — ARGOCD (if --argocd) ============================================================
Generate argocd/application.yml:
targetRevision: HEAD============================================================ SELF-HEALING VALIDATION (max 2 iterations) ============================================================
After completing deployment/infrastructure changes, validate:
IF STILL FAILING after 2 iterations:
============================================================ OUTPUT ============================================================
## Kubernetes Manifests Generated
### Files Created
{list all generated files with one-line descriptions}
### Resource Summary
| Resource | Name | Key Settings |
|----------|------|--------------|
| Namespace | {ns} | -- |
| Deployment | {name} | {replicas} replicas, {memory} memory |
| Service | {name} | ClusterIP, port {port} |
| Ingress | {name} | {domain}, TLS enabled |
| HPA | {name} | {min}-{max} replicas |
| PDB | {name} | minAvailable: 1 |
### Apply Commands
kubectl apply -f k8s/namespace.yml
kubectl apply -f k8s/
### Pre-Apply Checklist
- [ ] Replace placeholder secrets in k8s/secret.yml
- [ ] Verify container image is pushed to registry
- [ ] Ensure namespace exists in target cluster
- [ ] Configure cert-manager ClusterIssuer if using TLS
- [ ] Review resource limits for your workload============================================================ NEXT STEPS ============================================================
deploy/docker if needed)kubectl apply -f k8s/ -n {namespace}kubectl get pods -n {namespace}kubectl describe pod -n {namespace}--argocd)============================================================ SELF-EVOLUTION TELEMETRY ============================================================
After producing output, record execution metadata for the /evolve pipeline.
Check if a project memory directory exists:
~/.claude/projects/skill-telemetry.md in that memory directoryEntry format:
### /k8s — {{YYYY-MM-DD}}
- Outcome: {{SUCCESS | PARTIAL | FAILED}}
- Self-healed: {{yes — what was healed | no}}
- Iterations used: {{N}} / {{N max}}
- Bottleneck: {{phase that struggled or "none"}}
- Suggestion: {{one-line improvement idea for /evolve, or "none"}}Only log if the memory directory exists. Skip silently if not found. Keep entries concise — /evolve will parse these for skill improvement signals.
============================================================ DO NOT ============================================================
apiVersion: extensions/v1beta1 — use current stable APIslatest tag in deployment manifests — use specific tags or SHA digestsreplicas in Deployment when HPA is enabled (HPA manages replicas)hostNetwork: true or hostPort without explicit justificationprivileged: true in security contextLoadBalancer service type without considering cost — prefer ClusterIP + Ingress~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.