Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Operates local Kubernetes clusters with Minikube for development and testing. Use when setting up local K8s, deploying applications locally, or debugging K8s issues. Covers Minikube, kubectl essentials, local image loading, and networking.
.claude/skills/aiskillstore-operating-k8s-local/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 110% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 92% | 0% |
| case-02 | ✓→✓ | = Same ✓ | 60% | 0% |
| case-04 | ✓→✓ | = Same ✓ | 69% | 0% |
| case-05 | ✓→✓ | = Same ✓ | 75% | 0% |
bash# Start cluster with resources minikube start --memory=8192 --cpus=4 # Enable essential addons minikube addons enable ingress minikube addons enable metrics-server # Point Docker to Minikube eval $(minikube docker-env) # Build and deploy docker build -t myapp:local . kubectl apply -f k8s/
bashminikube start # Start with defaults minikube start --memory=8192 --cpus=4 # With resources minikube start --driver=docker # Specific driver minikube status # Check status minikube stop # Stop (preserves state) minikube delete # Delete completely
bashminikube start -p my-cluster # Named cluster minikube profile my-cluster # Switch clusters minikube profile list # List all
bashminikube addons list # List available minikube addons enable ingress # REQUIRED for external access minikube addons enable metrics-server # For kubectl top minikube addons enable dashboard # Web UI minikube addons enable storage-provisioner # For PVCs
bash# Method 1: NodePort minikube service my-service --url # Method 2: LoadBalancer (requires tunnel) minikube tunnel # Run in separate terminal # Method 3: Port forward kubectl port-forward svc/my-service 8080:80
bash# Point to Minikube's Docker eval $(minikube docker-env) # Build directly into Minikube docker build -t my-app:local . # Use imagePullPolicy: Never in manifests # Reset to local Docker eval $(minikube docker-env -u)
bashkubectl config current-context # Current context kubectl config get-contexts # List all kubectl config use-context minikube # Switch kubectl config set-context --current --namespace=my-ns # Set default ns
bashkubectl get pods # Current namespace kubectl get pods -A # All namespaces kubectl get pods -o wide # With node/IP kubectl get all # All resources kubectl describe pod my-pod # Detailed info kubectl get events --sort-by='.lastTimestamp' # Recent events
bashkubectl logs my-pod # Current logs kubectl logs my-pod -f # Follow kubectl logs my-pod -c container # Specific container kubectl logs my-pod --previous # After crash kubectl logs my-pod --tail=50 # Last 50 lines
bashkubectl apply -f manifest.yaml kubectl create deployment nginx --image=nginx kubectl create configmap my-config --from-literal=key=value kubectl create secret generic my-secret --from-literal=password=secret # Generate YAML kubectl create deployment nginx --image=nginx --dry-run=client -o yaml
bashkubectl edit deployment my-deploy kubectl scale deployment my-deploy --replicas=3 kubectl set image deployment/my-deploy container=image:v2 kubectl rollout restart deployment/my-deploy
bashkubectl exec -it my-pod -- /bin/sh # Shell into pod kubectl exec my-pod -- env # Run command kubectl port-forward pod/my-pod 8080:80 # Forward port kubectl top pods # Resource usage kubectl top nodes
yamlapiVersion: apps/v1 kind: Deployment metadata: name: my-deploy spec: replicas: 3 selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: main image: my-app:local imagePullPolicy: Never # For local images ports: - containerPort: 8000 livenessProbe: httpGet: path: /health port: 8000 initialDelaySeconds: 30 readinessProbe: httpGet: path: /health port: 8000 initialDelaySeconds: 5
yamlapiVersion: v1 kind: Service metadata: name: my-service spec: type: ClusterIP # or NodePort, LoadBalancer selector: app: my-app ports: - port: 80 targetPort: 8000
yamlapiVersion: v1 kind: ConfigMap metadata: name: my-config data: DATABASE_HOST: postgres DATABASE_PORT: "5432" --- apiVersion: v1 kind: Secret metadata: name: my-secret type: Opaque stringData: password: mysecretpassword
yamlapiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: my-ingress spec: ingressClassName: nginx rules: - host: myapp.local http: paths: - path: / pathType: Prefix backend: service: name: my-service port: number: 80
bash# 1. Start Minikube minikube start --memory=8192 --cpus=4 # 2. Enable addons minikube addons enable ingress minikube addons enable metrics-server # 3. Point to Minikube Docker eval $(minikube docker-env) # 4. Build images docker build -t myapp/api:local ./api docker build -t myapp/web:local ./web # 5. Deploy kubectl apply -f k8s/ # 6. Access minikube service myapp-web --url # Or with ingress: echo "$(minikube ip) myapp.local" | sudo tee -a /etc/hosts
bash# Pod not starting? kubectl describe pod my-pod # Check Events section # Container crashing? kubectl logs my-pod --previous # Logs from crashed container # Network issues? kubectl exec -it my-pod -- nslookup my-service kubectl exec -it my-pod -- wget -qO- http://my-service:80 # Resource issues? kubectl top pods kubectl top nodes
Run: python scripts/verify.py
containerizing-applications - Docker and Helm chartsdeploying-cloud-k8s - Cloud Kubernetes deployment| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 69,214 | 12,189 | -82% | 1 | 1 | 0% | 1,402 | 2,944 | +110% | 0 | 0 | — |
case-02 | pass→pass | 43,566 | 45,189 | +4% | 1 | 1 | 0% | 2,189 | 3,499 | +60% | 0 | 0 | — |
case-03 | fail→pass | 32,113 | 29,928 | -7% | 1 | 1 | 0% | 1,091 | 2,096 | +92% | 0 | 0 | — |
case-04 | pass→pass | 14,968 | 16,970 | +13% | 1 | 1 | 0% | 1,695 | 2,864 | +69% | 0 | 0 | — |
case-05 | pass→pass | 15,695 | 22,359 | +42% | 1 | 1 | 0% | 1,374 | 2,406 | +75% | 0 | 0 | — |
case-06 | pass→pass | 12,020 | 10,922 | -9% | 1 | 1 | 0% | 1,122 | 2,283 | +103% | 0 | 0 | — |
case-07 | pass→pass | 8,794 | 11,135 | +27% | 1 | 1 | 0% | 374 | 2,072 | +454% | 0 | 0 | — |
case-08 | pass→pass | 15,018 | 14,349 | -4% | 1 | 1 | 0% | 1,717 | 2,613 | +52% | 0 | 0 | — |
case-09 | pass→pass | 13,972 | 8,597 | -38% | 1 | 1 | 0% | 974 | 2,021 | +107% | 0 | 0 | — |
case-10 | pass→pass | 11,895 | 14,165 | +19% | 1 | 1 | 0% | 1,470 | 2,572 | +75% | 0 | 0 | — |
case-11 | pass→pass | 8,670 | 6,377 | -26% | 1 | 1 | 0% | 581 | 1,864 | +221% | 0 | 0 | — |
case-12 | pass→pass | 12,279 | 3,668 | -70% | 1 | 1 | 0% | 956 | 2,045 | +114% | 0 | 0 | — |
case-13 | pass→pass | 7,968 | 9,412 | +18% | 1 | 1 | 0% | 764 | 2,153 | +182% | 0 | 0 | — |
case-14 | pass→pass | 9,718 | 5,670 | -42% | 1 | 1 | 0% | 1,107 | 2,294 | +107% | 0 | 0 | — |
case-15 | pass→pass | 18,565 | 10,783 | -42% | 1 | 1 | 0% | 1,050 | 2,146 | +104% | 0 | 0 | — |
case-16 | pass→pass | 13,071 | 11,451 | -12% | 1 | 1 | 0% | 2,038 | 3,136 | +54% | 0 | 0 | — |
case-17 | pass→pass | 6,224 | 3,438 | -45% | 1 | 1 | 0% | 595 | 2,043 | +243% | 0 | 0 | — |
case-18 | pass→pass | 19,454 | 6,058 | -69% | 1 | 1 | 0% | 1,551 | 2,764 | +78% | 0 | 0 | — |
case-19 | pass→pass | 7,606 | 4,285 | -44% | 1 | 1 | 0% | 820 | 2,033 | +148% | 0 | 0 | — |
case-20 | fail→fail | 20,998 | 18,818 | -10% | 1 | 1 | 0% | 3,083 | 4,246 | +38% | 0 | 0 | — |
case-21 | fail→fail | 21,186 | 18,681 | -12% | 1 | 1 | 0% | 2,861 | 4,139 | +45% | 0 | 0 | — |
case-22 | fail→fail | 22,053 | 24,743 | +12% | 1 | 1 | 0% | 4,175 | 5,549 | +33% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +9 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.