Skip to content

HYPERFLEET-811: add hyperfleet-bug-triage plugin and refactor jira-ticket-creator#20

Draft
rafabene wants to merge 1 commit intoopenshift-hyperfleet:mainfrom
rafabene:HYPERFLEET-811
Draft

HYPERFLEET-811: add hyperfleet-bug-triage plugin and refactor jira-ticket-creator#20
rafabene wants to merge 1 commit intoopenshift-hyperfleet:mainfrom
rafabene:HYPERFLEET-811

Conversation

@rafabene
Copy link
Copy Markdown
Contributor

@rafabene rafabene commented Mar 25, 2026

Summary

  • Add hyperfleet-bugs-triage plugin for interactive Jira bug and GitHub issue triage
  • Refactor hyperfleet-jira jira-ticket-creator skill — split from 738 to ~195 lines, corrected formatting (Markdown, not wiki markup), added tiebreaker rules, delegated story points to jira-story-pointer

New: hyperfleet-bugs-triage plugin

  • /bugs-triage skill with interactive per-bug workflow
  • Delegates ticket creation to hyperfleet-jira:jira-ticket-creator skill (no content duplication)
  • Includes owners.csv (component owners) and github-repos.md (12 repos in scope)

Refactored: jira-ticket-creator (v0.4.0 → v0.4.1)

  • Split into SKILL.md + 3 reference files (formatting.md, cli-examples.md, pitfalls.md)
  • Corrected formatting: jira-cli accepts Markdown and converts to ADF (confirmed curly braces and code blocks render correctly)
  • Added Activity Type tiebreaker rules
  • Step 3 now delegates to jira-story-pointer skill
  • Fixed JIRA URL from issues.redhat.com to redhat.atlassian.net

Test plan

  • Install hyperfleet-bugs-triage plugin locally and run /bugs-triage jira
  • Install hyperfleet-bugs-triage plugin locally and run /bugs-triage github
  • Create a test ticket using jira-ticket-creator skill and verify Markdown renders correctly
  • Verify jira-story-pointer delegation works from jira-ticket-creator

Summary by CodeRabbit

  • New Features

    • Added an interactive bug & issue triage plugin for JIRA and GitHub across OpenShift HyperFleet repositories (triage workflows for JIRA New→Backlog and scoped GitHub issues).
  • Improvements

    • JIRA ticket creation accepts Markdown and has simplified workflows.
    • Added CLI examples, formatting reference, and a troubleshooting/pitfalls guide for ticket creation.
  • Updates

    • JIRA plugin version bumped to 0.4.1.
  • Documentation

    • New triage README and repository reference list included.

@openshift-ci openshift-ci bot requested review from 86254860 and mbrudnoy March 25, 2026 19:54
@openshift-ci
Copy link
Copy Markdown

openshift-ci bot commented Mar 25, 2026

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign mischulee for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found 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

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 25, 2026

Walkthrough

This PR adds the hyperfleet-bugs-triage CLAUDE plugin (marketplace entry, plugin manifest, OWNERS, README, skill and reference files) providing interactive JIRA and GitHub triage workflows scoped to openshift-hyperfleet repositories. It also restructures hyerfleet-jira’s jira-ticket-creator docs into separate Markdown references (cli-examples, formatting, pitfalls) and bumps hyerfleet-jira version 0.4.0 → 0.4.1.

Sequence Diagram(s)

sequenceDiagram
  participant User as User
  participant Plugin as "hyperfleet-bugs-triage\n(skill)"
  participant CLI as "jira-cli"
  participant Jira as JIRA
  rect rgba(200,200,255,0.5)
    User->>Plugin: run /bugs-triage (jira)
    Plugin->>CLI: query issues (project=HYPERFLEET, status=New)
    CLI->>Jira: API: fetch issues
    Jira-->>CLI: issue list
    CLI-->>Plugin: issue details
    Plugin->>User: present issue, suggestions (owners.csv, SLA)
    User->>Plugin: choose action (move/backlog, comment, edit, close, convert, escalate)
    Plugin->>CLI: execute jira issue create/edit/comment (as needed)
    CLI->>Jira: API: apply changes
    Jira-->>CLI: confirmation
    CLI-->>Plugin: result
    Plugin->>User: session metrics & summary
  end
Loading
sequenceDiagram
  participant User as User
  participant Plugin as "hyperfleet-bugs-triage\n(skill)"
  participant GH as "gh CLI"
  participant GitHub as GitHub
  participant CLI as "jira-cli"
  rect rgba(200,255,200,0.5)
    User->>Plugin: run /bugs-triage (github)
    Plugin->>GH: query open issues across allowed repos
    GH->>GitHub: API: fetch issues
    GitHub-->>GH: issue list
    GH-->>Plugin: issue details
    Plugin->>User: present issue, check for linked JIRA or merged PRs
    alt create JIRA ticket
      User->>Plugin: accept -> create ticket
      Plugin->>CLI: jira issue create (via jira-cli)
      CLI->>Jira: API: create ticket
      Jira-->>CLI: ticket key
      CLI-->>Plugin: ticket info
      Plugin->>GH: add labels/comment/link to GitHub issue
      GH->>GitHub: API: update issue
      GitHub-->>GH: confirmation
    else reject/duplicate/request-info
      User->>Plugin: choose action
      Plugin->>GH: comment/label/close as chosen
      GH->>GitHub: API update
      GitHub-->>GH: confirmation
    end
    Plugin->>User: session metrics & summary
  end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and specifically describes the two main changes: adding the hyperfleet-bugs-triage plugin and refactoring the jira-ticket-creator skill.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ 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

@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: 4

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

Inline comments:
In `@hyperfleet-bug-triage/scripts/track-usage.sh`:
- Around line 89-96: The backgrounded GitHub dispatch in track-usage.sh (the `gh
api repos/openshift-hyperfleet/hyperfleet-claude-plugins/dispatches` call that
uses USERNAME, PLUGIN_NAME, SKILL_NAME and EVENT) still ties up the invoking
process because its stdio is inherited; detach its stdio so it truly runs
non‑blocking by redirecting stdin from /dev/null and sending stdout/stderr to
/dev/null (or using nohup) and backgrounding/disowning the process, ensuring the
command does not keep the capture pipe open and block skill loading.

In `@hyperfleet-bug-triage/skills/bug-triage/SKILL.md`:
- Around line 211-212: Update the triage rules so GitHub issues are not closed
based solely on a linked Jira ticket's status: change the rule that currently
says "If Jira ticket exists: comment on GitHub linking to it, add
`hf-triaged/accepted` label, close the issue if the Jira ticket is already
Closed/Done, skip" to instead comment and add the `hf-triaged/accepted` label
but do NOT close the issue based on Jira status; only close when there is a
linked PR that is merged or the fix is present in the repository. Similarly,
update the rule that handles "If code already fixed: comment referencing the PR,
add `hf-triaged/accepted` label, close the issue" so it only closes issues when
the referenced PR is merged (or the fix is in trunk), and otherwise leave the
issue open while tracking the PR.
- Around line 18-26: Update the consent flow in SKILL.md so an empty reply is
NOT treated as consent: require an explicit affirmative "yes" (case-insensitive)
to opt in when the dynamic context is TRACKING_CONSENT_NEEDED, and only then run
the TRACKING_RERUN command; treat any other response (including empty) as a
decline. Also correct the data description—do not call it “anonymous”;
explicitly list the fields sent (e.g., GitHub username and invocation counts as
emitted by hyperfleet-bug-triage/scripts/track-usage.sh around line 92) so the
prompt and subsequent wording accurately reflect what is collected.
- Around line 183-186: The GitHub CLI command uses a BSD-specific date
expression created:<$(date -v-42d '+%Y-%m-%d') which breaks on GNU/Linux;
replace the inline date usage in the gh api search/issues q=... string by
computing a DATE variable using a portable fallback (try GNU: date -d '42 days
ago' +%Y-%m-%d and if that fails fall back to BSD: date -v-42d +%Y-%m-%d), then
inject that DATE into the q=... created:<$DATE portion of the gh api
search/issues invocation (refer to the gh api search/issues command and the
created:<$(date ...) fragment to locate the change).

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: ea82333c-9469-4689-890d-fd22aa249a43

📥 Commits

Reviewing files that changed from the base of the PR and between e93aacb and c23f3df.

⛔ Files ignored due to path filters (1)
  • hyperfleet-bug-triage/skills/bug-triage/references/owners.csv is excluded by !**/*.csv
📒 Files selected for processing (13)
  • .claude-plugin/marketplace.json
  • CLAUDE.md
  • hyperfleet-bug-triage/.claude-plugin/plugin.json
  • hyperfleet-bug-triage/OWNERS
  • hyperfleet-bug-triage/README.md
  • hyperfleet-bug-triage/scripts/track-usage.sh
  • hyperfleet-bug-triage/skills/bug-triage/SKILL.md
  • hyperfleet-bug-triage/skills/bug-triage/references/github-repos.md
  • hyperfleet-jira/.claude-plugin/plugin.json
  • hyperfleet-jira/skills/jira-ticket-creator/SKILL.md
  • hyperfleet-jira/skills/jira-ticket-creator/references/cli-examples.md
  • hyperfleet-jira/skills/jira-ticket-creator/references/formatting.md
  • hyperfleet-jira/skills/jira-ticket-creator/references/pitfalls.md

Copy link
Copy Markdown

@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 `@hyperfleet-bugs-triage/skills/bugs-triage/SKILL.md`:
- Around line 182-187: The date command in the gh api search snippet uses
BSD-specific syntax ("date -v-42d") which breaks on GNU/Linux; edit the code
block in SKILL.md where the gh api search/issues command is defined and replace
the hardcoded BSD call with a portable fallback (e.g., try "date -d '-42 days'
'+%Y-%m-%d'" and fall back to "date -v-42d '+%Y-%m-%d'" if the first fails) or
document macOS-only requirements; update the quoted q=... expression to use that
portable substitution so the gh api search/issues command works on both Linux
and macOS.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: ed427c74-fb3f-4c4b-bf73-88416b9cf026

📥 Commits

Reviewing files that changed from the base of the PR and between c23f3df and 2b5385b.

⛔ Files ignored due to path filters (1)
  • hyperfleet-bugs-triage/skills/bugs-triage/references/owners.csv is excluded by !**/*.csv
📒 Files selected for processing (13)
  • .claude-plugin/marketplace.json
  • CLAUDE.md
  • hyperfleet-bugs-triage/.claude-plugin/plugin.json
  • hyperfleet-bugs-triage/OWNERS
  • hyperfleet-bugs-triage/README.md
  • hyperfleet-bugs-triage/scripts/track-usage.sh
  • hyperfleet-bugs-triage/skills/bugs-triage/SKILL.md
  • hyperfleet-bugs-triage/skills/bugs-triage/references/github-repos.md
  • hyperfleet-jira/.claude-plugin/plugin.json
  • hyperfleet-jira/skills/jira-ticket-creator/SKILL.md
  • hyperfleet-jira/skills/jira-ticket-creator/references/cli-examples.md
  • hyperfleet-jira/skills/jira-ticket-creator/references/formatting.md
  • hyperfleet-jira/skills/jira-ticket-creator/references/pitfalls.md
✅ Files skipped from review due to trivial changes (7)
  • hyperfleet-bugs-triage/OWNERS
  • hyperfleet-bugs-triage/.claude-plugin/plugin.json
  • hyperfleet-bugs-triage/skills/bugs-triage/references/github-repos.md
  • hyperfleet-jira/.claude-plugin/plugin.json
  • CLAUDE.md
  • hyperfleet-jira/skills/jira-ticket-creator/references/cli-examples.md
  • hyperfleet-bugs-triage/README.md
🚧 Files skipped from review as they are similar to previous changes (1)
  • .claude-plugin/marketplace.json

@rafabene
Copy link
Copy Markdown
Contributor Author

Plugin Output Sample — /ticket-triage

Here's a real triage session run on 2026-03-25:


Part 1: Jira Bug Triage

No bugs in "New" status. No bugs open for more than 3 sprints.

Jira Triage Summary

Metric Count
Bugs triaged 0
Moved to Backlog 0
Closed (Won't Do/Rejected/Duplicate) 0
Info requested 0
Skipped 0
Bugs open > 3 sprints 0

Part 2: GitHub Issues Triage

No untriaged GitHub issues found (all open issues already have triage labels).

Issues Open > 3 Sprints

Issue Title Created Labels
maestro-cli#2 Naming convention needs to be aligned from resources creation to follow up k8s resources creation validations 2026-01-19 hf-triaged/accepted

This issue is already tracked by HYPERFLEET-799 (New status). The plugin detected the duplicate HYPERFLEET-804 was already closed. The user was prompted interactively and chose to keep it as-is.

GitHub Triage Summary

Metric Count
Issues triaged 0
Accepted (Bug) 0
Accepted (RFE) 0
Help provided 0
Rejected 0
Duplicate 0
Info requested 0
Skipped 0
Issues open > 3 sprints 1

Final Summary

Area Result
Jira bugs in New 0 — nothing to triage
Jira bugs open > 3 sprints 0
GitHub untriaged issues 0 — all issues already have triage labels
GitHub issues open > 3 sprints 1 — maestro-cli#2 (kept as-is per user decision)

The triage queue is clean. No action items pending.


Note: The plugin processes each bug/issue one at a time, presenting an assessment table and recommending an action (Move to Backlog, Close, Request Info, etc.). The user confirms each action interactively before it's executed.

Copy link
Copy Markdown

@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

♻️ Duplicate comments (1)
hyperfleet-bugs-triage/skills/bugs-triage/SKILL.md (1)

20-24: ⚠️ Potential issue | 🟠 Major

Require explicit opt-in and correct tracking-data description

Line 20 is inaccurate (“anonymous”), and Line 23 still treats empty input as consent. This is a privacy/compliance risk and should require explicit yes only.

Proposed fix
-> "HyperFleet plugins collect anonymous usage data (GitHub username and skill invocation counts) to help the team understand adoption. Would you like to enable usage tracking? (Yes/no)"
+> "HyperFleet plugins collect usage data (your GitHub username, plugin name, skill name, and invocation events) to help the team understand adoption. Would you like to enable usage tracking? (Yes/no)"

-If the user agrees (or just presses enter / says "yes"): save the consent **and** run the tracking script in a **single** Bash command: `mkdir -p ~/.claude && echo "yes" > ~/.claude/.hyperfleet-tracking-consent && <TRACKING_RERUN command from dynamic context>` (replace `<TRACKING_RERUN command ...>` with the actual command shown in the `TRACKING_RERUN:` line).
-- If the user declines: run `mkdir -p ~/.claude && echo "no" > ~/.claude/.hyperfleet-tracking-consent`
+If the user explicitly says "yes" (case-insensitive): save the consent **and** run the tracking script in a **single** Bash command: `mkdir -p ~/.claude && echo "yes" > ~/.claude/.hyperfleet-tracking-consent && <TRACKING_RERUN command from dynamic context>` (replace `<TRACKING_RERUN command ...>` with the actual command shown in the `TRACKING_RERUN:` line).
+- If the user says "no" or gives an empty/unclear response: run `mkdir -p ~/.claude && echo "no" > ~/.claude/.hyperfleet-tracking-consent`

As per coding guidelines, "Focus on major issues impacting performance, readability, maintainability and security. Avoid nitpicks and avoid verbosity."

Also applies to: 26-27

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@hyperfleet-bugs-triage/skills/bugs-triage/SKILL.md` around lines 20 - 24,
Update the consent prompt and handling so it requires an explicit "yes"
(case-insensitive) to opt in — do not treat empty input or any other response as
consent — and correct the wording to list the precise data collected ("GitHub
username and skill invocation counts") instead of "anonymous"; when the user
explicitly agrees run a single Bash command that creates the consent file,
writes "yes", and then runs the actual TRACKING_RERUN command shown in the
SKILL.md `TRACKING_RERUN:` line (replace the `<TRACKING_RERUN command ...>`
placeholder with that exact command) using the form: mkdir -p ~/.claude && echo
"yes" > ~/.claude/.hyperfleet-tracking-consent && <actual TRACKING_RERUN
command>; when the user explicitly declines run: mkdir -p ~/.claude && echo "no"
> ~/.claude/.hyperfleet-tracking-consent.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@hyperfleet-bugs-triage/skills/bugs-triage/SKILL.md`:
- Around line 142-144: The markdown tables use fenced code blocks without
language identifiers (MD040); update each triple-backtick fence that wraps the
tables (the blocks containing "| Ticket | Priority | Status | Assignee | Created
|", the metric tables, and the other table blocks around lines noted) to include
a language tag (e.g., ```markdown) so each fenced block becomes labeled (for
example change ``` to ```markdown) for all occurrences referenced (including the
blocks at ~142-144, 150-159, 259-261, 265-277).

---

Duplicate comments:
In `@hyperfleet-bugs-triage/skills/bugs-triage/SKILL.md`:
- Around line 20-24: Update the consent prompt and handling so it requires an
explicit "yes" (case-insensitive) to opt in — do not treat empty input or any
other response as consent — and correct the wording to list the precise data
collected ("GitHub username and skill invocation counts") instead of
"anonymous"; when the user explicitly agrees run a single Bash command that
creates the consent file, writes "yes", and then runs the actual TRACKING_RERUN
command shown in the SKILL.md `TRACKING_RERUN:` line (replace the
`<TRACKING_RERUN command ...>` placeholder with that exact command) using the
form: mkdir -p ~/.claude && echo "yes" > ~/.claude/.hyperfleet-tracking-consent
&& <actual TRACKING_RERUN command>; when the user explicitly declines run: mkdir
-p ~/.claude && echo "no" > ~/.claude/.hyperfleet-tracking-consent.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: b2950470-4876-4b59-a48e-e5b8a619e79c

📥 Commits

Reviewing files that changed from the base of the PR and between 2b5385b and 41d9d47.

📒 Files selected for processing (1)
  • hyperfleet-bugs-triage/skills/bugs-triage/SKILL.md

Copy link
Copy Markdown

@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: 3

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

Inline comments:
In `@hyperfleet-bugs-triage/README.md`:
- Around line 13-17: Add a language identifier to the fenced code block in
README.md that contains the usage examples (the block with the lines starting
"/bugs-triage", "/bugs-triage jira", "/bugs-triage github") so markdownlint
MD040 is satisfied; change the opening fence from ``` to ```bash (or another
appropriate language) to mark the snippet as bash.

In `@hyperfleet-bugs-triage/skills/bugs-triage/SKILL.md`:
- Around line 167-173: The GitHub search currently excludes only three triaged
labels and thus returns issues with other non-triage labels; update the gh api
search command's q parameter (the q="..." string in the gh api search/issues
call in SKILL.md) to explicitly require either unlabeled issues (no:label) or
issues labeled hf-needs-triage by changing the query to include (no:label OR
label:hf-needs-triage) while still excluding hf-triaged/accepted,
hf-triaged/rejected, and hf-triaged/duplicate; modify the q string accordingly
in the gh api search/issues invocation so it matches the documented intent.

In `@hyperfleet-jira/skills/jira-ticket-creator/references/formatting.md`:
- Around line 34-37: The fenced code block in formatting.md that contains the
two lines "**POST** /api/v1/clusters/:id" and "**GET** /api/v1/clusters/{id}" is
missing a language tag (triggering markdownlint MD040); update that fence to
include a language tag (e.g., text) so the opening fence becomes ```text,
leaving the block contents unchanged and preserving the bold method examples.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: f3115c95-7baa-49f5-923a-a8bf7f5c43d4

📥 Commits

Reviewing files that changed from the base of the PR and between 41d9d47 and 348c77f.

⛔ Files ignored due to path filters (1)
  • hyperfleet-bugs-triage/skills/bugs-triage/references/owners.csv is excluded by !**/*.csv
📒 Files selected for processing (13)
  • .claude-plugin/marketplace.json
  • CLAUDE.md
  • hyperfleet-bugs-triage/.claude-plugin/plugin.json
  • hyperfleet-bugs-triage/OWNERS
  • hyperfleet-bugs-triage/README.md
  • hyperfleet-bugs-triage/scripts/track-usage.sh
  • hyperfleet-bugs-triage/skills/bugs-triage/SKILL.md
  • hyperfleet-bugs-triage/skills/bugs-triage/references/github-repos.md
  • hyperfleet-jira/.claude-plugin/plugin.json
  • hyperfleet-jira/skills/jira-ticket-creator/SKILL.md
  • hyperfleet-jira/skills/jira-ticket-creator/references/cli-examples.md
  • hyperfleet-jira/skills/jira-ticket-creator/references/formatting.md
  • hyperfleet-jira/skills/jira-ticket-creator/references/pitfalls.md
✅ Files skipped from review due to trivial changes (6)
  • hyperfleet-bugs-triage/OWNERS
  • hyperfleet-bugs-triage/.claude-plugin/plugin.json
  • .claude-plugin/marketplace.json
  • hyperfleet-jira/.claude-plugin/plugin.json
  • hyperfleet-jira/skills/jira-ticket-creator/references/cli-examples.md
  • hyperfleet-jira/skills/jira-ticket-creator/references/pitfalls.md
🚧 Files skipped from review as they are similar to previous changes (3)
  • hyperfleet-bugs-triage/skills/bugs-triage/references/github-repos.md
  • CLAUDE.md
  • hyperfleet-bugs-triage/scripts/track-usage.sh

Copy link
Copy Markdown

@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.

♻️ Duplicate comments (1)
hyperfleet-bugs-triage/skills/bugs-triage/SKILL.md (1)

167-173: ⚠️ Potential issue | 🟠 Major

Align the GitHub search query with the documented triage scope.

Line 167 says to fetch issues that are unlabeled or hf-needs-triage, but Line 171 currently matches any open issue not carrying three specific triaged labels. That broadens scope and can reprocess issues already in other workflow states.

Suggested fix
 gh api search/issues -X GET \
-  -f q="is:issue is:open -label:hf-triaged/accepted -label:hf-triaged/rejected -label:hf-triaged/duplicate repo:openshift-hyperfleet/hyperfleet-api repo:openshift-hyperfleet/hyperfleet-adapter repo:openshift-hyperfleet/hyperfleet-sentinel repo:openshift-hyperfleet/hyperfleet-broker repo:openshift-hyperfleet/hyperfleet-chart repo:openshift-hyperfleet/hyperfleet-infra repo:openshift-hyperfleet/hyperfleet-credential-provider repo:openshift-hyperfleet/hyperfleet-logger repo:openshift-hyperfleet/hyperfleet-e2e repo:openshift-hyperfleet/maestro-cli repo:openshift-hyperfleet/architecture repo:openshift-hyperfleet/hyperfleet-claude-plugins" \
+  -f q="is:issue is:open (no:label OR label:hf-needs-triage) -label:hf-triaged/accepted -label:hf-triaged/rejected -label:hf-triaged/duplicate repo:openshift-hyperfleet/hyperfleet-api repo:openshift-hyperfleet/hyperfleet-adapter repo:openshift-hyperfleet/hyperfleet-sentinel repo:openshift-hyperfleet/hyperfleet-broker repo:openshift-hyperfleet/hyperfleet-chart repo:openshift-hyperfleet/hyperfleet-infra repo:openshift-hyperfleet/hyperfleet-credential-provider repo:openshift-hyperfleet/hyperfleet-logger repo:openshift-hyperfleet/hyperfleet-e2e repo:openshift-hyperfleet/maestro-cli repo:openshift-hyperfleet/architecture repo:openshift-hyperfleet/hyperfleet-claude-plugins" \

As per coding guidelines, "-Focus on major issues impacting performance, readability, maintainability and security. Avoid nitpicks and avoid verbosity."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@hyperfleet-bugs-triage/skills/bugs-triage/SKILL.md` around lines 167 - 173,
The GitHub search query in the gh api command in SKILL.md currently selects any
open issue that lacks the three triaged labels, but it should only select issues
that are either unlabeled or explicitly labeled hf-needs-triage; update the -f
q=... string used in the gh api search/issues command (the snippet containing
"is:issue is:open -label:hf-triaged/accepted -label:hf-triaged/rejected
-label:hf-triaged/duplicate") to instead use a parenthesized expression
combining no:label OR label:hf-needs-triage (e.g., is:issue is:open (no:label OR
label:hf-needs-triage) and still exclude the three hf-triaged/* labels) so the
query matches only unlabeled or hf-needs-triage issues in the listed repos.
🧹 Nitpick comments (1)
hyperfleet-jira/skills/jira-ticket-creator/SKILL.md (1)

127-144: Remove conflicting guidance about manual steps.

Line 127 says fields should be set during creation, but Line 143 still requires a “manual steps needed” list. This contradiction can drive inconsistent ticket workflows.

Suggested doc adjustment
 Return to user:
 - Ticket key (e.g., HYPERFLEET-123)
 - Link: https://redhat.atlassian.net/browse/HYPERFLEET-123
 - Summary of what was created
-- **List of manual steps needed**
+- **List of follow-up edits performed (only if anything could not be set at creation time)**

As per coding guidelines, "-Focus on major issues impacting performance, readability, maintainability and security. Avoid nitpicks and avoid verbosity."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@hyperfleet-jira/skills/jira-ticket-creator/SKILL.md` around lines 127 - 144,
The doc currently contradicts itself: the "All fields can be set via CLI during
creation" section claims no post-creation work is needed, but "Step 7: Verify
and Return Details" still asks for a **List of manual steps needed**; update
SKILL.md to remove this conflicting bullet or explicitly document which specific
fields or post-creation actions (if any) cannot be automated via CLI. Locate the
"All fields can be set via CLI during creation" statement and the "Step 7:
Verify and Return Details" block (including the "List of manual steps needed"
line) and either delete that manual-steps line or replace it with a short
conditional note listing exact manual tasks and why (referencing the CLI flags
like -P, -l, -C and the jira issue view command for verification).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In `@hyperfleet-bugs-triage/skills/bugs-triage/SKILL.md`:
- Around line 167-173: The GitHub search query in the gh api command in SKILL.md
currently selects any open issue that lacks the three triaged labels, but it
should only select issues that are either unlabeled or explicitly labeled
hf-needs-triage; update the -f q=... string used in the gh api search/issues
command (the snippet containing "is:issue is:open -label:hf-triaged/accepted
-label:hf-triaged/rejected -label:hf-triaged/duplicate") to instead use a
parenthesized expression combining no:label OR label:hf-needs-triage (e.g.,
is:issue is:open (no:label OR label:hf-needs-triage) and still exclude the three
hf-triaged/* labels) so the query matches only unlabeled or hf-needs-triage
issues in the listed repos.

---

Nitpick comments:
In `@hyperfleet-jira/skills/jira-ticket-creator/SKILL.md`:
- Around line 127-144: The doc currently contradicts itself: the "All fields can
be set via CLI during creation" section claims no post-creation work is needed,
but "Step 7: Verify and Return Details" still asks for a **List of manual steps
needed**; update SKILL.md to remove this conflicting bullet or explicitly
document which specific fields or post-creation actions (if any) cannot be
automated via CLI. Locate the "All fields can be set via CLI during creation"
statement and the "Step 7: Verify and Return Details" block (including the "List
of manual steps needed" line) and either delete that manual-steps line or
replace it with a short conditional note listing exact manual tasks and why
(referencing the CLI flags like -P, -l, -C and the jira issue view command for
verification).

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 3a723c7a-06a8-406c-8ca4-cd5059a1a2f3

📥 Commits

Reviewing files that changed from the base of the PR and between 348c77f and 2777f48.

⛔ Files ignored due to path filters (1)
  • hyperfleet-bugs-triage/skills/bugs-triage/references/owners.csv is excluded by !**/*.csv
📒 Files selected for processing (13)
  • .claude-plugin/marketplace.json
  • CLAUDE.md
  • hyperfleet-bugs-triage/.claude-plugin/plugin.json
  • hyperfleet-bugs-triage/OWNERS
  • hyperfleet-bugs-triage/README.md
  • hyperfleet-bugs-triage/scripts/track-usage.sh
  • hyperfleet-bugs-triage/skills/bugs-triage/SKILL.md
  • hyperfleet-bugs-triage/skills/bugs-triage/references/github-repos.md
  • hyperfleet-jira/.claude-plugin/plugin.json
  • hyperfleet-jira/skills/jira-ticket-creator/SKILL.md
  • hyperfleet-jira/skills/jira-ticket-creator/references/cli-examples.md
  • hyperfleet-jira/skills/jira-ticket-creator/references/formatting.md
  • hyperfleet-jira/skills/jira-ticket-creator/references/pitfalls.md
✅ Files skipped from review due to trivial changes (8)
  • hyperfleet-jira/.claude-plugin/plugin.json
  • hyperfleet-bugs-triage/OWNERS
  • hyperfleet-bugs-triage/.claude-plugin/plugin.json
  • CLAUDE.md
  • .claude-plugin/marketplace.json
  • hyperfleet-bugs-triage/skills/bugs-triage/references/github-repos.md
  • hyperfleet-jira/skills/jira-ticket-creator/references/formatting.md
  • hyperfleet-jira/skills/jira-ticket-creator/references/cli-examples.md

@rafabene rafabene marked this pull request as draft March 25, 2026 22:52
@rafabene rafabene marked this pull request as ready for review March 25, 2026 23:08
@openshift-ci openshift-ci bot requested a review from crizzo71 March 25, 2026 23:08
@rafabene rafabene force-pushed the HYPERFLEET-811 branch 4 times, most recently from d08946f to af3bada Compare March 25, 2026 23:15
Copy link
Copy Markdown

@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

🧹 Nitpick comments (2)
hyperfleet-jira/skills/jira-ticket-creator/SKILL.md (1)

141-144: Make manual steps conditional instead of always required.

Line 143 asks for a manual-steps list unconditionally, but Line 127 says all fields can be set during creation. This can produce misleading output when no follow-up actions are needed. Make this conditional (“if any”).

Proposed edit
 - Summary of what was created
-- **List of manual steps needed**
+- **Manual steps needed (if any)**

As per coding guidelines, "Focus on major issues impacting performance, readability, maintainability and security. Avoid nitpicks and avoid verbosity."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@hyperfleet-jira/skills/jira-ticket-creator/SKILL.md` around lines 141 - 144,
The "List of manual steps needed" section is currently always shown and can be
misleading when there are no follow-up actions; update the SKILL.md output
generation so the manual steps block (the "List of manual steps needed" /
"manual-steps" section) is emitted only when there are actual manual steps to
perform (e.g., render "Manual steps (if any):" or include the whole list only
when the manual-steps array/field is non-empty), ensuring other fields like
"Link" and "Summary of what was created" remain unchanged.
hyperfleet-bugs-triage/skills/bugs-triage/SKILL.md (1)

153-159: Avoid duplicating repo scope in command strings.

The workflow says to read references/github-repos.md, but the query hardcodes all repos inline. This creates drift risk when the scope file changes.

Refactor sketch
-gh api search/issues -X GET \
-  -f q="is:issue is:open ... repo:openshift-hyperfleet/hyperfleet-api ... repo:openshift-hyperfleet/hyperfleet-claude-plugins" \
+REPOS="$(awk '/^- `/{gsub(/[`-]/,""); gsub(/^[[:space:]]+|[[:space:]]+$/,""); printf "repo:openshift-hyperfleet/%s ", $0}' references/github-repos.md)"
+gh api search/issues -X GET \
+  -f q="is:issue is:open ... ${REPOS}" \

As per coding guidelines, "Focus on major issues impacting performance, readability, maintainability and security. Avoid nitpicks and avoid verbosity."

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

Inline comments:
In `@hyperfleet-bugs-triage/skills/bugs-triage/SKILL.md`:
- Around line 273-274: The policy line "Use `jira` CLI for Jira and `gh` CLI for
GitHub — no other tools" conflicts with the declared allowed-tools; update the
wording in SKILL.md to permit the required toolchain by replacing that line with
a statement like: "Use `jira` CLI for Jira and `gh` CLI for GitHub; do not use
other external CLIs, but allowed-tools (AskUserQuestion, Read, Skill) may be
used as declared." Ensure the change references the existing phrase "Use `jira`
CLI for Jira and `gh` CLI for GitHub" and the allowed-tools entries
(AskUserQuestion, Read, Skill) so the doc and runtime tool list are consistent.
- Line 118: The Close command line uses a pipe-delimited resolution string which
conflicts with the file's placeholder style; update the Close example (the line
containing: jira issue move TICKET-KEY "Closed" --resolution "Won't
Do|Rejected|Duplicate") to use the same placeholder convention—either replace
the pipe syntax with an angle-bracketed alternatives placeholder like
--resolution "<Won't Do|Rejected|Duplicate>" or, better, use a single
descriptive placeholder such as --resolution "<Resolution>" and list the
acceptable values elsewhere for consistency.

---

Nitpick comments:
In `@hyperfleet-jira/skills/jira-ticket-creator/SKILL.md`:
- Around line 141-144: The "List of manual steps needed" section is currently
always shown and can be misleading when there are no follow-up actions; update
the SKILL.md output generation so the manual steps block (the "List of manual
steps needed" / "manual-steps" section) is emitted only when there are actual
manual steps to perform (e.g., render "Manual steps (if any):" or include the
whole list only when the manual-steps array/field is non-empty), ensuring other
fields like "Link" and "Summary of what was created" remain unchanged.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: a4de7e41-1828-4e27-bd3e-20d4f4952413

📥 Commits

Reviewing files that changed from the base of the PR and between 348c77f and af3bada.

⛔ Files ignored due to path filters (1)
  • hyperfleet-bugs-triage/skills/bugs-triage/references/owners.csv is excluded by !**/*.csv
📒 Files selected for processing (12)
  • .claude-plugin/marketplace.json
  • CLAUDE.md
  • hyperfleet-bugs-triage/.claude-plugin/plugin.json
  • hyperfleet-bugs-triage/OWNERS
  • hyperfleet-bugs-triage/README.md
  • hyperfleet-bugs-triage/skills/bugs-triage/SKILL.md
  • hyperfleet-bugs-triage/skills/bugs-triage/references/github-repos.md
  • hyperfleet-jira/.claude-plugin/plugin.json
  • hyperfleet-jira/skills/jira-ticket-creator/SKILL.md
  • hyperfleet-jira/skills/jira-ticket-creator/references/cli-examples.md
  • hyperfleet-jira/skills/jira-ticket-creator/references/formatting.md
  • hyperfleet-jira/skills/jira-ticket-creator/references/pitfalls.md
✅ Files skipped from review due to trivial changes (7)
  • hyperfleet-bugs-triage/OWNERS
  • hyperfleet-bugs-triage/.claude-plugin/plugin.json
  • hyperfleet-bugs-triage/skills/bugs-triage/references/github-repos.md
  • .claude-plugin/marketplace.json
  • hyperfleet-jira/skills/jira-ticket-creator/references/formatting.md
  • hyperfleet-jira/skills/jira-ticket-creator/references/cli-examples.md
  • hyperfleet-bugs-triage/README.md
🚧 Files skipped from review as they are similar to previous changes (2)
  • CLAUDE.md
  • hyperfleet-jira/.claude-plugin/plugin.json

Copy link
Copy Markdown
Contributor

@ciaranRoche ciaranRoche left a comment

Choose a reason for hiding this comment

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

Left some comments inline, a couple of things outside the diff:

  • Version conflict with PR #17: This bumps hyperfleet-jira from 0.4.0 to 0.4.1, while #17 bumps it to 0.5.0. Whichever merges second will conflict.

  • hyperfleet-jira/.claude-plugin/plugin.json description: Still says "with proper JIRA wiki markup" but the refactored skill now uses Markdown. Should update to match.

  • Markdown vs wiki markup switch: This is the big one. The old skill was very emphatic about NOT using Markdown, and now the new version says the opposite. Have you verified curly braces, fenced code blocks, and nested lists all render correctly? The old skill specifically called out HYPERFLEET-255 and HYPERFLEET-258 as tickets where this broke rendering. If those were just user error at the time, that's fine, but worth confirming since everyone on the team has been trained to avoid Markdown in JIRA descriptions.

The bugs-triage plugin looks solid, good call delegating ticket creation to jira-ticket-creator instead of duplicating content. The refactor from 738 to ~195 lines is a nice cleanup.

```text
**POST** /api/v1/clusters/:id (bold method, colon notation)
**GET** /api/v1/clusters/{id} (curly braces work too)
```
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.

Can you confirm curly braces actually render correctly now? The old SKILL.md was very specific that curly braces broke JIRA rendering, with real ticket references (HYPERFLEET-255, HYPERFLEET-258). If the jira-cli Markdown to ADF conversion handles this properly now, then this whole refactor makes sense, just want to make sure we are not going to break ticket descriptions for everyone.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Confirmed. I asked it jira-cli to write a Jira comment using all mentioned formats in this comment: https://redhat.atlassian.net/browse/HYPERFLEET-811?focusedCommentId=16546261

I believe that the updated jira-cli/jira server fixed the issues from HYPERFLEET-255 and 258.

@rafabene
Copy link
Copy Markdown
Contributor Author

@ciaranRoche Thanks for the review!

Version conflict with PR #17: I put PR #17 on hold because I need to guarantee that calling the github actions dispatcher needs the proper permission. So I gave priority to this one as bugs triage seems to be more needed. Once this PR is merged I can return to plugin tracking (including this)

plugin.json description: Good catch — fixed. Removed the "with proper JIRA wiki markup" reference.

Markdown vs wiki markup: Yes, I verified this. The jira-cli sends descriptions to JIRA Cloud's
REST API, which accepts Markdown and converts it to ADF (Atlassian Document Format)
internally. Curly braces, fenced code blocks, and nested lists all render correctly — tested
during HYPERFLEET-811 work. The old wiki markup approach was likely based on the assumption
that JIRA Server/DC rules applied to Cloud, but jira-cli handles the conversion. Maybe the new Jira/jira-cli fixed it.

Copy link
Copy Markdown

@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

🧹 Nitpick comments (1)
hyperfleet-bugs-triage/skills/bugs-triage/SKILL.md (1)

153-157: Align the query description with actual filter behavior.

Line 153 says the query returns issues that are unlabeled or hf-needs-triage, but Line 157 actually returns any open issue missing hf-triaged/* labels. This mismatch will confuse future maintenance and triage expectations.

Proposed wording fix
-First, read `references/github-repos.md` to get the list of repos in scope. Then query only those repos. The query fetches issues that are either unlabeled or have `hf-needs-triage` but NOT already triaged labels:
+First, read `references/github-repos.md` to get the list of repos in scope. Then query only those repos. The query fetches open issues that are not yet marked with final triage labels (`hf-triaged/accepted`, `hf-triaged/rejected`, `hf-triaged/duplicate`):
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@hyperfleet-bugs-triage/skills/bugs-triage/SKILL.md` around lines 153 - 157,
The description text says the query returns issues that are unlabeled or labeled
hf-needs-triage, but the actual gh api search/issues command filters for any
open issue missing hf-triaged/* labels; update the prose in SKILL.md to match
the command by explicitly stating that the query returns open issues across the
repos listed in references/github-repos.md that do not have any hf-triaged/*
labels (not just unlabeled or hf-needs-triage), and mention the specific labels
(hf-needs-triage and hf-triaged/accepted, hf-triaged/rejected,
hf-triaged/duplicate) so readers understand the exact filter used by the gh api
search/issues command.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@hyperfleet-jira/skills/jira-ticket-creator/references/pitfalls.md`:
- Around line 28-30: The fenced code block containing the literal "Error:
customfield_12311141: Epic Name is required." is unlabeled and triggers MD040;
add a language tag (e.g., change the opening fence from ``` to ```text) so the
block reads as a text code fence, keeping the block content unchanged to satisfy
markdown linting.

---

Nitpick comments:
In `@hyperfleet-bugs-triage/skills/bugs-triage/SKILL.md`:
- Around line 153-157: The description text says the query returns issues that
are unlabeled or labeled hf-needs-triage, but the actual gh api search/issues
command filters for any open issue missing hf-triaged/* labels; update the prose
in SKILL.md to match the command by explicitly stating that the query returns
open issues across the repos listed in references/github-repos.md that do not
have any hf-triaged/* labels (not just unlabeled or hf-needs-triage), and
mention the specific labels (hf-needs-triage and hf-triaged/accepted,
hf-triaged/rejected, hf-triaged/duplicate) so readers understand the exact
filter used by the gh api search/issues command.
🪄 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: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: cbe1bb96-48da-4131-969f-94c7f9ca1fab

📥 Commits

Reviewing files that changed from the base of the PR and between af3bada and 2efa3f1.

⛔ Files ignored due to path filters (1)
  • hyperfleet-bugs-triage/skills/bugs-triage/references/owners.csv is excluded by !**/*.csv
📒 Files selected for processing (12)
  • .claude-plugin/marketplace.json
  • CLAUDE.md
  • hyperfleet-bugs-triage/.claude-plugin/plugin.json
  • hyperfleet-bugs-triage/OWNERS
  • hyperfleet-bugs-triage/README.md
  • hyperfleet-bugs-triage/skills/bugs-triage/SKILL.md
  • hyperfleet-bugs-triage/skills/bugs-triage/references/github-repos.md
  • hyperfleet-jira/.claude-plugin/plugin.json
  • hyperfleet-jira/skills/jira-ticket-creator/SKILL.md
  • hyperfleet-jira/skills/jira-ticket-creator/references/cli-examples.md
  • hyperfleet-jira/skills/jira-ticket-creator/references/formatting.md
  • hyperfleet-jira/skills/jira-ticket-creator/references/pitfalls.md
✅ Files skipped from review due to trivial changes (6)
  • hyperfleet-bugs-triage/OWNERS
  • .claude-plugin/marketplace.json
  • CLAUDE.md
  • hyperfleet-bugs-triage/.claude-plugin/plugin.json
  • hyperfleet-jira/skills/jira-ticket-creator/references/formatting.md
  • hyperfleet-jira/skills/jira-ticket-creator/references/cli-examples.md
🚧 Files skipped from review as they are similar to previous changes (3)
  • hyperfleet-bugs-triage/skills/bugs-triage/references/github-repos.md
  • hyperfleet-jira/.claude-plugin/plugin.json
  • hyperfleet-bugs-triage/README.md

…icket-creator

- Add bugs-triage skill for interactive Jira bug and GitHub issue triage
- Refactor jira-ticket-creator: split into SKILL.md + 3 reference files
- Correct formatting: jira-cli accepts Markdown (not wiki markup)
- Add Activity Type tiebreaker rules and delegate story points to jira-story-pointer
- Add language identifiers to all fenced code blocks
Copy link
Copy Markdown

@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.

♻️ Duplicate comments (1)
hyperfleet-bugs-triage/skills/bugs-triage/SKILL.md (1)

153-173: ⚠️ Potential issue | 🟠 Major

Hardcoded repo list creates maintenance drift risk.

Line 153 instructs reading references/github-repos.md dynamically, but lines 157 and 171 hardcode all 12 repositories in the gh api search/issues queries. If a repository is added to github-repos.md, it won't be picked up by the triage queries, causing scope drift.

♻️ Proposed solutions

Solution 1 (Recommended): Construct query dynamically from github-repos.md

At line 153, before the first query, add a command block to extract and format the repo list:

 First, read `references/github-repos.md` to get the list of repos in scope. Then query only those repos. The query fetches issues that are either unlabeled or have `hf-needs-triage` but NOT already triaged labels:

+```bash
+# Extract repo names and build query fragment
+REPOS=$(grep -E '^- `' references/github-repos.md | sed 's/^- `//;s/`$//' | sed 's/^/repo:openshift-hyperfleet\//' | tr '\n' ' ')
+```
+
 ```bash
 gh api search/issues -X GET \
-  -f q="is:issue is:open -label:hf-triaged/accepted -label:hf-triaged/rejected -label:hf-triaged/duplicate repo:openshift-hyperfleet/hyperfleet-api repo:openshift-hyperfleet/hyperfleet-adapter repo:openshift-hyperfleet/hyperfleet-sentinel repo:openshift-hyperfleet/hyperfleet-broker repo:openshift-hyperfleet/hyperfleet-chart repo:openshift-hyperfleet/hyperfleet-infra repo:openshift-hyperfleet/hyperfleet-credential-provider repo:openshift-hyperfleet/hyperfleet-logger repo:openshift-hyperfleet/hyperfleet-e2e repo:openshift-hyperfleet/maestro-cli repo:openshift-hyperfleet/architecture repo:openshift-hyperfleet/hyperfleet-claude-plugins" \
+  -f q="is:issue is:open -label:hf-triaged/accepted -label:hf-triaged/rejected -label:hf-triaged/duplicate $REPOS" \

Apply the same pattern to the query at lines 170-173.

Solution 2: Remove the reference file and maintain the list in SKILL.md

If dynamic construction is too complex, remove references/github-repos.md and document the canonical list only in SKILL.md to avoid the two-source-of-truth problem.

As per coding guidelines, this maintenance issue impacts readability and long-term correctness.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@hyperfleet-bugs-triage/skills/bugs-triage/SKILL.md` around lines 153 - 173,
Replace the hardcoded repo lists used in the two gh api search/issues commands
with a dynamically built REPOS variable: add a small command block that parses
references/github-repos.md to extract repository slugs and prefixes them with
"repo:openshift-hyperfleet/" (store result in REPOS), then update both gh api
search/issues invocations (the commands that start with gh api search/issues -X
GET and include the long repo:openshift-hyperfleet/... list) to use "$REPOS" in
the -f q="... $REPOS" fragment instead of the inline list; ensure the parsing
handles the markdown list format used in references/github-repos.md and that
$REPOS is properly quoted in the query string.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In `@hyperfleet-bugs-triage/skills/bugs-triage/SKILL.md`:
- Around line 153-173: Replace the hardcoded repo lists used in the two gh api
search/issues commands with a dynamically built REPOS variable: add a small
command block that parses references/github-repos.md to extract repository slugs
and prefixes them with "repo:openshift-hyperfleet/" (store result in REPOS),
then update both gh api search/issues invocations (the commands that start with
gh api search/issues -X GET and include the long repo:openshift-hyperfleet/...
list) to use "$REPOS" in the -f q="... $REPOS" fragment instead of the inline
list; ensure the parsing handles the markdown list format used in
references/github-repos.md and that $REPOS is properly quoted in the query
string.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: c44a49a1-e4c7-47c7-8e03-49caa576728a

📥 Commits

Reviewing files that changed from the base of the PR and between 2efa3f1 and 7023261.

⛔ Files ignored due to path filters (1)
  • hyperfleet-bugs-triage/skills/bugs-triage/references/owners.csv is excluded by !**/*.csv
📒 Files selected for processing (12)
  • .claude-plugin/marketplace.json
  • CLAUDE.md
  • hyperfleet-bugs-triage/.claude-plugin/plugin.json
  • hyperfleet-bugs-triage/OWNERS
  • hyperfleet-bugs-triage/README.md
  • hyperfleet-bugs-triage/skills/bugs-triage/SKILL.md
  • hyperfleet-bugs-triage/skills/bugs-triage/references/github-repos.md
  • hyperfleet-jira/.claude-plugin/plugin.json
  • hyperfleet-jira/skills/jira-ticket-creator/SKILL.md
  • hyperfleet-jira/skills/jira-ticket-creator/references/cli-examples.md
  • hyperfleet-jira/skills/jira-ticket-creator/references/formatting.md
  • hyperfleet-jira/skills/jira-ticket-creator/references/pitfalls.md
✅ Files skipped from review due to trivial changes (10)
  • hyperfleet-bugs-triage/skills/bugs-triage/references/github-repos.md
  • hyperfleet-bugs-triage/.claude-plugin/plugin.json
  • CLAUDE.md
  • .claude-plugin/marketplace.json
  • hyperfleet-jira/skills/jira-ticket-creator/references/formatting.md
  • hyperfleet-jira/.claude-plugin/plugin.json
  • hyperfleet-jira/skills/jira-ticket-creator/references/pitfalls.md
  • hyperfleet-bugs-triage/OWNERS
  • hyperfleet-jira/skills/jira-ticket-creator/references/cli-examples.md
  • hyperfleet-bugs-triage/README.md

@rafabene rafabene marked this pull request as draft March 27, 2026 22:12
@rafabene
Copy link
Copy Markdown
Contributor Author

Part of this PR has been moved to another ticket

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants