.cursor/skills/release-workflow/SKILL.md
Reference for building, releasing, publishing images, and deploying kubectl-mtv. Use when creating releases, building binaries or container images, deploying to OpenShift, or updating the Krew plugin index.
npx skillsauth add yaacov/kubectl-mtv release-workflowInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
| Command | Purpose |
|---------|---------|
| make kubectl-mtv | Build for current platform |
| make build-all | Build all platforms (linux/darwin amd64+arm64, windows/amd64) |
| make dist-all | Build all + create .tar.gz/.zip archives + .sha256sum checksums |
| make dist | Build + tarball for current platform only |
Version is set via VERSION env var or defaults to git describe:
make dist-all VERSION=v0.5.0
| Command | Purpose |
|---------|---------|
| make image-build-all | Build container images (amd64 + arm64) |
| make image-push-all | Push images + create multi-arch manifest |
Default image: quay.io/yaacov/kubectl-mtv-mcp-server.
The Containerfile is a multi-stage build that compiles the Go binary and produces a minimal image.
Creating a GitHub release triggers .github/workflows/release.yml:
make dist-all with the release tag as VERSION.softprops/action-gh-release.krew-release-bot to update the Krew plugin index..krew.yaml is a template processed by krew-release-bot. It defines:
mtvThe bot automatically submits a PR to the krew-index repo when a release is created.
Deploy manifests live in deploy/:
| File | Purpose |
|------|---------|
| mcp-server.yaml | ServiceAccount + Deployment + Service for MCP server |
| mcp-route.yaml | OpenShift Route with TLS edge termination |
| olsconfig-patch.yaml | Registers MCP server with OpenShift Lightspeed |
| Command | Purpose |
|---------|---------|
| make deploy | Deploy MCP server (SA + Deployment + Service) |
| make undeploy | Remove MCP server |
| make deploy-route | Create the Route |
| make undeploy-route | Remove the Route |
| make deploy-olsconfig | Register with Lightspeed |
| make undeploy-olsconfig | Unregister from Lightspeed |
| make deploy-all | Deploy everything |
| make undeploy-all | Remove everything |
The MCP server deploys to the openshift-mtv namespace. Key environment variables in the Deployment:
MCP_HOST, MCP_PORT -- listen addressMCP_KUBE_SERVER -- K8s API server URLMCP_READ_ONLY -- disable write operationsMCP_OUTPUT_FORMAT -- default output format (json/text)MCP_MAX_RESPONSE_CHARS -- truncation limitPush to main with changes in guide/, _config.yml, _includes/, or Gemfile triggers .github/workflows/pages.yml:
make lint and make test pass.v0.5.0).make image-build-all && make image-push-all.make deploy.development
Step-by-step guide for updating the kubev2v/forklift Go dependency in kubectl-mtv. Use when bumping the forklift version, syncing settings or CRD types, or checking for upstream changes.
tools
Guide for writing and running tests in kubectl-mtv, including Go unit tests, MCP e2e tests (Python/pytest), and linting. Use when adding tests, running the test suite, or debugging test failures.
tools
Guide for adding or modifying MCP tools and understanding command discovery in kubectl-mtv. Use when working on the MCP server, adding new tools, or changing how commands are exposed to AI assistants.
documentation
Guide for adding and editing chapters in the kubectl-mtv technical guide (Jekyll + GitHub Pages). Use when writing documentation, adding chapters, or updating the guide table of contents.