Help us improve
Share bugs, ideas, or general feedback.
From k8s
Provides Tiltfile, Makefile, and Kustomize templates for Kubernetes operator dev loops with kind clusters, live updates, and controller-gen.
npx claudepluginhub sagart-cactus/claude-k8s-plugin --plugin k8sHow this skill is triggered — by the user, by Claude, or both
Slash command
/k8s:k8s-templatesThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Starter templates for the dev loop. Adapt paths and names to your project.
Scaffolds Kubernetes operators: CRDs, Go controllers, webhooks via Kubebuilder; sets up Tilt dev loop, Kind clusters, Kustomize for fast iteration and validation.
Configures Tiltfiles in Starlark for Kubernetes local development, sets up live updates and docker_builds, manages k8s_resources and local_resources, debugs Tilt CLI like tilt up/down/ci, views logs, triggers rebuilds.
Customizes Kubernetes configurations without templates using Kustomize bases, overlays, patches, generators for configmaps/secrets, labels, images, and replicas. Includes build/apply commands and best practices.
Share bugs, ideas, or general feedback.
Starter templates for the dev loop. Adapt paths and names to your project.
.PHONY: dev kind deploy verify prereqs generate manifests
# Start Tilt dev loop
dev:
tilt up
# Create kind cluster
kind:
./scripts/setup-kind.sh
# Deploy dev overlay
deploy:
./scripts/deploy-dev.sh
# Verify deployment
verify:
./scripts/verify-dev.sh
# Check prerequisites
prereqs:
./scripts/prereqs.sh
# Generate deepcopy
generate:
go generate ./...
# Generate CRD manifests
manifests:
controller-gen rbac:roleName=manager-role crd webhook paths="./..." output:crd:artifacts:config=config/crd/bases
config/dev/kustomization.yamlapiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../default
patchesStrategicMerge:
- manager_dev_patch.yaml
config/dev/manager_dev_patch.yamlapiVersion: apps/v1
kind: Deployment
metadata:
name: controller-manager
namespace: system
spec:
replicas: 1
template:
spec:
containers:
- name: manager
image: local/dev-manager:dev
args:
- --leader-elect=false
Key dev overlay settings:
# Safety: only allow kind clusters
allow_k8s_contexts('kind-kind')
# Apply kustomize manifests
k8s_yaml(kustomize('config/dev'))
# Local compile step
local_resource(
'build-manager',
'go build -o bin/manager ./cmd',
deps=['cmd', 'api', 'internal', 'pkg'],
)
# Image with live update to sync binary
docker_build(
'local/dev-manager',
'.',
only=['bin/manager'],
live_update=[
sync('bin/manager', '/manager'),
run('pkill -f /manager || true'),
],
)
# Associate image with k8s resource
k8s_resource('controller-manager', image='local/dev-manager', deps=['build-manager'])
allow_k8s_contexts enforces the kind-only safety guardrail.'./cmd' to match your project's main package path./manager as PID 1, pkill causes a restart.deps arrays to match your project structure.FROM gcr.io/distroless/static:nonroot
WORKDIR /
COPY bin/manager /manager
USER 65532:65532
ENTRYPOINT ["/manager"]
This Dockerfile is only used for the initial image build. After that, Tilt live-updates the binary directly.