K8s
Open registry of community-contributed AI coding skills (SKILL.md files) — daily-synced to skills-hub.ai. Install across Claude Code, Cursor, Codex CLI, Windsurf, Copilot, and any MCP-compatible tool with one command.
npx -y skills add tinh2/skills-hub-registry --skill k8sAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 8 stars8 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Generate production-grade Kubernetes manifests — Deployments with probes and security contexts, Services, Ingress with TLS, HPA, PDB, NetworkPolicy, ConfigMaps, Secrets — with optional Helm charts, Kustomize overlays, Istio mesh, and ArgoCD GitOps
SKILL.md
11.2 KB, ~2.6k tokens by cl100k_base, as published. Nobody here has run it
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/prod- A specific resource to generate:
deployment,service,ingress,hpa,configmap,secret,pdb - If no arguments, generate the full manifest set as plain YAML
============================================================ PHASE 1 — APPLICATION ANALYSIS
Scan the project to determine Kubernetes requirements:
Container image:
- Check for existing Dockerfile — extract EXPOSE port, HEALTHCHECK, CMD
- If no Dockerfile, note that one is needed (reference
deploy/dockerskill) - Determine image name from: git remote URL, package.json name, go.mod module
Ports and protocols:
- Read application config for listen port (default: 3000/8080)
- Check for gRPC (protobuf files), WebSocket endpoints, metrics endpoint (
/metrics)
Resource requirements — estimate based on stack:
- Node.js: 128Mi-512Mi memory, 100m-500m CPU
- Go: 64Mi-256Mi memory, 50m-250m CPU
- Java/Spring: 512Mi-1Gi memory, 250m-1000m CPU
- Python: 128Mi-512Mi memory, 100m-500m CPU
Dependencies:
- Database: detected from Prisma, SQLAlchemy, GORM, etc.
- Cache: Redis/Memcached references
- Message queues: RabbitMQ, Kafka, NATS
- External services: API calls, third-party integrations
Health endpoints:
- Check for
/health,/healthz,/ready,/readyz,/live,/livez - If none found, note to create them
Environment variables:
- Scan for
process.env.,os.Getenv,os.environreferences - Categorize as: config (ConfigMap) vs secrets (Secret)
============================================================ PHASE 2 — GENERATE NAMESPACE AND RBAC
Create k8s/namespace.yml with standard Kubernetes labels:
app.kubernetes.io/nameapp.kubernetes.io/managed-by: skill-deploy-k8s
Create 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/v1- Minimum 2 replicas for HA
- Rolling update strategy:
maxSurge: 1,maxUnavailable: 0 - Pod anti-affinity: prefer spreading across nodes
- Resource requests AND limits (always set both)
- Liveness probe: HTTP GET on health endpoint,
initialDelaySeconds: 15,periodSeconds: 10 - Readiness probe: HTTP GET on ready endpoint,
initialDelaySeconds: 5,periodSeconds: 5 - Startup probe (for slow-starting apps like Java):
failureThreshold: 30,periodSeconds: 10 terminationGracePeriodSeconds: 30- Security context:
runAsNonRoot: true,runAsUser: 1001,fsGroup: 1001,seccompProfile: RuntimeDefault,allowPrivilegeEscalation: false,readOnlyRootFilesystem: true,capabilities.drop: ["ALL"] - Environment from ConfigMap and Secret refs
- Image pull policy:
IfNotPresentfor tagged,Alwaysforlatest
Service (k8s/service.yml):
type: ClusterIP(default — use Ingress for external access)- Target port matching container port
- Named port for service mesh compatibility
Ingress (k8s/ingress.yml, if domain provided):
networking.k8s.io/v1- TLS with cert-manager annotation:
cert-manager.io/cluster-issuer: letsencrypt-prod - nginx SSL redirect:
nginx.ingress.kubernetes.io/ssl-redirect: "true" - Path-based routing (
/-> service)
HPA (k8s/hpa.yml):
autoscaling/v2- Min replicas: 2, Max replicas: 10
- CPU target: 70%, Memory target: 80%
- Scale-down stabilization: 300s (prevent flapping)
- Scale-up stabilization: 60s
- Scale-down policy: max 25% reduction per 60s
PodDisruptionBudget (k8s/pdb.yml):
minAvailable: 1for small replica counts
ConfigMap (k8s/configmap.yml):
- Non-sensitive configuration values extracted from env analysis
Secret (k8s/secret.yml):
- Placeholder secret with
stringData(not base64 in source) - Clearly marked as "REPLACE BEFORE APPLYING"
NetworkPolicy (k8s/networkpolicy.yml):
- Default deny ingress
- Allow ingress only from ingress controller namespace
- Allow egress to database/cache services and DNS (kube-dns port 53)
============================================================ 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.txt
values.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.maxReplicasenvas key-value map
_helpers.tpl — standard helper templates: fullname, name, chart, labels, selectorLabels
============================================================ PHASE 5 — KUSTOMIZE (if --kustomize)
Generate Kustomize structure under k8s/:
base/withkustomization.yamland 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)
- Pod annotation:
sidecar.istio.io/inject: "true" - Namespace label:
istio-injection: enabled - Generate
VirtualServicefor traffic routing - Generate
DestinationRulefor connection pool settings - Generate
PeerAuthenticationfor mTLS (STRICT mode)
============================================================ PHASE 7 — ARGOCD (if --argocd)
Generate argocd/application.yml:
- Source from git remote with
targetRevision: HEAD - Path to k8s/ or helm/ directory
- Sync policy: automated with prune and self-heal enabled
============================================================ SELF-HEALING VALIDATION (max 2 iterations)
After completing deployment/infrastructure changes, validate:
- Verify all generated files are syntactically valid (YAML, JSON, HCL, Dockerfile).
- Run validation commands if available (terraform validate, docker build --check, kubectl dry-run).
- Verify no secrets, credentials, or sensitive values are hardcoded.
- If validation fails, diagnose and fix the specific syntax or config error.
- Repeat up to 2 iterations.
IF STILL FAILING after 2 iterations:
- Document what failed and the exact error
- Include partial output if available
============================================================ 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
- Build and push the container image (run
deploy/dockerif needed) - Replace placeholder secrets with real values (or use external secrets operator)
- Apply manifests to a dev cluster first:
kubectl apply -f k8s/ -n {namespace} - Verify pods are running:
kubectl get pods -n {namespace} - Check probes:
kubectl describe pod -n {namespace} - Consider GitOps with ArgoCD or Flux for automated deployments (use
--argocd)
============================================================ SELF-EVOLUTION TELEMETRY
After producing output, record execution metadata for the /evolve pipeline.
Check if a project memory directory exists:
- Look for the project path in
~/.claude/projects/ - If found, append to
skill-telemetry.mdin that memory directory
Entry 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
- Do NOT use
apiVersion: extensions/v1beta1— use current stable APIs - Do NOT set resource limits without requests (always set both)
- Do NOT use
latesttag in deployment manifests — use specific tags or SHA digests - Do NOT store real secrets in YAML files committed to git
- Do NOT set
replicasin Deployment when HPA is enabled (HPA manages replicas) - Do NOT use
hostNetwork: trueorhostPortwithout explicit justification - Do NOT use
privileged: truein security context - Do NOT skip liveness/readiness probes — they are required for production
- Do NOT use
LoadBalancerservice type without considering cost — preferClusterIP+ Ingress - Do NOT overwrite existing manifests without reading them first
- Do NOT generate manifests for services not detected in the project
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.