Agent skill

QA Verify Console

by openshift-eng in openshift-eng/ai-helpers

Capture before/after screenshots of OpenShift Console PRs running against a live cluster using Puppeteer, generate visual diff comparisons, and post evidence to the PR.

Apache-2.0Auto-check passedTesting & QA

Install QA Verify Console

skills CLI
$ npx skills add openshift-eng/ai-helpers --skill qa-verify-console -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install openshift-eng/ai-helpers qa-verify-console --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/openshift-eng/ai-helpers.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/openshift-developer/skills/qa-verify-console .claude/skills/qa-verify-console && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
qa-verify-console
GitHub stars
120
Token cost
~3.3k tokens
SKILL.md length
1,208 words
Files
3 (incl. scripts)
Skills in repo
118
Repo updated
First seen
Licence
Apache-2.0

At a glance

Capture before/after screenshots of OpenShift Console PRs running against a live cluster using Puppeteer, generate visual diff comparisons, and post evidence to the PR.

  • Works in 3 steps: Determine Routes & Capture Baseline → Capture Candidate (PR Branch) → Compare Results & Publish Evidence
  • A Console PR needs visual QA verification
  • SKILL.md covers Overview, Prerequisites, Inputs and Evidence Directory Layout, plus 6 more sections
  • Runs JavaScript and Shell scripts from its folder; calls gh, node and git; needs BRIDGE_K8S_AUTH_BEARER_TOKEN

What it does

QA Verify Console is an agent skill from openshift-eng/ai-helpers. Capture before/after screenshots of OpenShift Console PRs running against a live cluster using Puppeteer, generate visual diff comparisons, and post evidence to the PR. Use when a Console PR needs visual QA verification or screenshot-based regression testing.

Its SKILL.md is about 3.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including scripts (for example `scripts/capture-screenshots.js` and `scripts/setup.sh`).

It sits in Testing & QA, covering Visual regression testing and QA and bug reports. It works with Puppeteer. The repository describes itself as: Developer productivity tools for Claude Code & other AI assistants. The licence is Apache-2.0.

When your agent uses it

  • A Console PR needs visual QA verification
  • Screenshot-based regression testing

Example prompts

  • “/qa-verify-console”

Requirements

  • Node.js
  • A Bash shell
  • A credential in BRIDGE_K8S_AUTH_BEARER_TOKEN

Workflow steps

3 steps, taken from the step headings in SKILL.md.

  1. Determine Routes & Capture Baseline
  2. Capture Candidate (PR Branch)
  3. Compare Results & Publish Evidence

What it can do on your machine

Read from SKILL.md and the folder at commit a627176. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 2 files in scripts/ (JavaScript and Shell), which the agent can run.

    Shell commands in SKILL.md call:

    • gh
    • node
    • git
    • yarn
    • bash

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use gh, git and yarn, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • BRIDGE_K8S_AUTH_BEARER_TOKEN

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

QA Verify Console loads about 3.3k tokens when it runs. Until then it costs about 69 tokens; SKILL.md has 1,208 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~69
When it runs · the whole SKILL.md, loaded when a task matches
~3.3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from openshift-eng/ai-helpers at commit a627176, republished under its Apache-2.0 licence (© openshift-eng). 1,208 words, ~3,326 tokens.

Download SKILL.mdSave it as .claude/skills/qa-verify-console/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
qa-verify-console
description
Capture before/after screenshots of OpenShift Console PRs running against a live cluster using Puppeteer, generate visual diff comparisons, and post evidence to the PR. Use when a Console PR needs visual QA verification or screenshot-based regression testing.

qa-verify-console — Visual QA Verification for OpenShift Console PRs

Overview

This skill captures before/after screenshots of an OpenShift Console PR running against a live cluster, generates flicker GIFs to highlight visual differences, and posts evidence to the PR. It enables rapid visual QA without manual browser testing.

"Agent" throughout this document refers to the Claude Code agent executing the skill — the LLM-driven process that runs commands, makes decisions about which routes to capture, and interprets results.

Post-PR design: This skill operates on an already-published pull request. It requires a valid PR number so it can fetch both the head and base branches, read the diff to identify affected routes, and post evidence back as a PR comment. It is not designed for pre-PR / local-branch workflows.

The agent:

  1. Clones openshift/console, builds both the base and PR branches
  2. Runs the console bridge (dev server) against a real OCP cluster
  3. Uses Puppeteer to capture screenshots of affected routes
  4. Compares baseline vs candidate screenshots and posts evidence to the PR

Prerequisites

DependencyMinimum VersionNotes
Node.js22+Required by console's frontend build
Corepack(bundled)Must be enabled: corepack enable
Yarn Berry4.xManaged via corepack, .yarnrc.yml in repo
Go1.25+Required for backend (bridge) build
oc4.xOpenShift CLI for cluster access
gh2.99+GitHub CLI for PR metadata + comment posting
git2.xFull clone required (both branches needed)
Chrome/Chromium120+Installed by Puppeteer; system libs needed
CPU:               8 cores
Memory:            16Gi
Ephemeral Storage: 40Gi

The console frontend build (yarn install --immutable && yarn run build) is CPU- and memory-intensive. The Go backend build is lighter but still benefits from multiple cores.


Inputs

The agent receives two inputs:

  1. PR number — The openshift/console pull request to verify (e.g., 17199)
  2. OC login command — A full oc login command string with token and server URL, passed explicitly as the OC_LOGIN_CMD environment variable. This is not an ambient kubeconfig assumption — the caller must provide a complete oc login --token=... --server=... command that the script evals to authenticate against the target cluster.

Optional:

  1. Routes — Comma-separated list of console routes to capture. If not provided, the agent analyzes the PR diff to determine affected routes.

Evidence Directory Layout

/workspace/evidence/
  baseline/           # Screenshots from the base branch
    overview.png
    k8s_cluster_nodes.png
    ...
  candidate/          # Screenshots from the PR branch
    overview.png
    k8s_cluster_nodes.png
    ...
  flicker/            # Animated GIFs showing differences
    overview.gif
    k8s_cluster_nodes.gif
    ...
  metadata.json       # PR metadata (branches, author, etc.)
  baseline.json       # Capture summary for baseline
  candidate.json      # Capture summary for candidate

Phases

Phases 0–1 — Validate Inputs & Setup Environment

Fully automated by scripts/setup.sh — the agent just runs it and checks the exit code. No LLM decisions needed.

bash
OC_LOGIN_CMD="oc login --token=... --server=..." \
  bash /workspace/qa-verify-console/scripts/setup.sh "$PR_NUMBER"

On success (exit 0), the script produces:

  • /workspace/evidence/metadata.json — PR metadata
  • /workspace/console/ — cloned repo with base-branch checked out and pr-branch available
  • /workspace/evidence/setup-env.sh — sourceable env vars (LD_LIBRARY_PATH, CHROME_BIN, QA_TOOLS_DIR, branch refs)

The agent should source /workspace/evidence/setup-env.sh before proceeding.

On failure (non-zero exit), setup.sh prints a descriptive error to stderr. The agent should report the error and stop.


Phase 2 — Determine Routes & Capture Baseline

Goal: Decide which console routes to screenshot, then build the base branch and capture them.

Agent decisions (LLM judgement required):

  1. Route selection — Analyze the PR diff (gh pr diff "$PR_NUMBER") to determine which console routes are visually affected by the changes. Consider:

    • Which React components are modified and what routes render them
    • Whether the change is cosmetic (CSS/layout) vs. behavioral
    • Common route patterns:
      • / (overview/dashboard)
      • /k8s/cluster/nodes, /k8s/cluster/projects
      • /k8s/ns/<namespace>/pods
      • /monitoring/alerts, /settings/cluster
    • If the diff doesn't clearly map to routes, ask the user
  2. Failure triage — If the build or bridge fails, read the error log and decide whether the failure is environmental (retry/report) or a real issue.

Mechanical steps (run these; no decisions needed):

bash
cd /workspace/console && ./build.sh                       # Build backend + frontend
export BRIDGE_USER_AUTH="disabled"                         # Required for headless mode
source ./contrib/oc-environment.sh                         # Sets BRIDGE_K8S_AUTH_BEARER_TOKEN
nohup ./bin/bridge -branding openshift > /tmp/bridge-baseline.log 2>&1 &
# Wait for HTTP 200 on localhost:9000, then capture:
# NOTE: Replace the example routes below with the routes you selected from PR diff analysis in Phase 2.
node /workspace/qa-verify-console/scripts/capture-screenshots.js \
  --routes "/" --routes "/k8s/cluster/nodes" \
  --output-dir /workspace/evidence/baseline \
  --base-url http://localhost:9000
# Kill bridge after capture

Save the JSON summary to /workspace/evidence/baseline.json.


Phase 3 — Capture Candidate (PR Branch)

Goal: Switch to the PR branch, rebuild, and capture the same routes.

Agent decisions: None — use the same route list from Phase 2. The only judgement call is failure triage: if the PR branch fails to build, that likely indicates a real issue with the PR (report it rather than retrying).

Mechanical steps:

bash
cd /workspace/console && git checkout pr-branch
./build.sh
export BRIDGE_USER_AUTH="disabled"
source ./contrib/oc-environment.sh
nohup ./bin/bridge -branding openshift > /tmp/bridge-candidate.log 2>&1 &
# Wait for HTTP 200, then capture same routes as Phase 2
node /workspace/qa-verify-console/scripts/capture-screenshots.js \
  --routes "/" --routes "/k8s/cluster/nodes" \
  --output-dir /workspace/evidence/candidate \
  --base-url http://localhost:9000
# Kill bridge after capture

Save the JSON summary to /workspace/evidence/candidate.json.


Phase 4 — Compare Results & Publish Evidence

Goal: Generate visual comparisons and post evidence to the PR.

Agent decisions (LLM judgement required):

  1. Interpret visual differences — Compare baseline vs. candidate screenshots (file size deltas, visual inspection). Decide which routes show meaningful visual changes (>5% file size difference is a useful heuristic) vs. noise.

  2. Compose the PR comment — Summarize what changed visually, highlight routes with significant differences, and note any routes that failed to capture. Use console's build-comment-attach.sh if available, otherwise fall back to gh pr comment with embedded image links.

  3. Handle partial results — If some screenshots are missing or GIF generation fails, decide what to include in the report and what to note as skipped. Post what is available rather than failing entirely.

Mechanical steps:

  • Generate flicker GIFs for each baseline/candidate pair (use console's make-flicker-gif.sh if available, otherwise convert -delay 100 -loop 0)
  • Upload images via stage-attachments.sh if available
  • Post the PR comment via gh pr comment
  • Store evidence summaries in the result store for coordinator access

Show full SKILL.md (412 more words)Show less

Error Handling Reference

ErrorPhaseAction
Missing PR_NUMBER0Exit with usage message
Missing OC_LOGIN_CMD0Exit with credentials request
oc login fails0Exit with cluster connectivity error
PR not found0Exit with PR number validation error
git clone fails1Exit with network/auth error
PR branch fetch fails1Exit with branch not found error
Chrome lib download fails1Warn, continue (may still work)
Puppeteer install fails1Exit with Node.js/npm error
./build.sh fails2/3Exit with build error log
Bridge won't start2/3Check log, exit with bridge error
Bridge returns errors2/3Check bearer token, exit with auth error
Single screenshot fails2/3Skip route, mark as skipped, continue
All screenshots fail2/3Exit with capture error
GIF generation fails4Skip GIFs, post screenshots only
PR comment posting fails4Store locally, report to coordinator

Reused Scripts from Console Repo

After cloning openshift/console, these scripts are available under .claude/skills/qa-verify/scripts/:

ScriptPurpose
backend.shBuild backend only (Go)
rebuild.shIncremental rebuild
build-comment-attach.shPost comment with attachments to PR
stage-attachments.shUpload images for PR comment embedding
make-flicker-gif.shGenerate before/after flicker GIF
check-prerequisites.shVerify system dependencies

These scripts may or may not exist depending on the console version. The agent should check for their existence before using them and fall back to inline equivalents.


Usage Example

User: "Run QA verification on console PR #17199"

Agent:
1. Receives PR_NUMBER=17199, OC_LOGIN_CMD from environment
2. Runs setup.sh 17199
3. Analyzes PR diff → affected routes: /, /k8s/cluster/nodes, /monitoring/alerts
4. Builds base branch, captures 3 baseline screenshots
5. Switches to PR branch, rebuilds, captures 3 candidate screenshots
6. Generates 3 flicker GIFs
7. Posts comment to PR #17199 with evidence

Limitations

  1. No dynamic plugins — The dev bridge does not load OLM-installed console plugins. Pages that depend on dynamic plugins will show plugin-not-found states.

  2. Auth-disabled mode — BRIDGE_USER_AUTH="disabled" bypasses OAuth. The console runs with the service account's bearer token, not a real user session. Some user-specific UI elements may differ from production.

  3. Dev branding — The bridge runs with -branding openshift in dev mode. Minor visual differences from production branding are expected.

  4. No multi-user testing — All screenshots are captured under a single service account context. RBAC-dependent views cannot be tested for different user roles.

  5. Network policies — The bridge connects to the cluster API. If the workspace pod has network restrictions, API calls may fail.

  6. SPA rendering timing — The capture script waits for network idle and spinner disappearance, but some async-loaded components may not be fully rendered. The 2-second settle time mitigates most cases.

  7. Viewport only — Screenshots use a fixed viewport (default 1920x1080). Responsive/mobile layouts are not tested unless explicitly requested with --viewport.


Skill Script Inventory

FileTypePurpose
SKILL.mdDocThis file — skill documentation
scripts/setup.shBashPhase 0 + 1: validate, clone, setup
scripts/capture-screenshots.jsNodePhase 2/3: Puppeteer screenshot tool

© openshift-eng, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files (scripts) in plugins/openshift-developer/skills/qa-verify-console of openshift-eng/ai-helpers.

  • SKILL.md
  • scripts/capture-screenshots.js
  • scripts/setup.sh

Open the folder on GitHubat commit a627176

Compare with similar skills

QA Verify Console next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

QA Verify Console compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
QA Verify Console this skillopenshift-eng/ai-helpers120—~3.3kAutomated safety check: PassApache-2.0
Glance TestDebugBase/glance156—~827Automated safety check: PassMIT
Visual QAliangdabiao/Godogen127—~1.4kAutomated safety check: PassMIT
CCC Dashboard Runtime Testingamirfish1/claude-command-center177—~1.1kAutomated safety check: PassCustom licence
Visual QA For Web And Terminal UIscode-yeongyu/oh-my-openagent70k—~9.5kAutomated safety check: PassCustom licence
Smartui Skillsickn33/agentic-awesome-skills47k1 repos~1.1kAutomated safety check: PassMIT

Similar skills

  • Glance Test

    DebugBase/glance

    Run E2E browser tests on any web application using Glance MCP.

    156 GitHub stars~827 tokensUpdated 5 mo ago
    Testing & QAAuto-check passed
  • Visual QA

    liangdabiao/Godogen

    Visual quality assurance — analyze game screenshots for defects, compare against reference, check motion in frame sequences.

    127 GitHub stars~1.4k tokensUpdated 5 mo ago
    Testing & QAAuto-check passed
  • CCC Dashboard Runtime Testing

    amirfish1/claude-command-center

    Covers bringing up and runtime-testing the claude-command-center dashboard server on Linux, including duplicate instances and fresh-install checks.

    177 GitHub stars~1.1k tokensUpdated today
    Testing & QAAuto-check passed
  • Visual QA For Web And Terminal UIs

    code-yeongyu/oh-my-openagent

    Checks a built UI against a human-interface checklist and any reference image, pairing day and night screenshots at two screen widths.

    70k GitHub stars~9.5k tokensUpdated today
    Testing & QAAuto-check passed
  • Smartui Skill

    sickn33/agentic-awesome-skills

    Generates SmartUI visual regression test configurations for screenshot comparison on TestMu AI cloud.

    47k GitHub starsUsed in 1 repo~1.1k tokens
    Testing & QAAuto-check passed
  • Visual QA

    RandallLiuXin/GodotMaker

    Visual quality assurance: analyze game screenshots for defects, compare against reference, check motion in frame sequences.

    549 GitHub stars~1.8k tokensUpdated 20 days ago
    Testing & QAAuto-check passed

More from openshift-eng/ai-helpers

All 118 skills in this repo
  • Investigate CI Reliability

    openshift-eng/ai-helpers

    Find and independently validate actionable reliability defects across OpenShift release jobs and presubmits, then export portable issue handoffs.

    120 GitHub stars~1.9k tokensUpdated today
    Auto-check passed
  • Address Review PR

    openshift-eng/ai-helpers

    Fetch and address all PR review comments — categorize by priority, make code changes, post replies, and push.

    120 GitHub stars~2.9k tokensUpdated today
    Auto-check passed
  • Categorize Activity Types

    openshift-eng/ai-helpers

    Categorize Jira issues into Red Hat Sankey Activity Type categories using MCP Jira tools.

    120 GitHub stars~2.4k tokensUpdated today
    Auto-check passed
  • Has Review Work

    openshift-eng/ai-helpers

    Decide whether a GitHub PR has unanswered authorized review comments or new required CI failures worth a follow-up agent.

    120 GitHub stars~1.9k tokensUpdated today
    Auto-check passed
  • Must Gather Analyzer

    openshift-eng/ai-helpers

    Analyze OpenShift must-gather diagnostic data including cluster operators, pods, nodes, and network components.

    120 GitHub stars~2.3k tokensUpdated today
    Auto-check passed
  • Payload Autodl JSON

    openshift-eng/ai-helpers

    Schema for the autodl JSON data file produced by payload-analysis for database ingestion — you must use this skill whenever generating the autodl JSON file

    120 GitHub stars~2.6k tokensUpdated today
    Auto-check passed

Works with

Categories

Questions about QA Verify Console

What does QA Verify Console do?

Capture before/after screenshots of OpenShift Console PRs running against a live cluster using Puppeteer, generate visual diff comparisons, and post evidence to the PR. QA Verify Console is an agent skill from openshift-eng/ai-helpers. Capture before/after screenshots of OpenShift Console PRs running against a live cluster using Puppeteer, generate visual diff comparisons, and post evidence to the PR.

When should I use QA Verify Console?

QA Verify Console fits situations like: A Console PR needs visual QA verification; screenshot-based regression testing.

How do I install QA Verify Console in Claude Code?

Run `npx skills add openshift-eng/ai-helpers --skill qa-verify-console -a claude-code`. Or copy the skill folder (plugins/openshift-developer/skills/qa-verify-console in openshift-eng/ai-helpers) into .claude/skills/qa-verify-console in your project. Claude Code loads it when a task matches its description.

How do I install QA Verify Console in Codex?

Run `npx skills add openshift-eng/ai-helpers --skill qa-verify-console -a codex`. Or copy the skill folder (plugins/openshift-developer/skills/qa-verify-console in openshift-eng/ai-helpers) into .agents/skills/qa-verify-console in your project. Codex loads it when a task matches its description.

Can I use QA Verify Console in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add openshift-eng/ai-helpers --skill qa-verify-console -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/qa-verify-console, .gemini/skills/qa-verify-console, .github/skills/qa-verify-console and .opencode/skills/qa-verify-console in your project.

What does QA Verify Console need to run?

Going by SKILL.md and its folder, QA Verify Console needs JavaScript and a shell for the scripts in its folder, the command-line tools its instructions call (gh, node, git, yarn and bash) and credentials named BRIDGE_K8S_AUTH_BEARER_TOKEN. Our summary lists: Node.js; A Bash shell; A credential in BRIDGE_K8S_AUTH_BEARER_TOKEN.

Does QA Verify Console access the network?

SKILL.md contains no URLs. Its commands use gh and git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is QA Verify Console safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does QA Verify Console use?

QA Verify Console is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does QA Verify Console use?

About 3.3k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to QA Verify Console?

Skills that share tags, products or a category with QA Verify Console: Glance Test (DebugBase/glance, 156 stars), Visual QA (liangdabiao/Godogen, 127 stars), CCC Dashboard Runtime Testing (amirfish1/claude-command-center, 177 stars) and Visual QA For Web And Terminal UIs (code-yeongyu/oh-my-openagent, 70k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains QA Verify Console?

openshift-eng (a GitHub organization) maintains it in openshift-eng/ai-helpers, which has 120 GitHub stars. The repository holds 118 skills in this directory. The repository was last updated on October 6, 2026.

Source: openshift-eng/ai-helpers on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.