Skip to content

CONSOLE-5194: Audit and fix Claude Code skills for accuracy#16316

Merged
openshift-merge-bot[bot] merged 8 commits into
openshift:mainfrom
sg00dwin:CONSOLE-5194-AI-Tooling-Review
May 21, 2026
Merged

CONSOLE-5194: Audit and fix Claude Code skills for accuracy#16316
openshift-merge-bot[bot] merged 8 commits into
openshift:mainfrom
sg00dwin:CONSOLE-5194-AI-Tooling-Review

Conversation

@sg00dwin
Copy link
Copy Markdown
Member

@sg00dwin sg00dwin commented Apr 22, 2026

Analysis:
AI coding skills in .claude/skills/ accumulate stale references over time — deprecated tool names, incorrect file paths, outdated config file references — with no automated way to detect the drift.

Note: Assigning review of skill-specific changes to the associated creator of each skill.
/assign @cajieh to review .claude/skills/gen-rtl-test/SKILL.md
/assign @Leo6Leo to review .claude/skills/pre-push-review/SKILL.md
/assign @logonoff to review .claude/skills/update-package/SKILL.md
/assign @jhadvig to review claude/skills/skill-audit/SKILL.md


Description:

  • Fixed stale references across existing skills:
    • gen-rtl-test: Corrected @console/test-utils import path to @console/shared/src/test-utils/unit-test-utils; updated Rule 14 to recommend userEvent over fireEvent (no longer blocked by Jest version)
    • pre-push-review: Replaced 6 references to deprecated TodoWrite with TaskCreate/TaskUpdate; corrected .claude/CLAUDE.md references to AGENTS.md
    • update-package: Replaced TodoWrite reference with TaskCreate/TaskUpdate
  • Added new skill-audit skill (/skill-audit) that detects:
    • Broken file path references
    • Invalid @console/* import paths
    • Missing yarn/npm script references
    • Missing shell script references
    • Deprecated or unrecognized Claude Code tool names (validates against canonical tool list)
    • Cross-references skill names in CLAUDE.md/AGENTS.md/STYLEGUIDE.md/TESTING.md/settings.json against actual .claude/skills/ directories (bidirectional: config→skills and skills→config)

Test cases:

  • Run /skill-audit and verify it produces a report with no false positives
  • Run /skill-audit gen-rtl-test and verify single-skill mode works
  • Run /gen-rtl-test on a component and verify the corrected import path appears in generated tests
  • Run /pre-push-review and verify it uses TaskCreate/TaskUpdate (not TodoWrite)

Summary by CodeRabbit

  • New Features

    • Added a read-only skill to audit skills for stale references, broken paths, deprecated tool names, and related config issues.
  • Documentation

    • Standardized RTL test guidance to prefer userEvent/screen, clarified render-with-providers vs render decisions, and updated async-handling examples.
    • Updated project-context and workflow tracking references (CLAUDE → AGENTS; TodoWrite → TaskCreate/TaskUpdate).
  • Chores

    • Added a pre-merge test-coverage check for new source files and refined review guidance formatting.

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Apr 22, 2026
@openshift-ci-robot
Copy link
Copy Markdown
Contributor

openshift-ci-robot commented Apr 22, 2026

@sg00dwin: This pull request references CONSOLE-5194 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "5.0.0" version, but no target version was set.

Details

In response to this:

Analysis:
AI coding skills in .claude/skills/ accumulate stale references over time — deprecated tool names, incorrect file paths, outdated config file references — with no automated way to detect the drift.

Note: Assigning review of skill-specific changes to the associated creator of each skill.
/assign @cajieh to review .claude/skills/gen-rtl-test/SKILL.md
/assign @Leo6Leo to review .claude/skills/pre-push-review/SKILL.md
/assign @logonoff to review .claude/skills/update-package/SKILL.md
/assign @jhadvig to review claude/skills/skill-audit/SKILL.md


Description:

  • Fixed stale references across existing skills:
  • gen-rtl-test: Corrected @console/test-utils import path to @console/shared/src/test-utils/unit-test-utils; updated Rule 14 to recommend userEvent over fireEvent (no longer blocked by Jest version)
  • pre-push-review: Replaced 6 references to deprecated TodoWrite with TaskCreate/TaskUpdate; corrected .claude/CLAUDE.md references to AGENTS.md
  • update-package: Replaced TodoWrite reference with TaskCreate/TaskUpdate
  • Added new skill-audit skill (/skill-audit) that detects:
  • Broken file path references
  • Invalid @console/* import paths
  • Missing yarn/npm script references
  • Missing shell script references
  • Deprecated or unrecognized Claude Code tool names (validates against canonical tool list)
  • Cross-references skill names in CLAUDE.md/AGENTS.md/STYLEGUIDE.md/TESTING.md/settings.json against actual .claude/skills/ directories (bidirectional: config→skills and skills→config)

Test cases:

  • Run /skill-audit and verify it produces a report with no false positives
  • Run /skill-audit gen-rtl-test and verify single-skill mode works
  • Run /gen-rtl-test on a component and verify the corrected import path appears in generated tests
  • Run /pre-push-review and verify it uses TaskCreate/TaskUpdate (not TodoWrite)

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 22, 2026

Walkthrough

Updates multiple Claude Code skill docs and review tooling: testing guidance in gen-rtl-test (prefer userEvent, import path update), project-context and workflow tracking references switched to AGENTS.md and TaskCreate/TaskUpdate, a new skill-audit skill added to validate skills and references, and CodeRabbit config extended with a pre-merge test check.

Claude skills and tooling updates

Layer / File(s) Summary
gen-rtl-test docs updates
.claude/skills/gen-rtl-test/SKILL.md
Update renderWithProviders import, add userEvent to act-wrapping helpers, and rewrite Rule 14 to prefer userEvent while retaining fireEvent examples.
pre-push-review docs sync
.claude/skills/pre-push-review/SKILL.md
Replace .claude/CLAUDE.md references with AGENTS.md across checklist and notes; switch progress tracking from TodoWrite to TaskCreate/TaskUpdate.
skill-audit: front-matter & discovery
.claude/skills/skill-audit/SKILL.md
Add skill-audit skill front-matter and discovery step to enumerate .claude/skills/ files (optional per-skill scope).
skill-audit: path extraction & resolution
.claude/skills/skill-audit/SKILL.md
Define path extraction rules, resolution order (repo root then frontend/), and skip logic for URLs, globs, placeholders, and template-contained paths; extract @console/* imports.
skill-audit: import, PatternFly, codeRef, scripts, and shell checks
.claude/skills/skill-audit/SKILL.md
Validate @patternfly/* imports (WARN for /deprecated), $codeRef/module references (INFO if unresolvable), check yarn/npm scripts against frontend/package.json, and verify .sh references at repo root.
skill-audit: tool-name auditing and hooks
.claude/skills/skill-audit/SKILL.md
Audit tool-name references against canonical session tools (ERROR on deprecated/unrecognized, skip MCP*), and validate hook-command local paths in .claude/settings*.json.
skill-audit: cross-referencing and reporting
.claude/skills/skill-audit/SKILL.md
Cross-reference config and skill directories to flag missing/orphaned skills; define grouped per-skill PASS/ERROR/WARN/INFO report and overall summary.
update-package: tracking tool ref update
.claude/skills/update-package/SKILL.md
Switch phase-tracking references from TodoWrite to TaskCreate/TaskUpdate.
CodeRabbit config: tone and pre-merge check
.coderabbit.yaml
Reformat tone_instructions to folded multi-line YAML and add a pre_merge_checks.custom_checks rule enforcing test files for new frontend/ TypeScript/TSX sources with defined pass/fail/inconclusive/skip criteria.

Sequence Diagram(s)

sequenceDiagram
  participant SkillAuditor
  participant SkillsDir as .claude/skills/
  participant RepoFS as RepositoryFS
  participant FrontendPkg as frontend/package.json
  participant Reporter

  SkillAuditor->>SkillsDir: enumerate skill markdown files
  SkillsDir-->>SkillAuditor: file list
  SkillAuditor->>RepoFS: resolve referenced paths (repo root then frontend/)
  RepoFS-->>SkillAuditor: existence results
  SkillAuditor->>FrontendPkg: check yarn/npm script entries
  FrontendPkg-->>SkillAuditor: script presence
  SkillAuditor->>Reporter: emit per-skill PASS/WARN/ERROR/INFO report
Loading

Estimated code review effort:
🎯 3 (Moderate) | ⏱️ ~20 minutes

Suggested labels:
verified

Suggested reviewers:

  • cajieh
  • logonoff
🚥 Pre-merge checks | ✅ 12
✅ Passed checks (12 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and specifically summarizes the main objective of the PR: auditing and fixing Claude Code skills for accuracy, which directly aligns with the primary changes across the changeset.
Description check ✅ Passed The description provides detailed analysis of the problem, explains all major changes across four skills, lists specific fixes with affected components, and includes concrete test cases. However, several template sections (Screenshots/setup, Browser conformance, Additional info) remain unused.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Stable And Deterministic Test Names ✅ Passed Check is not applicable. This PR contains no Ginkgo test definitions or test source code—only documentation and configuration changes to .claude/skills/ and .coderabbit.yaml.
Test Structure And Quality ✅ Passed Ginkgo test code quality check is not applicable. This PR modifies only documentation (.claude/skills/*/SKILL.md) and configuration (.coderabbit.yaml), not test code.
Microshift Test Compatibility ✅ Passed No new Ginkgo e2e tests were added in this PR. All changes are documentation (markdown) and configuration (YAML) files. The MicroShift Test Compatibility check does not apply.
Single Node Openshift (Sno) Test Compatibility ✅ Passed This PR contains only documentation and configuration updates (.md and .yaml files). No Ginkgo e2e tests are being added, so the check is not applicable.
Topology-Aware Scheduling Compatibility ✅ Passed This PR contains only documentation and configuration changes (.claude/skills/*.md and .coderabbit.yaml) with no deployment manifests, operator code, or controllers. The check is not applicable.
Ote Binary Stdout Contract ✅ Passed PR contains only documentation and configuration changes (markdown, YAML). No Go source/test files modified. OTE Binary Stdout Contract check is not applicable.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed No Ginkgo e2e tests added. PR updates Claude Code skills documentation and config. All new test files are Go unit tests (testing.T). Check inapplicable.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.claude/skills/skill-audit/SKILL.md:
- Line 81: The fenced code block that opens before the "## Skill Audit Report"
example lacks a language tag (triggering MD040); update the opening fence for
that example to include a language identifier (e.g., change the opening "```" to
"```markdown") so the block is correctly recognized by markdown-lint and docs
pipelines.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Pro Plus

Run ID: 43404fdc-d47e-4a9b-a7db-218a67b993d3

📥 Commits

Reviewing files that changed from the base of the PR and between 233c92c and 4f19328.

📒 Files selected for processing (4)
  • .claude/skills/gen-rtl-test/SKILL.md
  • .claude/skills/pre-push-review/SKILL.md
  • .claude/skills/skill-audit/SKILL.md
  • .claude/skills/update-package/SKILL.md
📜 Review details
🧰 Additional context used
🪛 markdownlint-cli2 (0.22.0)
.claude/skills/skill-audit/SKILL.md

[warning] 81-81: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🔀 Multi-repo context openshift/console-operator

[::openshift/console-operator::] .claude/commands/ci-prep.md: line 96 — contains guidance "Use the TodoWrite tool to track progress..." (TodoWrite referenced).
[::openshift/console-operator::] CLAUDE.md: line 7 — references AGENTS.md.
[::openshift/console-operator::] vendor/github.com/openshift/api/.coderabbit.yaml: lines 27,49-50 — references AGENTS.md and CLAUDE.md.

Notes: this repository has no .claude/skills directory and no matches for @console/test-utils or @console/shared test-utils imports.

🔇 Additional comments (4)
.claude/skills/pre-push-review/SKILL.md (1)

134-134: Good consistency update on context + workflow tooling.

Switching project guidance to AGENTS.md and standardizing progress tracking on TaskCreate/TaskUpdate is coherent across the file and reduces stale-tool drift.

Also applies to: 159-159, 320-323, 373-374, 454-454, 476-476, 492-492

.claude/skills/update-package/SKILL.md (1)

73-73: Nice alignment with current Claude task APIs.

Using TaskCreate/TaskUpdate here keeps package-update workflow tracking consistent with other skills and avoids deprecated tool names.

.claude/skills/gen-rtl-test/SKILL.md (2)

512-512: Rule 14 update is a solid improvement.

Preferring userEvent while still allowing fireEvent for simple synchronous cases is the right balance for realism and maintainability in generated tests.

Also applies to: 556-575, 578-587


196-196: No action needed — the import alias is properly configured.

The alias @console/shared/* is explicitly mapped in frontend/tsconfig.json (line 22) to ./packages/console-shared/*, which correctly resolves @console/shared/src/test-utils/unit-test-utils to the existing file at frontend/packages/console-shared/src/test-utils/unit-test-utils.tsx. Generated tests placed in the frontend/ directory will inherit this configuration and resolve the import without issues.

Comment thread .claude/skills/skill-audit/SKILL.md Outdated
Copy link
Copy Markdown
Member

@logonoff logonoff Apr 22, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM (but I did not write the skill :)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

that doesnt matter ... 🥲

@sg00dwin sg00dwin force-pushed the CONSOLE-5194-AI-Tooling-Review branch from 4f19328 to 58c6de6 Compare April 22, 2026 18:07
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM for this section

Comment thread .claude/skills/gen-rtl-test/SKILL.md Outdated
// Simulate clicking
fireEvent.click(button);
expect(screen.getByText(/success/i)).toBeVisible();
}, 30000); // userEvent.type is slow — extend timeout for tests with significant typing
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it be better to remove , 30000) and show proper async handling instead? Rather than mask timing issues with extended timeouts.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

updated

@sg00dwin sg00dwin force-pushed the CONSOLE-5194-AI-Tooling-Review branch from 58c6de6 to 94d7ff9 Compare May 11, 2026 21:01
@sg00dwin
Copy link
Copy Markdown
Member Author

Tech debt, so assigning labels
/label px-approved
/label docs-approved

@openshift-ci openshift-ci Bot added px-approved Signifies that Product Support has signed off on this PR docs-approved Signifies that Docs has signed off on this PR labels May 14, 2026
@logonoff
Copy link
Copy Markdown
Member

/verified bypass

@openshift-ci-robot openshift-ci-robot added the verified Signifies that the PR passed pre-merge verification criteria label May 14, 2026
@openshift-ci-robot
Copy link
Copy Markdown
Contributor

@logonoff: The verified label has been added.

Details

In response to this:

/verified bypass

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@sg00dwin sg00dwin force-pushed the CONSOLE-5194-AI-Tooling-Review branch from 94d7ff9 to 426af92 Compare May 15, 2026 16:12
@openshift-ci-robot openshift-ci-robot removed the verified Signifies that the PR passed pre-merge verification criteria label May 15, 2026
Copy link
Copy Markdown
Member

@jhadvig jhadvig left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you @sg00dwin 👍
/lgtm

@openshift-ci openshift-ci Bot added lgtm Indicates that a PR is ready to be merged. approved Indicates a PR has been approved by an approver from all required OWNERS files. labels May 18, 2026
@jhadvig
Copy link
Copy Markdown
Member

jhadvig commented May 18, 2026

/verified by @jhadvig

@jhadvig jhadvig added the plugin-api-approved Indicates a PR with plugin API changes has been approved by an API reviewer label May 18, 2026
@openshift-ci-robot openshift-ci-robot added the verified Signifies that the PR passed pre-merge verification criteria label May 18, 2026
@openshift-ci-robot
Copy link
Copy Markdown
Contributor

@jhadvig: This PR has been marked as verified by @jhadvig.

Details

In response to this:

/verified by @jhadvig

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

Comment thread .claude/skills/gen-rtl-test/SKILL.md Outdated
@sg00dwin sg00dwin force-pushed the CONSOLE-5194-AI-Tooling-Review branch from 426af92 to 8ec2aea Compare May 18, 2026 17:24
@openshift-ci-robot openshift-ci-robot removed the verified Signifies that the PR passed pre-merge verification criteria label May 18, 2026
@openshift-ci openshift-ci Bot removed the lgtm Indicates that a PR is ready to be merged. label May 18, 2026
@openshift-ci-robot
Copy link
Copy Markdown
Contributor

openshift-ci-robot commented May 18, 2026

@sg00dwin: This pull request references CONSOLE-5194 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "5.0.0" version, but no target version was set.

Details

In response to this:

Analysis:
AI coding skills in .claude/skills/ accumulate stale references over time — deprecated tool names, incorrect file paths, outdated config file references — with no automated way to detect the drift.

Note: Assigning review of skill-specific changes to the associated creator of each skill.
/assign @cajieh to review .claude/skills/gen-rtl-test/SKILL.md
/assign @Leo6Leo to review .claude/skills/pre-push-review/SKILL.md
/assign @logonoff to review .claude/skills/update-package/SKILL.md
/assign @jhadvig to review claude/skills/skill-audit/SKILL.md


Description:

  • Fixed stale references across existing skills:
  • gen-rtl-test: Corrected @console/test-utils import path to @console/shared/src/test-utils/unit-test-utils; updated Rule 14 to recommend userEvent over fireEvent (no longer blocked by Jest version)
  • pre-push-review: Replaced 6 references to deprecated TodoWrite with TaskCreate/TaskUpdate; corrected .claude/CLAUDE.md references to AGENTS.md
  • update-package: Replaced TodoWrite reference with TaskCreate/TaskUpdate
  • Added new skill-audit skill (/skill-audit) that detects:
  • Broken file path references
  • Invalid @console/* import paths
  • Missing yarn/npm script references
  • Missing shell script references
  • Deprecated or unrecognized Claude Code tool names (validates against canonical tool list)
  • Cross-references skill names in CLAUDE.md/AGENTS.md/STYLEGUIDE.md/TESTING.md/settings.json against actual .claude/skills/ directories (bidirectional: config→skills and skills→config)

Test cases:

  • Run /skill-audit and verify it produces a report with no false positives
  • Run /skill-audit gen-rtl-test and verify single-skill mode works
  • Run /gen-rtl-test on a component and verify the corrected import path appears in generated tests
  • Run /pre-push-review and verify it uses TaskCreate/TaskUpdate (not TodoWrite)

Summary by CodeRabbit

  • New Features

  • Added an audit skill to validate skills for stale references, broken paths, and deprecated tool names.

  • Documentation

  • Prefer userEvent over fireEvent for interactions; renderWithProviders import updated in test guidance.

  • Updated workflow tracking and project-context references (CLAUDE → AGENTS).

  • Adjusted task-tracking guidance (TodoWrite → TaskCreate/TaskUpdate).

  • Chores

  • Added a pre-merge test-coverage check for new frontend TypeScript files.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

♻️ Duplicate comments (1)
.claude/skills/skill-audit/SKILL.md (1)

154-154: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add a language tag to the fenced report example.

The code block at line 154 lacks a language specifier, triggering markdownlint MD040.

Suggested fix
-```
+```markdown
 ## Skill Audit Report
 ...
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.claude/skills/skill-audit/SKILL.md at line 154, The fenced code block that
begins with "## Skill Audit Report" is missing a language tag which triggers
markdownlint MD040; update the opening fence from tomarkdown so the
block is explicitly marked as Markdown (locate the triple-backtick fence
surrounding the "## Skill Audit Report" example in SKILL.md and change it to

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.claude/skills/skill-audit/SKILL.md:
- Around line 27-31: The numbered steps in SKILL.md currently read "1., 3., 4.,
5." because the second item was mislabeled as 3; update the list so the sequence
is consecutive (1, 2, 3, 4, 5) by changing the line that currently starts with
"3" to "2" and ensuring the following lines remain 3, 4, 5; check the block that
lists "For each path found:" and correct the numbering so each step (Resolve
relative to the repo root; If not found, try resolving relative to `frontend/`;
Check if the file exists on disk; Record any missing paths with the skill name,
file, and line number) is numbered 1–4 (or 1–5 if there are five items
intended).

In @.coderabbit.yaml:
- Line 49: The config uses the wrong key name "instruction" on the custom check
entry; rename that field to "instructions" (plural) so it matches the schema;
locate the entry using the "instruction" key and replace it with "instructions"
ensuring the value structure remains unchanged.

---

Duplicate comments:
In @.claude/skills/skill-audit/SKILL.md:
- Line 154: The fenced code block that begins with "## Skill Audit Report" is
missing a language tag which triggers markdownlint MD040; update the opening
fence from ``` to ```markdown so the block is explicitly marked as Markdown
(locate the triple-backtick fence surrounding the "## Skill Audit Report"
example in SKILL.md and change it to ```markdown).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 0855b7ad-7dde-41b9-8649-c002fe08d458

📥 Commits

Reviewing files that changed from the base of the PR and between 4f19328 and 8ec2aea.

📒 Files selected for processing (5)
  • .claude/skills/gen-rtl-test/SKILL.md
  • .claude/skills/pre-push-review/SKILL.md
  • .claude/skills/skill-audit/SKILL.md
  • .claude/skills/update-package/SKILL.md
  • .coderabbit.yaml
✅ Files skipped from review due to trivial changes (2)
  • .claude/skills/gen-rtl-test/SKILL.md
  • .claude/skills/pre-push-review/SKILL.md
🚧 Files skipped from review as they are similar to previous changes (1)
  • .claude/skills/update-package/SKILL.md

Comment thread .claude/skills/skill-audit/SKILL.md Outdated
Comment thread .coderabbit.yaml Outdated
Copy link
Copy Markdown
Contributor

@cajieh cajieh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks good!👍
Added comments. Thank you.

Comment thread .coderabbit.yaml
Inconclusive: Unable to determine test file presence (e.g., file patterns don't
match conventions).

Skip: Files matching these patterns are exempt from this check:
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does the sequence of execution matter? Should the check for 'Skip' precede 'Pass' and 'Fail'?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Filter out exempt files first, then evaluate what's left, reads more naturally and reduces ambiguity. I'd reorder it. 👍

Comment thread .coderabbit.yaml
review_details: true
pre_merge_checks:
custom_checks:
- name: "Test coverage for new source files"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Without the mode: error would the pre-merge fail?

Comment thread .coderabbit.yaml
related_prs: false
suggested_labels: false
review_details: true
pre_merge_checks:
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The pre_merge_checks nudges authors to add test files for new components; Jest coverage thresholds enforce measured execution coverage. They complement each other rather than replace one another.

Comment thread .coderabbit.yaml Outdated
custom_checks:
- name: "Test coverage for new source files"
instruction: |
For every new TypeScript/TSX source file added under frontend/ (excluding test files,
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we should add the ".go" source files as well.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
.claude/skills/gen-rtl-test/SKILL.md (1)

1085-1099: ⚡ Quick win

Align Strategy 3 title with the example implementation.

The heading says to use waitFor, but the snippet demonstrates findByText. Either rename the strategy to emphasize findBy* for dropdown content, or update the snippet to include an actual waitFor pattern.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.claude/skills/gen-rtl-test/SKILL.md around lines 1085 - 1099, The Strategy
3 heading currently mentions waitFor but the example uses findByText; update the
docs so the title matches the example: change the heading text from "Use waitFor
for complex interactions (e.g., dropdowns)" to "Use findBy* for async dropdown
content (e.g., dropdowns)" (or similar), and keep the example that uses
userEvent.setup(), screen.getByText('Select Option'), await
screen.findByText('Option 1'), and await user.click(option); alternatively, if
you prefer to keep the original waitFor intent, replace the example's findByText
usage with a waitFor pattern that waits for screen.getByText('Option 1') before
clicking. Ensure you update the Strategy 3 title and the associated snippet
(references: Strategy 3 heading, userEvent.setup(), screen.getByText('Select
Option'), findByText/ waitFor) so they consistently reflect the chosen approach.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In @.claude/skills/gen-rtl-test/SKILL.md:
- Around line 1085-1099: The Strategy 3 heading currently mentions waitFor but
the example uses findByText; update the docs so the title matches the example:
change the heading text from "Use waitFor for complex interactions (e.g.,
dropdowns)" to "Use findBy* for async dropdown content (e.g., dropdowns)" (or
similar), and keep the example that uses userEvent.setup(),
screen.getByText('Select Option'), await screen.findByText('Option 1'), and
await user.click(option); alternatively, if you prefer to keep the original
waitFor intent, replace the example's findByText usage with a waitFor pattern
that waits for screen.getByText('Option 1') before clicking. Ensure you update
the Strategy 3 title and the associated snippet (references: Strategy 3 heading,
userEvent.setup(), screen.getByText('Select Option'), findByText/ waitFor) so
they consistently reflect the chosen approach.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: abbb2e54-dcb9-4232-99c0-be1016a22de5

📥 Commits

Reviewing files that changed from the base of the PR and between 8ec2aea and cd32cb8.

📒 Files selected for processing (1)
  • .claude/skills/gen-rtl-test/SKILL.md

Update coderabbit config and fix skill-audit numbering

Assisted by Claude code
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.coderabbit.yaml:
- Around line 52-58: The skip-pattern list under "Skip: Files matching these
patterns" is missing the declaration file pattern for TypeScript (.d.ts),
causing type-definition files to be incorrectly validated; update the skip
patterns to include the declaration-file glob (e.g., add **/*.d.ts) alongside
the existing **/types.ts, **/types.tsx, **/index.ts, **/index.tsx entries so
.d.ts files are exempt from the test-file-exists check.
- Around line 5-11: The `tone_instructions` value exceeds the schema maxLength
and may fail validation; shorten or relocate it: trim the text in the
`tone_instructions` key to under 250 characters, or move the full guidance to an
external file (e.g., docs or TESTING.md) and replace `tone_instructions` with a
short reference or alias. Update the `.coderabbit.yaml` entry named
`tone_instructions` accordingly and ensure any code that reads this key
(configuration loader) still accepts the shorter value or resolves the external
reference.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 77438b08-a53e-4e76-83eb-ad6df0f26a6c

📥 Commits

Reviewing files that changed from the base of the PR and between cd32cb8 and 7f8b9d2.

📒 Files selected for processing (2)
  • .claude/skills/skill-audit/SKILL.md
  • .coderabbit.yaml
🚧 Files skipped from review as they are similar to previous changes (1)
  • .claude/skills/skill-audit/SKILL.md

Comment thread .coderabbit.yaml
Comment on lines +5 to +11
tone_instructions: >-
Principal engineer reviewing OpenShift Console (React/TS/JS/Go).
Focus: architecture, security (RBAC/SCC), performance, maintainability, backward-compatible APIs, testing/edge cases.
Enforce K8s best practices, PatternFly, a11y/i18n.
For every changed or new component, hook, or utility, check whether the PR includes corresponding test coverage.
Flag specific untested code paths, edge cases, and error conditions that should have tests.
Reference TESTING.md conventions when suggesting test approaches.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

tone_instructions likely violates schema max length.

Line 5 defines a tone_instructions block that appears to exceed the schema limit (maxLength: 250). This can cause config validation problems or the instruction being ignored.

Suggested minimal fix
-tone_instructions: >-
-  Principal engineer reviewing OpenShift Console (React/TS/JS/Go).
-  Focus: architecture, security (RBAC/SCC), performance, maintainability, backward-compatible APIs, testing/edge cases.
-  Enforce K8s best practices, PatternFly, a11y/i18n.
-  For every changed or new component, hook, or utility, check whether the PR includes corresponding test coverage.
-  Flag specific untested code paths, edge cases, and error conditions that should have tests.
-  Reference TESTING.md conventions when suggesting test approaches.
+tone_instructions: >-
+  Review as a principal engineer for OpenShift Console. Prioritize architecture, security, performance, maintainability, compatibility, and test gaps. Follow TESTING.md, AGENTS.md, and STYLEGUIDE.md.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
tone_instructions: >-
Principal engineer reviewing OpenShift Console (React/TS/JS/Go).
Focus: architecture, security (RBAC/SCC), performance, maintainability, backward-compatible APIs, testing/edge cases.
Enforce K8s best practices, PatternFly, a11y/i18n.
For every changed or new component, hook, or utility, check whether the PR includes corresponding test coverage.
Flag specific untested code paths, edge cases, and error conditions that should have tests.
Reference TESTING.md conventions when suggesting test approaches.
tone_instructions: >-
Review as a principal engineer for OpenShift Console. Prioritize architecture, security, performance, maintainability, compatibility, and test gaps. Follow TESTING.md, AGENTS.md, and STYLEGUIDE.md.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.coderabbit.yaml around lines 5 - 11, The `tone_instructions` value exceeds
the schema maxLength and may fail validation; shorten or relocate it: trim the
text in the `tone_instructions` key to under 250 characters, or move the full
guidance to an external file (e.g., docs or TESTING.md) and replace
`tone_instructions` with a short reference or alias. Update the
`.coderabbit.yaml` entry named `tone_instructions` accordingly and ensure any
code that reads this key (configuration loader) still accepts the shorter value
or resolves the external reference.

Comment thread .coderabbit.yaml
Comment on lines +52 to +58
added under pkg/ or cmd/ (excluding test files, type definition files, index files,
and SCSS/CSS files), verify that a corresponding test file exists or is added in
this PR.

Skip: Files matching these patterns are exempt from this check:
- **/types.ts, **/types.tsx (type-only files)
- **/index.ts, **/index.tsx (barrel exports)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Type-definition exclusion is incomplete vs stated rule.

Lines 52 and 57-58 say type definition files are excluded, but the patterns do not exempt *.d.ts. Add that pattern to align behavior with the stated rule and avoid false failures.

Suggested patch
           Skip: Files matching these patterns are exempt from this check:
+          - **/*.d.ts (TypeScript declaration files)
           - **/types.ts, **/types.tsx (type-only files)
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
added under pkg/ or cmd/ (excluding test files, type definition files, index files,
and SCSS/CSS files), verify that a corresponding test file exists or is added in
this PR.
Skip: Files matching these patterns are exempt from this check:
- **/types.ts, **/types.tsx (type-only files)
- **/index.ts, **/index.tsx (barrel exports)
added under pkg/ or cmd/ (excluding test files, type definition files, index files,
and SCSS/CSS files), verify that a corresponding test file exists or is added in
this PR.
Skip: Files matching these patterns are exempt from this check:
- **/*.d.ts (TypeScript declaration files)
- **/types.ts, **/types.tsx (type-only files)
- **/index.ts, **/index.tsx (barrel exports)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.coderabbit.yaml around lines 52 - 58, The skip-pattern list under "Skip:
Files matching these patterns" is missing the declaration file pattern for
TypeScript (.d.ts), causing type-definition files to be incorrectly validated;
update the skip patterns to include the declaration-file glob (e.g., add
**/*.d.ts) alongside the existing **/types.ts, **/types.tsx, **/index.ts,
**/index.tsx entries so .d.ts files are exempt from the test-file-exists check.

@cajieh
Copy link
Copy Markdown
Contributor

cajieh commented May 19, 2026

/lgtm

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label May 19, 2026
@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented May 19, 2026

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: cajieh, jhadvig, sg00dwin

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@cajieh
Copy link
Copy Markdown
Contributor

cajieh commented May 19, 2026

/verified by @cajieh

@cajieh
Copy link
Copy Markdown
Contributor

cajieh commented May 19, 2026

/test all

@openshift-ci-robot openshift-ci-robot added the verified Signifies that the PR passed pre-merge verification criteria label May 19, 2026
@openshift-ci-robot
Copy link
Copy Markdown
Contributor

@cajieh: This PR has been marked as verified by @cajieh.

Details

In response to this:

/verified by @cajieh

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-merge-bot
Copy link
Copy Markdown
Contributor

/retest-required

Remaining retests: 0 against base HEAD 8ba6726 and 2 for PR HEAD 7f8b9d2 in total

@openshift-merge-bot
Copy link
Copy Markdown
Contributor

/retest-required

Remaining retests: 0 against base HEAD a163b3a and 1 for PR HEAD 7f8b9d2 in total

@openshift-merge-bot
Copy link
Copy Markdown
Contributor

/retest-required

Remaining retests: 0 against base HEAD 559a872 and 0 for PR HEAD 7f8b9d2 in total

@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented May 21, 2026

@sg00dwin: all tests passed!

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@openshift-merge-bot openshift-merge-bot Bot merged commit bae16c9 into openshift:main May 21, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. docs-approved Signifies that Docs has signed off on this PR jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. lgtm Indicates that a PR is ready to be merged. plugin-api-approved Indicates a PR with plugin API changes has been approved by an API reviewer px-approved Signifies that Product Support has signed off on this PR verified Signifies that the PR passed pre-merge verification criteria

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants