K8s quality checklist
Skill Sagart-cactus/claude-k8s-plugin/skills/k8s-quality-checklist
Safety, CRD, webhook, RBAC, and dev loop checklistsFrom its SKILL.md
npx -y skills add Sagart-cactus/claude-k8s-plugin --skill k8s-quality-checklistAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
SKILL.md
3.1 KB, as published. Nobody here has run it
Kubernetes Operator Quality Checklist
Use this checklist to evaluate operator quality before considering it production-ready or before each iteration.
Safety (dev-only)
- Target cluster is kind or an explicitly allowed dev cluster
- Leader election disabled for dev overlay
- Single replica manager in dev
- Webhook timeouts are short for dev (e.g., 10s)
- Webhook only mutates resources it owns or is explicitly allowed to modify
- No destructive operations without explicit user confirmation
CRD Quality
- Structural schema is valid and complete
- Required fields are properly marked
- Default values are defined for optional fields where sensible
- Status subresource is enabled when status is used
- Printer columns defined for useful
kubectl getoutput - CRD categories are set for discoverability
- Validation markers enforce all invariants from requirements
Webhook Quality
- Validating webhook covers all invariants
- Mutating webhook only defaults safe, optional fields
- Immutable fields are enforced on update
- Cross-field validation is implemented
- Clear error messages are returned on rejection
- Failure policy is appropriate for the environment
- Certificates exist and are correctly mounted
- Webhook service endpoints resolve
RBAC Quality
- Minimal verbs: only what the controller actually needs
- Minimal resources: no wildcards unless justified
- No unnecessary cluster-wide permissions
- Separate roles for manager and webhook if they have different needs
- ServiceAccount is dedicated (not
default)
Controller Quality
- Reconcile loop is idempotent
- Owner references set on all created resources
- Finalizers used for cleanup of external resources
- Status conditions follow standard types (Ready, Progressing, Degraded)
- Events recorded for significant state changes
- Requeue with backoff for transient errors
- No long-running operations in reconcile (use async patterns)
Fast Loop Quality
make dev/tilt upstarts without errors- Local compile succeeds
- Binary sync into running pod works reliably
- Process restart is reliable after sync
- Logs show new version after code edit
- CRD changes are applied through Kustomize automatically
- Webhook changes take effect without manual restart
Test Quality
- Unit tests for core reconcile logic (table-driven)
- Envtest or integration tests for webhook validation
- Example CR manifests for manual testing (valid and invalid)
- Tests cover error paths and edge cases
Troubleshooting Guide
When things go wrong:
- Tilt sync errors: Check Tilt UI or logs for build/sync failures
- Pod crash loops:
kubectl logs -n <ns> <pod> --previous - Webhook failures: Check webhook service endpoints and certificate secrets
- CRD not applied:
kubectl get crd <name> -o yamland check for schema errors - RBAC errors:
kubectl auth can-i --as system:serviceaccount:<ns>:<sa> <verb> <resource> - Reconcile not triggering: Check controller logs for watch errors, verify RBAC