plugins/jira/skills/jira-validate-blockers/SKILL.md
Detailed implementation guide for validating proposed release blockers
npx skillsauth add openshift-eng/ai-helpers jira-validate-blockersInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill provides detailed implementation guidance for the /jira:validate-blockers command, which helps release managers make data-driven blocker approval/rejection decisions.
This skill is invoked automatically when the /jira:validate-blockers command is executed. It provides step-by-step implementation details for:
Parse command-line arguments:
--bug flag value (optional, for single bug validation mode)Project:
Validate inputs:
--bug nor target-version is provided, error out with message: "Error: Either target-version or --bug must be provided. Usage: /jira:validate-blockers [target-version] [component-filter] [--bug issue-key]"Determine query mode:
Single bug mode (if --bug is provided):
getJiraIssue to fetch the single bugVersion + component mode (if both target version and component are provided):
Version only mode (if only target version provided):
Base JQL for proposed blockers:
project = OCPBUGS AND type = Bug AND "Release Blocker" = Proposed
IMPORTANT: Use "Release Blocker" = Proposed NOT cf[12319743]. The field ID customfield_10847 is the Release Blocker field, but in JQL use the field name.
Version filter construction:
When target version is provided (e.g., "4.21"), expand to search for both X.Y and X.Y.0:
AND ("Target Version" in (4.21, 4.21.0) OR "Target Backport Versions" in (4.21, 4.21.0) OR affectedVersion in (4.21, 4.21.0))
Status exclusion filter:
Always exclude already-fixed bugs:
AND status not in (Closed, "Release Pending", Verified, ON_QA)
Component filter construction:
No component specified:
Single component:
AND component = "{COMPONENT}"
Multiple components (comma-separated):
AND component IN ({COMPONENT_LIST})
Final JQL examples:
Version only (4.21):
project = OCPBUGS AND type = Bug AND "Release Blocker" = Proposed AND ("Target Version" in (4.21, 4.21.0) OR "Target Backport Versions" in (4.21, 4.21.0) OR affectedVersion in (4.21, 4.21.0)) AND status not in (Closed, "Release Pending", Verified, ON_QA)
Version + component (4.21, "Hypershift"):
project = OCPBUGS AND type = Bug AND "Release Blocker" = Proposed AND ("Target Version" in (4.21, 4.21.0) OR "Target Backport Versions" in (4.21, 4.21.0) OR affectedVersion in (4.21, 4.21.0)) AND status not in (Closed, "Release Pending", Verified, ON_QA) AND component = "Hypershift"
Version + multiple components (4.21, "Hypershift,CVO"):
project = OCPBUGS AND type = Bug AND "Release Blocker" = Proposed AND ("Target Version" in (4.21, 4.21.0) OR "Target Backport Versions" in (4.21, 4.21.0) OR affectedVersion in (4.21, 4.21.0)) AND status not in (Closed, "Release Pending", Verified, ON_QA) AND component IN ("Hypershift", "Cluster Version Operator")
Use MCP tools to fetch proposed blockers:
For version/component mode, use searchJiraIssuesUsingJql:
nextPageToken to paginate if more results exist)Parse the response to extract:
Custom fields to include:
customfield_10847 - Release Blocker status (should be "Proposed")customfield_10855 - Target VersionFor single bug mode (--bug flag), fetch the bug by key via getJiraIssue:
Handle query results:
Analyze each proposed blocker using Red Hat OpenShift release blocker criteria.
Red Hat OpenShift Release Blocker Criteria:
Based on the official OpenShift blocker definition, bugs should be approved as release blockers when they meet these criteria:
Automatic/Strong Blockers (Recommend APPROVE):
Never Blockers (Recommend REJECT):
ci-fail, ci-only, test-flakeWorkaround Assessment (may affect recommendation):
An acceptable workaround must meet ALL three criteria:
If a workaround doesn't meet all three criteria, it's NOT an acceptable workaround.
For each proposed blocker:
ci-fail, ci-only, test-flakeexpand="renderedFields" to get comment textUse MCP tools:
getJiraIssue with expand="renderedFields" to get commentsCreate comprehensive Markdown report with all blocker validation results.
Report Structure:
# 🚫 Release Blocker Validation Report
**Components**: {component list or "All"} | **Project**: OCPBUGS | **Proposed Blockers**: {count} | **Generated**: {timestamp}
## Summary
- ✅ **Recommend APPROVE**: X
- ❌ **Recommend REJECT**: Y
- ⚠️ **Needs DISCUSSION**: Z
---
## Blocker Analysis
### {BUG-KEY}: {Summary} {VERDICT}
**Recommendation**: {APPROVE/REJECT/DISCUSS} - {One-line justification}
**Criteria Matched**:
- {✅/❌} {Criterion name}
- {✅/❌} {Criterion name}
- ...
**Justification**:
{Detailed explanation of why this bug should or shouldn't be a blocker}
**Suggested Action**: {What to do next}
---
[Repeat for each proposed blocker]
---
## Next Steps
1. Review APPROVE recommendations - add to blocker list
2. Review REJECT recommendations - remove blocker status
3. Discuss unclear cases in triage meeting
Special case for single bug mode:
When --bug flag is used, adapt the report to focus on a single bug:
Invalid issue ID (single bug mode):
Invalid arguments:
No proposed blockers found:
MCP tool errors:
searchJiraIssuesUsingJql fails, display JQL query and error messagegetJiraIssue fails:
https://redhat.atlassian.net/browse/{issue-key}Large result sets (>50 blockers):
searchJiraIssuesUsingJql with appropriate maxResults (avoid pagination when possible)Version only (4.21):
project = OCPBUGS AND type = Bug AND "Release Blocker" = Proposed AND ("Target Version" in (4.21, 4.21.0) OR "Target Backport Versions" in (4.21, 4.21.0) OR affectedVersion in (4.21, 4.21.0)) AND status not in (Closed, "Release Pending", Verified, ON_QA)
Version + single component (4.21, "Hypershift"):
project = OCPBUGS AND type = Bug AND "Release Blocker" = Proposed AND ("Target Version" in (4.21, 4.21.0) OR "Target Backport Versions" in (4.21, 4.21.0) OR affectedVersion in (4.21, 4.21.0)) AND status not in (Closed, "Release Pending", Verified, ON_QA) AND component = "Hypershift"
Version + multiple components (4.21, multiple):
project = OCPBUGS AND type = Bug AND "Release Blocker" = Proposed AND ("Target Version" in (4.21, 4.21.0) OR "Target Backport Versions" in (4.21, 4.21.0) OR affectedVersion in (4.21, 4.21.0)) AND status not in (Closed, "Release Pending", Verified, ON_QA) AND component IN ("Hypershift", "Cluster Version Operator")
| Field Name | Field ID | JQL Name | Type |
|---|---|---|---|
| Release Blocker | customfield_10847 | "Release Blocker" | String |
| Target Version | customfield_10855 | "Target Version" | String |
testing
Snapshot OpenShift payload data (release controller, PR diffs, comments, CI jobs, JUnit results, regression tracking) to a local directory for offline analysis
research
Shared engine for analyzing Jira issue activity and generating status summaries
tools
This skill should be used before any Snowflake command to verify MCP connectivity, guide users through access provisioning, and set the session context. Invoke this skill proactively whenever a command needs Snowflake data access.
development
Analyze a payload snapshot to identify root causes of blocking job failures, score candidate PRs, and produce an HTML report with revert recommendations