rhdh-base-images
Analyzes and updates the `FROM` base images, Node headers, Go toolchain, and `rpms.lock.yaml` files in rhdh, rhdh-operator, and rhdh-must-gather; pin…
Skill by redhat-developer
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/redhat-developer-rhdh-base-images
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: devops
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Shell scripts
Network hosts it talks to 5
access.redhat.com· found in codecodeload.github.com· found in install commandgithub.com· found in codegitlab.cee.redhat.com· found in codemirror.openshift.com· found in code
Files it touches
~/.claude/skills/rhdh-base-images
What's inside
- Skill name
rhdh-base-images- Description
- Analyzes and updates the `FROM` base images, Node headers, Go toolchain, and `rpms.lock.yaml` files in rhdh, rhdh-operator, and rhdh-must-gather; pin plugin-catalog `builder.Containerfile` / `.nvm/` / `konflux.additional-tags`; and bump overlays `versions.json` `node` on `main` or a `release-1.10` branch. Use for weekly base-image maintenance, a UBI or RHEL bump, an RPM lockfile refresh, "which base images are out of date", node-v*-headers.tar.gz, catalog builder FROM, builder PipelineRun BASE_IMAGES, catalog release suffix, overlays Node version, UBI minor skew inside a Containerfile, or an OpenShift clients `N-el9-beta` / `4.21-el9-beta` RPM 404.
- License
- Apache-2.0
- Compatibility
- bash, jq, skopeo, curl, git, python3; podman or docker for toolchain detection; gh or glab for PR/MR creation.
- Instructions
- 125 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (6)
- SKILL.md
- openai.yaml · agents/
- repos.md · references/
- analyze-base-images.sh · scripts/
- base-images-and-rpms.sh · scripts/
- update-base-images.md · workflows/
SKILL.md (first lines)
# RHDH base images Use the bundled scripts instead of reconstructing their repository-specific logic. Repository checkouts are explicit inputs the user names. This skill never discovers another skill's paths. ## Route | Intent | Load or run | |---|---| | Read-only current/latest image scan | `workflows/update-base-images.md`, then `scripts/base-images-and-rpms.sh --analyze ...` | | Explain repository rules | `references/repos.md` | | Preview an update | `workflows/update-base-images.md`, then `scripts/base-images-and-rpms.sh --dry-run ...` | | Update images, lockfiles, Node headers, catalog builder, overlays node, or Go toolchain | `workflows/update-base-images.md` | A scan reports, per repository: every `FROM` image with its current and latest tag, UBI minor skew within a file, Node or Go toolchain drift, the registries and branches it read, and anything it could not read. ## Writing rules Any checkout, branch, file edit, dependency install, commit, push, or PR is a write. Run read-only discovery or `--dry-run` first, then follow `/mutation-gate`: state each operation with its target repository and branch (`rhdh:release-1.10`), the exact command, the change it will land, and what happens to the remaining operations if it fails; get approval for that stated set; execute; then report every operation as completed, failed, or skipped, with the resources it changed and the risks that remain. Installing `rpm-lockfile-prototype`, logging into registries, using `--push`, and opening PRs are each their own operation. Default to local, no-push behavior; do not push directly to protected branches. Verify the branch exists and the working tree is clean before writing. When the user asks to push and open a PR/MR after approval, invoke `/rhdh-pr-mr` by name (or its `create-pr-mr.sh`) instead of hand-rolling `gh pr create` / `glab mr create`. Pass `--issue` when a Jira key is already known; omit it to skip linking. Midstream `updateBaseImages.sh` still uses distgit `createPR.sh` until that path is migrated. ## Repository invariants - Accepted branch selectors are `main` or `release-*`; map them to the documented GitLab scripts branch in `references/repos.md`. - Keep base-image UBI minors aligned with RPM repository URLs. - Before regenerating `rpms.lock.yaml`, bump OpenShift clients `N-el9-beta` `baseurl` values and matching `rhocp-N-for-rhel-9-$basearch-rpms` repoids in `rpms.in.yaml` to the latest **released** 4.y stream that still exists on mirror.openshift.com (for example `4.21-el9-beta` → `4.22-el9-beta`). Released 4.y names come from the product life cycle API linked from https://access.redhat.com/support/policy/updates/openshift#dates. Do not move to an unreleased directory such as `4.23-el9-beta` or `5.1-el9-beta`. If the life cycle fetch fails, or no released 4.y directory is on the mirror, leave `rpms.in.yaml` unchanged. Skip when the file has no such repo. - When a plugin-catalog checkout is in the run, rewrite `build/containerfiles/builder.Containerfile` `/rhocp/4.N/` path segments to that same latest released 4.y (for example `/rhocp/4.21/` → `/rhocp/4.22/`). Leave `ocp-tools` URLs unchanged. Do not rewrite when the life cycle fetch fails. - When that Containerfile changes in the same run, increment its `release="N"` label and the matching `X.Y-N` token in `konflux.additional-tags` once (`release="3"` and `2.2-3` become `release="4"` and `2.2-4`). Leave `version=`, `rhdh.version=`, and `node-v*` to the node-header rewrite. Set `BASE_IMAGES` on every `.tekton/plugin-catalog-builder*.yaml` `build-source-image` task to the Containerfile `FROM` image, inserting the param when it is missing. Do not bump `release` when the Containerfile is unchanged. - When the RPM Containerfile uses `dnf`/`microdnf install --installroot` (operator empty rootfs), regenerate the lockfile with `rpm-lockfile-prototype --bare` so the full closure (glibc, coreutils, bash) is locked. Do not pass `-f`; that loads the UBI rpmdb and omits those packages. Layered installs onto the base image still use `-f`. If the solve fails (`nothing provides`, `conflicting requests`), restore `rpms.lock.yaml` / `rpms.in.yaml` and do not push. - On RHDH, update Node headers when the builder image changes Node. Then, when those checkouts are in scope, pin plugin-catalog `build/containerfiles/builder.Containerfile` FROM to the same UBI Node `tag@sha256`. Catalog headers follow the Node version that Containerfile will run: image `node --version`, or the newer `nodejs` RPM from `dnf repoquery` when the file `dnf`-installs `nodejs` before the headers `RUN`. Do not copy an older rhdh `.nvm/` over that version. Rewrite `konflux.additional-tags` `node-v*` to match the catalog `.nvmrc`, and set overlays `versions.json` `node` to the rhdh `.nvmrc` value. Catalog maps `release-1.Y` → GitLab `rhdh-1.Y-rhel-9` and `release-2.Y` → GitLab `release-2.Y` (using UBI10 / RHEL10). Catalog has no `rpms.lock.yaml`. Do not `[skip-build]` the catalog builder commit. - On rhdh-operator `main`, raise `go.mod` to the Go toolset image when the image is newer. On rhdh-must-gather `main` and `release-2.*`, do the same from the root `Containerfile` `ubi9/go-toolset` or `ubi10/go-toolset` image, inserting a `toolchain` line when `go.mod` has none. Skip must-gather `release-1.*` (no Go module). Never lower `go` or `toolchain` to match an older image; a newer pin (for example from Renovate) is valid. - Exclude RHDH `e2e-tests/` and `.ci/` from image scans. - Ignore `rpm-lockfile-prototype` lines matching `No sources found for` or "no matching sources". Those source RPMs are often unpublished; the binary lockfile is still valid. Do not report them as unread, failed, or remaining risks. Another skill invokes `/rhdh-base-images` by name and uses what it reports; it never reaches for these script paths. `/rhdh-konflux-tasks` does this during a stream Konflux bump so Node headers match the builder image; it passes named checkouts and a `main` or `release-*` selector. ## Completion An analysis is complete when every repository in scope is named with its current and latest tag, UBI skew and toolchain drift are stated or stated as none, and every registry, lockfile, or branch the scan could not read is named as unread instead of reported as current. Filtered `No sources found for` / "no matching sources" lines are not unread and are omitted from the report. An update is complete when the target branch was verified to exist against a clean working tree before any edit, every approved operation has been reported by target and outcome, and the push and PR state is stated explicitly — including "not pushed" when the default local behavior was kept. When Node headers / `.nvmrc` changed, name the plugin-catalog FROM old→new, confirm `grep konflux.additional-tags build/containerfiles/builder.Containerfile` contains `node-v` matching `.nvmrc`, and name the overlays `versions.json`
From redhat-developer/rhdh-skills, Apache-2.0.
More from redhat-developer/rhdh-skills
- 0.641score
rhdh-plugin-nfs-migration
redhat-developer
Converts a legacy Backstage frontend plugin used by Red Hat Developer Hub to the New Frontend System (NFS): replace createPlugin and createRoutableExtension…
SkillAFreshness: A★ 18Claude Code +9 - 0.641score
rhdh-local
redhat-developer
Operates a local Red Hat Developer Hub environment with the rhdh-local-setup customization system: enable or disable dynamic plugins, apply configuration…
SkillAFreshness: A★ 18Claude Code +9 - 0.641score
rhdh-overlay
redhat-developer
Manages the rhdh-plugin-export-overlays repository and Extensions Catalog: onboard plugins, update upstream versions, repair export or publish failures…
SkillAFreshness: A★ 18Claude Code +9 - 0.641score
rhdh-plugin-bug-fix
redhat-developer
Reproduces, diagnoses, and fixes a defect in a Backstage plugin inside the rhdh-plugins or community-plugins repositories: resolve the report from a RHIDP…
SkillAFreshness: A★ 18Claude Code +9 - 0.641score
rhdh-pr-mr
redhat-developer
Pushes a topic branch and opens a GitHub pull request or GitLab CEE merge request for CI and agent automation, then links Jira via /rhdh-jira-link only when…
SkillAFreshness: A★ 18Claude Code +9 - 0.641score
rhdh-jira-create
redhat-developer
Opens new work in RHDH Jira and decides what kind of work it is — Feature or Feature Request in RHDHPLAN, Epic, Story, Task, Spike or Vulnerability in RHIDP…
SkillAFreshness: A★ 18Claude Code +9 - 0.641score
rhdh-jira-link
redhat-developer
Ties a GitHub pull request or GitLab merge request to an RHDH Jira issue in RHIDP, RHDHPLAN, RHDHBUGS, or RHDHSUPP: attach the Jira Web link titled `repo #N…
SkillAFreshness: A★ 18Claude Code +9 - 0.641score
rhdh-plugin-catalog-index-status-and-update-flow
redhat-developer
Reports Red Hat Developer Hub plugin catalog index status for a release branch or x.y.z and updates the downstream quay.io/rhdh/plugin-catalog-index after you…
SkillAFreshness: A★ 18Claude Code +9 - 0.641score
rhdh-konflux-tasks
redhat-developer
Bumps Konflux Tekton task bundle digests in `.tekton` and `.tekton-templates`, applies each task's MIGRATION.md, regenerates PipelineRuns, and checks pins…
SkillAFreshness: A★ 18Claude Code +9 - 0.641score
rhdh-backport
redhat-developer
Automate the RHDH plugin backport process from PR cherry-pick to changelog.
SkillAFreshness: A★ 18Claude Code +9 - 0.641score
rhdh-yarn-bump
redhat-developer
Bumps Yarn Berry across the RHDH repos — rhdh-plugins, rhdh midstream, rhdh-plugin-export-overlays, rhdh-cli, and GitLab CEE rhidp/rhdh and…
SkillAFreshness: A★ 18Claude Code +9 - 0.641score
rhdh-forge
redhat-developer
Reads GitHub and GitLab and constructs unexecuted forge payloads for the other RHDH skills: parse an issue, pull request, or merge request reference, fetch…
SkillAFreshness: A★ 18Claude Code +9
Signals
- Stars
- 18
- Forks
- 40
- Open issues
- 1
- Last commit (this folder)
- Oct 23, 2026 (6 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- Apache-2.0
- Repository
- github.com/redhat-developer/rhdh-skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from redhat-developer
- 0.641score
rhdh-jira-create
redhat-developer
Opens new work in RHDH Jira and decides what kind of work it is — Feature or Feature Request in RHDHPLAN, Epic, Story, Task, Spike or Vulnerability in RHIDP…
SkillAFreshness: A★ 18Claude Code +9 - 0.641score
rhdh-pr-mr
redhat-developer
Pushes a topic branch and opens a GitHub pull request or GitLab CEE merge request for CI and agent automation, then links Jira via /rhdh-jira-link only when…
SkillAFreshness: A★ 18Claude Code +9 - 0.641score
rhdh-plugin-catalog-index-status-and-update-flow
redhat-developer
Reports Red Hat Developer Hub plugin catalog index status for a release branch or x.y.z and updates the downstream quay.io/rhdh/plugin-catalog-index after you…
SkillAFreshness: A★ 18Claude Code +9 - 0.641score
rhdh-konflux-tasks
redhat-developer
Bumps Konflux Tekton task bundle digests in `.tekton` and `.tekton-templates`, applies each task's MIGRATION.md, regenerates PipelineRuns, and checks pins…
SkillAFreshness: A★ 18Claude Code +9 - 0.641score
rhdh-yarn-bump
redhat-developer
Bumps Yarn Berry across the RHDH repos — rhdh-plugins, rhdh midstream, rhdh-plugin-export-overlays, rhdh-cli, and GitLab CEE rhidp/rhdh and…
SkillAFreshness: A★ 18Claude Code +9 - 0.641score
rhdh-jira-link
redhat-developer
Ties a GitHub pull request or GitLab merge request to an RHDH Jira issue in RHIDP, RHDHPLAN, RHDHBUGS, or RHDHSUPP: attach the Jira Web link titled `repo #N…
SkillAFreshness: A★ 18Claude Code +9
Cite this page
rhdh-base-images skill. Agent Mart. https://agentmart.dev/skills/redhat-developer-rhdh-base-images (last updated 2026-10-24)