Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Authors production-grade Kubernetes manifests — Deployments, Services, Ingress, probes, resource requests/limits, security contexts, and ConfigMaps/Secrets wiring — following hardening and reliability best practices. Use this skill when the user asks to "write a Kubernetes deployment", "create a k8s manifest", "add liveness/readiness probes", "set resource limits", "harden a pod securityContext", "expose a service", "write a HorizontalPodAutoscaler", or otherwise produce or review YAML for deplo
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 46% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 62% | 0% |
| case-17 | ✗→✓ | ▲ Improved | 135% | 0% |
| case-08 | ✓→✗ | ▼ Worse | 74% | 0% |
| case-02 | ✓→✓ | = Same ✓ | 76% | 0% |
Produce correct, secure, and reliable Kubernetes YAML for deploying stateless and stateful workloads. This skill turns an application description into a complete manifest set: workload (Deployment/StatefulSet/CronJob), Service, optional Ingress, probes, resource governance, security context hardening, and configuration wiring.
Keywords: kubernetes, k8s, manifest, yaml, deployment, statefulset, service, ingress, liveness probe, readiness probe, startup probe, resources requests limits, securityContext, runAsNonRoot, podSecurityStandards, HPA, autoscaling, ConfigMap, Secret, PodDisruptionBudget, rollout, kubectl, helm, kustomize.
This skill is opinionated toward the restricted Pod Security Standard and production SRE defaults. Loosen only when the user has a concrete reason.
:latest), listening port(s), stateless vs stateful, replica count, environment/config inputs, secrets, and exposure (cluster-internal, Ingress, LoadBalancer). If the user omits something, apply the safe defaults in references/best-practices.md and state the assumption.Deployment.templates/deployment.yaml. Always fill in: explicit labels, image with pinned tag, resource requests AND limits, all three probe types where appropriate, a hardened securityContext, and a RollingUpdate strategy.templates/service.yaml. Match selector to the Pod template labels exactly. Default to ClusterIP; use LoadBalancer/NodePort only when externally requested.references/resource-catalog.md.envFrom/env (ConfigMap) and secrets via secretKeyRef or mounted volumes. Never hardcode secrets in the manifest.scripts/validate_manifest.py to catch the most common production mistakes (missing limits, :latest, root user, no probes, mismatched selectors). If kubectl is available, also run kubectl apply --dry-run=server and kubectl explain for field checks.| Situation | Kind | |-----------|------| | Stateless HTTP/gRPC API or web app | Deployment | | Needs stable network identity / ordered start / per-pod storage (DBs, Kafka) | StatefulSet | | One pod per node (log/metrics agents, CNI) | DaemonSet | | Run-to-completion task | Job | | Scheduled run-to-completion task | CronJob |
Probes are the most common source of production incidents. Apply this:
Probe handler choice: prefer httpGet for HTTP servers, grpc for gRPC, exec only as a last resort (forks a process each check).
See worked numbers and timing math in references/best-practices.md.
Every production Pod should set, at the container level unless noted:
yamlsecurityContext: runAsNonRoot: true runAsUser: 10001 # any non-zero UID allowPrivilegeEscalation: false readOnlyRootFilesystem: true capabilities: drop: ["ALL"] seccompProfile: # pod-level also acceptable type: RuntimeDefault
readOnlyRootFilesystem: true requires mounting emptyDir volumes for any writable paths (e.g. /tmp, cache dirs). The template shows this pattern.
See examples/web-api.md for a full request → manifest walkthrough: a Node.js API with config, secrets, an HPA, a PDB, and an Ingress — including the reasoning for every non-default field.
imagePullPolicy: IfNotPresent for pinned tags.app.kubernetes.io/*) so Services, HPAs, and dashboards select consistently.RollingUpdate with maxUnavailable: 0 for zero-downtime when you have spare capacity.scripts/validate_manifest.py before shipping.:latest tags — non-reproducible rollouts and no rollback guarantee.BestEffort QoS and are evicted first.kubectl get endpoints is empty.readOnlyRootFilesystem: true without writable emptyDir mounts — app crashes trying to write /tmp.initialDelaySeconds on liveness for slow apps — use a startupProbe instead.maxUnavailable: 1 — guaranteed downtime on every rollout and node drain.Other measured skills in the registry, with their headline benchmark lift.