/build-cpo-image
Build and push control-plane-operator container image. Auto-applies when testing CPO changes that require deploying to a live cluster.
$ npx -y skills add openshift/hypershift --skill build-cpo-image --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/build-cpo-image
Context preview
The summary Claude sees to decide when to auto-load this skill.
Build and push control-plane-operator container image. Auto-applies when testing CPO changes that require deploying to a live cluster.
SKILL.md
build-cpo-image.SKILL.mdname: Build CPO Image
description: "Build and push control-plane-operator container image. Auto-applies when testing CPO changes that require deploying to a live cluster."
Build Control-Plane-Operator Image
This skill enables building and pushing custom control-plane-operator (CPO) images for testing changes in a live HyperShift environment.
When to Use This Skill
This skill automatically applies when:
- You've made changes to code in `control-plane-operator/`
- You need to test CPO changes against a live cluster
- The user asks to build/push a CPO image
- You need to iterate on CPO fixes with e2e tests
Prerequisites
Source the environment file before using this skill:
source dev/claude-env.sh
Image Registry Configuration
Environment variables from `dev/claude-env.sh`:
| Variable | Description | |----------|-------------| | `CPO_IMAGE_REPO` | Container registry for CPO images | | `RUNTIME` | Container runtime (podman/docker) |
Building the CPO Image
Step 1: Generate a Unique Tag
Use a tag that identifies the change (branch name, feature, or timestamp):
# Option 1: Use branch name
TAG=$(git rev-parse --abbrev-ref HEAD | tr '/' '-')
# Option 2: Use short commit hash
TAG=$(git rev-parse --short HEAD)
# Option 3: Use descriptive name + number for iterations
TAG="feature-name-1"
Step 2: Build the Image
The CPO image uses `Dockerfile.control-plane`:
$RUNTIME build -f Dockerfile.control-plane --platform linux/amd64 -t $CPO_IMAGE_REPO:$TAG .
**Note**: The build runs `make control-plane-operator` and `make control-plane-pki-operator` inside the container, so you don't need to pre-build locally.
Step 3: Push the Image
$RUNTIME push $CPO_IMAGE_REPO:$TAG
Quick One-Liner
Build and push in one command:
TAG="my-fix-1" && $RUNTIME build -f Dockerfile.control-plane --platform linux/amd64 -t $CPO_IMAGE_REPO:$TAG . && $RUNTIME push $CPO_IMAGE_REPO:$TAG
Iteration Workflow
When iterating on CPO fixes:
1. Make code changes in `control-plane-operator/` 2. Build and push image with incremented tag (e.g., `fix-1`, `fix-2`, `fix-3`) 3. Run e2e test with new image 4. Analyze results 5. Repeat until test passes
What Gets Built
The `Dockerfile.control-plane` builds:
- `control-plane-operator` binary
- `control-plane-pki-operator` binary
Both are included in the final image.
Image Labels
The CPO image includes important capability labels that HyperShift uses:
- `io.openshift.hypershift.control-plane-operator-subcommands=true`
- `io.openshift.hypershift.control-plane-operator.v2-isdefault=true`
- Various other feature capability labels
Troubleshooting
Build Fails
- Check that vendored dependencies are up to date: `go mod vendor`
- Ensure code compiles locally: `make control-plane-operator`
Push Fails
- Verify registry login: `$RUNTIME login quay.io`
- Check repository permissions
Image Not Used by Cluster
- Verify the image tag is correct in e2e flags
- Check that the image was pushed successfully
- Ensure the cluster can pull from the registry (public or authenticated)
Read more
name: Build CPO Image description: "Build and push control-plane-operator container image. Auto-applies when testing CPO changes that require deploying to a live cluster."
Build Control-Plane-Operator Image
This skill enables building and pushing custom control-plane-operator (CPO) images for testing changes in a live HyperShift environment.
When to Use This Skill
This skill automatically applies when:
- You've made changes to code in `control-plane-operator/`
- You need to test CPO changes against a live cluster
- The user asks to build/push a CPO image
- You need to iterate on CPO fixes with e2e tests
Prerequisites
Source the environment file before using this skill:
source dev/claude-env.sh
Image Registry Configuration
Environment variables from `dev/claude-env.sh`:
| Variable | Description | |----------|-------------| | `CPO_IMAGE_REPO` | Container registry for CPO images | | `RUNTIME` | Container runtime (podman/docker) |
Building the CPO Image
Step 1: Generate a Unique Tag
Use a tag that identifies the change (branch name, feature, or timestamp):
# Option 1: Use branch name TAG=$(git rev-parse --abbrev-ref HEAD | tr '/' '-') # Option 2: Use short commit hash TAG=$(git rev-parse --short HEAD) # Option 3: Use descriptive name + number for iterations TAG="feature-name-1"
Step 2: Build the Image
The CPO image uses `Dockerfile.control-plane`:
$RUNTIME build -f Dockerfile.control-plane --platform linux/amd64 -t $CPO_IMAGE_REPO:$TAG .
**Note**: The build runs `make control-plane-operator` and `make control-plane-pki-operator` inside the container, so you don't need to pre-build locally.
Step 3: Push the Image
$RUNTIME push $CPO_IMAGE_REPO:$TAG
Quick One-Liner
Build and push in one command:
TAG="my-fix-1" && $RUNTIME build -f Dockerfile.control-plane --platform linux/amd64 -t $CPO_IMAGE_REPO:$TAG . && $RUNTIME push $CPO_IMAGE_REPO:$TAG
Iteration Workflow
When iterating on CPO fixes:
1. Make code changes in `control-plane-operator/` 2. Build and push image with incremented tag (e.g., `fix-1`, `fix-2`, `fix-3`) 3. Run e2e test with new image 4. Analyze results 5. Repeat until test passes
What Gets Built
The `Dockerfile.control-plane` builds:
- `control-plane-operator` binary
- `control-plane-pki-operator` binary
Both are included in the final image.
Image Labels
The CPO image includes important capability labels that HyperShift uses:
- `io.openshift.hypershift.control-plane-operator-subcommands=true`
- `io.openshift.hypershift.control-plane-operator.v2-isdefault=true`
- Various other feature capability labels
Troubleshooting
Build Fails
- Check that vendored dependencies are up to date: `go mod vendor`
- Ensure code compiles locally: `make control-plane-operator`
Push Fails
- Verify registry login: `$RUNTIME login quay.io`
- Check repository permissions
Image Not Used by Cluster
- Verify the image tag is correct in e2e flags
- Check that the image was pushed successfully
- Ensure the cluster can pull from the registry (public or authenticated)
HyperShift is a middleware for hosting OpenShift control planes at scale that solves for cost and time to provision, as well as portability cross cloud with strong separation of concerns between management and workloads.
Repo: openshift/hypershift
Other skills on hypershift.
- /create-cpo-override
Interactively create CPO image overrides — resolves images, verifies fixes, edits overrides.yaml, and prepares a PR
Open skill - /debug-cluster
Provides systematic debugging approaches for HyperShift hosted-cluster issues. Auto-applies when debugging cluster problems, investigating stuck deletions, or troubleshooting control plane issues.
Open skill - /build-ho-image
Build and push hypershift-operator container image. Auto-applies when testing HO changes that require deploying to a live cluster.
Open skill - /create-hc-aws
Create a HyperShift HostedCluster on AWS for development and testing, with optional custom CPO/HO images.
Open skill - /destroy-hc-aws
Destroy a HyperShift HostedCluster and all associated AWS infrastructure (VPC, IAM, Route53, etc.).
Open skill - /e2e-run-aws
Provides the ability to run and iterate on HyperShift e2e tests. Auto-applies when implementing features that require e2e validation, fixing e2e test failures, or working on tasks that need live cluster testing.
Open skill

