Skip to content

jira: add ready-to-solve command for validating issue readiness - #429

Merged
openshift-merge-bot[bot] merged 3 commits into
openshift-eng:mainfrom
enxebre:jira-ready-to-solve
Apr 28, 2026
Merged

openshift-merge-bot[bot] merged 3 commits into
openshift-eng:mainfrom
enxebre:jira-ready-to-solve

Conversation

@enxebre

@enxebre enxebre commented Apr 22, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add /jira:ready-to-solve command that validates whether a Jira issue is well-groomed enough for /jira:solve to produce a quality solution
  • Runs two-phase validation: deterministic checks via Python script (required sections, content length, structure) + AI qualitative assessment (AC specificity, implementation context, success/failure conditions)
  • Supports --dry-run, --verbose, and --fix flags — --fix generates a revised description for failing sections and asks for user confirmation before updating
  • On pass, adds the Jira label ready-to-solve. On fail, adds not-ready-to-solve. Removes the stale opposite label if present.

Test plan

  • Tested deterministic script against CNTRLPLANE-2789 (passes all 8 checks)
  • Tested against issues with missing sections (correctly reports failures)
  • Tested null/empty description handling
  • Tested both Jira wiki markup (h2.) and Markdown (##) heading formats
  • make lint passes
  • End-to-end test with --fix flag on a failing issue

🤖 Generated with Claude Code via /jira:ready-to-solve

Summary by CodeRabbit

  • New Features
    • Added /jira:ready-to-solve — validates Jira issue readiness with deterministic structure checks plus AI assessments and returns a structured PASS/FAIL readiness report.
  • Options
    • Supports --fix (propose and apply confirmed description fixes), --dry-run (no label/issue changes), and --verbose (include detailed validation output).
  • Documentation
    • Added usage guide, examples, error handling, and implementation notes for the new command.
  • Chore
    • Jira plugin version bumped to 0.4.1.

@openshift-ci
openshift-ci Bot requested review from brandisher and bryan-cox April 22, 2026 09:22
@openshift-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Apr 22, 2026
@coderabbitai

coderabbitai Bot commented Apr 22, 2026

Copy link
Copy Markdown
Contributor

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 23cd981e-c8a9-4abe-9c39-f933d5edf056

📥 Commits

Reviewing files that changed from the base of the PR and between 13d6b25 and 53829fd.

📒 Files selected for processing (2)
  • plugins/jira/commands/ready-to-solve.md
  • plugins/jira/skills/ready-to-solve/SKILL.md
✅ Files skipped from review due to trivial changes (2)
  • plugins/jira/commands/ready-to-solve.md
  • plugins/jira/skills/ready-to-solve/SKILL.md

Walkthrough

Adds a new Jira command /jira:ready-to-solve (docs, skill spec, CLI validator) and bumps the Jira plugin version from 0.3.9 → 0.4.1. The feature validates issue descriptions, can propose/apply fixes, and updates readiness labels (dry-run and verbose flags supported).

Changes

Cohort / File(s) Summary
Plugin Metadata & Registry
/.claude-plugin/marketplace.json, plugins/jira/.claude-plugin/plugin.json, docs/data.json
Bumped Jira plugin version 0.3.90.4.1. docs/data.json also adds the ready-to-solve command and skill entry.
Command Docs
PLUGINS.md, plugins/jira/commands/ready-to-solve.md
Added /jira:ready-to-solve <jira-issue-key> [--dry-run] [--verbose] [--fix] documentation, workflow, flags, examples, label behavior, and structured report format.
Skill Spec
plugins/jira/skills/ready-to-solve/SKILL.md
New implementation guide describing fetch flow, deterministic checks, AI assessments, aggregation logic, fix/apply flow, label update rules, error handling, and examples.
Deterministic Validator Script
plugins/jira/skills/ready-to-solve/check_sections.py
New CLI script that reads JSON stdin, extracts description, locates sections via regex, enforces presence/length/list thresholds, emits structured JSON (checks, stats, overall_pass), supports --verbose, and sets exit codes for error conditions.

Sequence Diagram(s)

sequenceDiagram
    actor User
    participant Cmd as "Command\n/jira:ready-to-solve"
    participant Jira as "Jira API"
    participant Script as "check_sections.py"
    participant AI as "AI Assessor"
    participant Labeler as "Label Applier"

    User->>Cmd: invoke with <jira-issue-key> [--dry-run|--verbose|--fix]
    Cmd->>Jira: fetch issue fields (description, summary, labels, status, issuetype)
    Jira-->>Cmd: return issue fields

    Cmd->>Script: send description JSON for deterministic checks
    Script-->>Cmd: deterministic results (checks, stats, overall_pass)

    Cmd->>AI: request qualitative assessments (AC, context, success/failure)
    AI-->>Cmd: qualitative PASS/FAIL/WARNING verdicts

    Cmd->>Cmd: aggregate deterministic + AI verdicts -> overall_pass

    alt overall_pass == true
        Cmd->>Labeler: apply `ready-to-solve` (unless --dry-run)
    else overall_pass == false
        alt --fix provided
            Cmd->>Cmd: generate proposed description edits
            Cmd->>User: show proposed diff
            User-->>Cmd: approve/decline
            alt approved
                Cmd->>Jira: update issue description
                Cmd->>Script: re-run deterministic checks
            end
        else
            Cmd->>Labeler: apply `not-ready-to-solve` (unless --dry-run)
        end
    end

    Labeler->>Jira: update labels (if not dry-run)
    Jira-->>Labeler: confirm label update
    Cmd->>User: output structured readiness report
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

🚥 Pre-merge checks | ✅ 9 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (9 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: adding a new /jira:ready-to-solve command for validating Jira issue readiness, which is the primary focus across all modified files.
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.
No Real People Names In Style References ✅ Passed The pull request contains no violations of the 'No Real People Names in Style References' check. All files use only generic placeholders without attributing styles to real people's names.
No Assumed Git Remote Names ✅ Passed The pull request introduces a new /jira:ready-to-solve command for validating Jira issue readiness, which contains no git operations or hardcoded git remote names.
Git Push Safety Rules ✅ Passed PR introduces new Jira command with no unsafe git operations, autonomous git pushes, or force push commands detected.
No Untrusted Mcp Servers ✅ Passed The PR introduces a new /jira:ready-to-solve command with documentation and Python validation script, using existing Jira MCP tools and standard library imports only.
Ai-Helpers Overlap Detection ✅ Passed The new /jira:ready-to-solve command adds validation for individual Jira issue readiness before the solve workflow. Comparison with existing jira commands shows no overlap: /jira:grooming handles bulk issue collection and meeting preparation; /jira:validate-blockers validates against release criteria; /jira:solve performs the actual solution implementation. The ready-to-solve command is complementary to these—it serves as a prerequisite validation step for /jira:solve rather than competing with any existing functionality. All semantic similarity scores calculated against existing commands fall well below the 60% threshold (ranging from 7.5% to 28%).

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

@coderabbitai coderabbitai Bot left a comment

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.

Actionable comments posted: 2

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

Inline comments:
In `@plugins/jira/skills/ready-to-solve/check_sections.py`:
- Line 43: The type hints use Python 3.9+ syntax (e.g., list[str], tuple[bool,
str], re.Pattern); update them for Python 3.8 compatibility by importing List,
Tuple, and Pattern from typing and replacing annotations accordingly (e.g.,
change build_heading_regex(headings: list[str]) -> re.Pattern to
build_heading_regex(headings: List[str]) -> Pattern) and similarly update any
functions using tuple[bool, str] to Tuple[bool, str]; ensure the typing imports
are added at top of the module.

In `@plugins/jira/skills/ready-to-solve/SKILL.md`:
- Around line 42-44: Change the Phase 1 Jira fetch URL in SKILL.md so it uses
the same Jira instance as the later update step: replace the host
"issues.redhat.com" with "redhat.atlassian.net" in the curl request that
retrieves issue fields (the curl line that queries
/rest/api/2/issue/{issue_key}?fields=description,summary,labels,status,issuetype)
so read and write operations use a consistent Jira base URL.
🪄 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: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 217a614b-9d5e-417b-ad1a-68b497eea2cd

📥 Commits

Reviewing files that changed from the base of the PR and between 8c54279 and 174ffb3.

📒 Files selected for processing (7)
  • .claude-plugin/marketplace.json
  • PLUGINS.md
  • docs/data.json
  • plugins/jira/.claude-plugin/plugin.json
  • plugins/jira/commands/ready-to-solve.md
  • plugins/jira/skills/ready-to-solve/SKILL.md
  • plugins/jira/skills/ready-to-solve/check_sections.py

Comment thread plugins/jira/skills/ready-to-solve/check_sections.py Outdated
Comment thread plugins/jira/skills/ready-to-solve/SKILL.md
@enxebre
enxebre force-pushed the jira-ready-to-solve branch from 3c9879e to a8c5eb2 Compare April 22, 2026 10:19
Add /jira:ready-to-solve command that checks whether a Jira issue is
well-groomed enough for /jira:solve to produce a quality solution.

Runs a two-phase validation:
- Deterministic checks via a Python script (required sections exist,
  have adequate content, proper structure)
- AI qualitative assessment (AC specificity, implementation context,
  clear success/failure conditions)

Supports --dry-run, --verbose, and --fix flags. The --fix flag generates
a revised description for failing sections and asks for confirmation
before updating the issue.

On pass adds the Jira label ready-to-solve, on fail adds
not-ready-to-solve.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@enxebre
enxebre force-pushed the jira-ready-to-solve branch from a8c5eb2 to f43ba33 Compare April 22, 2026 10:23

@coderabbitai coderabbitai Bot left a comment

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.

♻️ Duplicate comments (1)
plugins/jira/skills/ready-to-solve/SKILL.md (1)

42-44: ⚠️ Potential issue | 🟡 Minor

Use consistent Jira instance URL across operations.

Line 43 uses issues.redhat.com for the fetch operation, while line 143 uses redhat.atlassian.net for the update operation. The codebase consistently uses redhat.atlassian.net for API operations. Align the fetch URL to match:

🔧 Proposed fix
 curl -s -H "Authorization: Bearer $JIRA_PERSONAL_TOKEN" \
-  "https://issues.redhat.com/rest/api/2/issue/{issue_key}?fields=description,summary,labels,status,issuetype"
+  "https://redhat.atlassian.net/rest/api/2/issue/{issue_key}?fields=description,summary,labels,status,issuetype"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/jira/skills/ready-to-solve/SKILL.md` around lines 42 - 44, The fetch
curl in SKILL.md uses the wrong Jira host; update the URL in the curl command
that retrieves issue fields (the line with curl -s -H "Authorization: Bearer
$JIRA_PERSONAL_TOKEN"
"https://issues.redhat.com/rest/api/2/issue/{issue_key}?fields=description,summary,labels,status,issuetype")
to use the same host as the update operation (redhat.atlassian.net) so all Jira
API calls are consistent.
🧹 Nitpick comments (3)
plugins/jira/skills/ready-to-solve/SKILL.md (2)

124-126: Improve readability by varying sentence structure.

Three consecutive bullet points begin with "AI qualitative failures". Consider restructuring for better readability:

✍️ Suggested rewording
-   - **AI qualitative failures (vague AC)**: Rewrite vague criteria to be specific and testable (e.g., "works properly" becomes "returns 200 on valid input").
-   - **AI qualitative failures (insufficient context)**: Add implementation pointers -- component names, likely file paths, related features.
-   - **AI qualitative failures (unclear success conditions)**: Add explicit done criteria and edge cases.
+   - **Vague acceptance criteria (AI qualitative failure)**: Rewrite vague criteria to be specific and testable (e.g., "works properly" becomes "returns 200 on valid input").
+   - **Insufficient implementation context (AI qualitative failure)**: Add implementation pointers -- component names, likely file paths, related features.
+   - **Unclear success conditions (AI qualitative failure)**: Add explicit done criteria and edge cases.

As per coding guidelines, static analysis tool LanguageTool flagged repetitive sentence beginnings (ENGLISH_WORD_REPEAT_BEGINNING_RULE).

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

In `@plugins/jira/skills/ready-to-solve/SKILL.md` around lines 124 - 126, The
three consecutive bullets starting with "AI qualitative failures" in SKILL.md
are repetitive; rewrite them to vary sentence openings while preserving meaning
for the items "AI qualitative failures (vague AC)", "AI qualitative failures
(insufficient context)" and "AI qualitative failures (unclear success
conditions)"; for example, change one to "Vague acceptance criteria: Rewrite..."
another to "Provide missing context: Add implementation pointers..." and the
third to "Clarify success conditions: Add explicit done criteria and edge
cases", ensuring each bullet still references the same concepts and keeps the
suggested examples (e.g., "returns 200 on valid input") and implementation
pointers.

103-105: Add language specifiers to fenced code blocks.

Code blocks are missing language specifiers. Add text for pseudo-code and bash for command examples to improve syntax highlighting.

📝 Proposed fix
 ### Phase 4: Aggregate Verdict

-```
+```text
 overall_pass = (all REQUIRED deterministic checks pass) AND (no AI check has verdict FAIL)
  1. Basic usage:
  • /jira:ready-to-solve OCPBUGS-12345
  1. Dry run (no label changes):
  • /jira:ready-to-solve OCPBUGS-12345 --dry-run
  1. Verbose output:
  • /jira:ready-to-solve OCPBUGS-12345 --verbose
  1. Validate and fix failing checks:
  • /jira:ready-to-solve OCPBUGS-12345 --fix
</details>

As per coding guidelines, static analysis tool markdownlint-cli2 recommends specifying language for fenced code blocks (MD040).



Also applies to: 230-232, 235-237, 240-242, 245-247

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

Verify each finding against the current code and only fix it if needed.

In @plugins/jira/skills/ready-to-solve/SKILL.md around lines 103 - 105, The
fenced code blocks in SKILL.md lack language specifiers; update the pseudo-code
block containing "overall_pass = (all REQUIRED deterministic checks pass) AND
(no AI check has verdict FAIL)" to use text and update each command example block that shows "/jira:ready-to-solve OCPBUGS-12345" (and its variants --dry-run, --verbose, --fix) to use bash so markdownlint MD040 is satisfied;
ensure all other similar fenced blocks mentioned (lines ~230–247) are updated
the same way.


</details>

</blockquote></details>
<details>
<summary>plugins/jira/commands/ready-to-solve.md (1)</summary><blockquote>

`10-12`: **Add language specifiers to fenced code blocks.**

The code blocks are missing language specifiers. Add `bash` for command examples and `text` for file path references to improve syntax highlighting and accessibility.



<details>
<summary>📝 Proposed fix</summary>

```diff
 ## Synopsis
-```
+```bash
 /jira:ready-to-solve <jira-issue-key> [--dry-run] [--verbose] [--fix]
 ```

 Load the skill file for detailed implementation guidance:

-```
+```text
 plugins/jira/skills/ready-to-solve/SKILL.md
 ```

 1. **Check readiness of an issue**:
-   ```
+   ```bash
    /jira:ready-to-solve OCPBUGS-12345
    ```

 2. **Preview without applying labels**:
-   ```
+   ```bash
    /jira:ready-to-solve OCPBUGS-12345 --dry-run
    ```

 3. **Get detailed output with section content**:
-   ```
+   ```bash
    /jira:ready-to-solve OCPBUGS-12345 --verbose
    ```

 4. **Validate and fix failing checks**:
-   ```
+   ```bash
    /jira:ready-to-solve OCPBUGS-12345 --fix
    ```
```
</details>

As per coding guidelines, static analysis tool markdownlint-cli2 recommends specifying language for fenced code blocks (MD040).



Also applies to: 31-33, 91-93, 96-98, 101-103, 106-108

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

Verify each finding against the current code and only fix it if needed.

In @plugins/jira/commands/ready-to-solve.md around lines 10 - 12, Update the
fenced code blocks in plugins/jira/commands/ready-to-solve.md to include
language specifiers: add bash for all command examples that show the /jira:ready-to-solve usage (e.g., the top usage block and the example invocations like "/jira:ready-to-solve OCPBUGS-12345", "--dry-run", "--verbose", "--fix") and add text for file/path references such as
plugins/jira/skills/ready-to-solve/SKILL.md; update the blocks noted (including
the usage block and examples around the sections referenced: 31-33, 91-93,
96-98, 101-103, 106-108) so each fenced block has the correct language
specifier.


</details>

</blockquote></details>

</blockquote></details>

<details>
<summary>🤖 Prompt for all review comments with AI agents</summary>

Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In @plugins/jira/skills/ready-to-solve/SKILL.md:


Nitpick comments:
In @plugins/jira/commands/ready-to-solve.md:

  • Around line 10-12: Update the fenced code blocks in
    plugins/jira/commands/ready-to-solve.md to include language specifiers: add
the top usage block and the example invocations like "/jira:ready-to-solve
OCPBUGS-12345", "--dry-run", "--verbose", "--fix") and add ```text for file/path
references such as plugins/jira/skills/ready-to-solve/SKILL.md; update the
blocks noted (including the usage block and examples around the sections
referenced: 31-33, 91-93, 96-98, 101-103, 106-108) so each fenced block has the
correct language specifier.

In `@plugins/jira/skills/ready-to-solve/SKILL.md`:
- Around line 124-126: The three consecutive bullets starting with "AI
qualitative failures" in SKILL.md are repetitive; rewrite them to vary sentence
openings while preserving meaning for the items "AI qualitative failures (vague
AC)", "AI qualitative failures (insufficient context)" and "AI qualitative
failures (unclear success conditions)"; for example, change one to "Vague
acceptance criteria: Rewrite..." another to "Provide missing context: Add
implementation pointers..." and the third to "Clarify success conditions: Add
explicit done criteria and edge cases", ensuring each bullet still references
the same concepts and keeps the suggested examples (e.g., "returns 200 on valid
input") and implementation pointers.
- Around line 103-105: The fenced code blocks in SKILL.md lack language
specifiers; update the pseudo-code block containing "overall_pass = (all
REQUIRED deterministic checks pass) AND (no AI check has verdict FAIL)" to use
```text and update each command example block that shows "/jira:ready-to-solve
OCPBUGS-12345" (and its variants --dry-run, --verbose, --fix) to use ```bash so
markdownlint MD040 is satisfied; ensure all other similar fenced blocks
mentioned (lines ~230–247) are updated the same way.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: e95d407b-535f-4745-bc72-0974b418c8b6

📥 Commits

Reviewing files that changed from the base of the PR and between 174ffb3 and a8c5eb2.

📒 Files selected for processing (7)
  • .claude-plugin/marketplace.json
  • PLUGINS.md
  • docs/data.json
  • plugins/jira/.claude-plugin/plugin.json
  • plugins/jira/commands/ready-to-solve.md
  • plugins/jira/skills/ready-to-solve/SKILL.md
  • plugins/jira/skills/ready-to-solve/check_sections.py
✅ Files skipped from review due to trivial changes (3)
  • plugins/jira/.claude-plugin/plugin.json
  • .claude-plugin/marketplace.json
  • plugins/jira/skills/ready-to-solve/check_sections.py
🚧 Files skipped from review as they are similar to previous changes (2)
  • PLUGINS.md
  • docs/data.json

@coderabbitai coderabbitai Bot left a comment

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.

🧹 Nitpick comments (3)
plugins/jira/skills/ready-to-solve/SKILL.md (1)

124-126: Consider varying the sentence structure for improved readability.

Three consecutive bullet points begin with "AI qualitative failures". While clear, varying the structure could improve flow. For example, the third bullet could begin with "When success conditions are unclear" or similar.

♻️ Optional rewording
-   - **AI qualitative failures (vague AC)**: Rewrite vague criteria to be specific and testable (e.g., "works properly" becomes "returns 200 on valid input").
-   - **AI qualitative failures (insufficient context)**: Add implementation pointers -- component names, likely file paths, related features.
-   - **AI qualitative failures (unclear success conditions)**: Add explicit done criteria and edge cases.
+   - **AI qualitative failures (vague AC)**: Rewrite vague criteria to be specific and testable (e.g., "works properly" becomes "returns 200 on valid input").
+   - **Insufficient implementation context**: Add implementation pointers -- component names, likely file paths, related features.
+   - **Unclear success conditions**: Add explicit done criteria and edge cases to the acceptance criteria.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/jira/skills/ready-to-solve/SKILL.md` around lines 124 - 126, The
three consecutive bullets all start with the phrase "**AI qualitative
failures**", making the list repetitive; edit the three bullet points (the
entries currently titled "**AI qualitative failures (vague AC)**", "**AI
qualitative failures (insufficient context)**", and "**AI qualitative failures
(unclear success conditions)**") to vary sentence structure — e.g., keep the
first as-is, rewrite the second to start with an action or outcome ("Provide
implementation pointers such as component names, file paths, related features")
and the third to start with a conditional or scenario ("When success conditions
are unclear, add explicit done criteria and edge cases"), ensuring clarity and
consistent tense while preserving the original meaning.
plugins/jira/commands/ready-to-solve.md (2)

10-12: Add language specifier to code block.

The synopsis code block should specify a language (e.g., bash or shell) for proper syntax highlighting.

♻️ Proposed fix
-```
+```bash
 /jira:ready-to-solve <jira-issue-key> [--dry-run] [--verbose] [--fix]

</details>

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

Verify each finding against the current code and only fix it if needed.

In @plugins/jira/commands/ready-to-solve.md around lines 10 - 12, The code block
showing the command synopsis for /jira:ready-to-solve should include a language
specifier for syntax highlighting; update the fenced code block containing
"/jira:ready-to-solve [--dry-run] [--verbose] [--fix]" to use a
shell/bash tag (e.g., change tobash) so the snippet for the
/jira:ready-to-solve command renders with proper highlighting.


</details>

---

`88-109`: **Add language specifiers to example code blocks.**

The four example code blocks (lines 91, 96, 101, 106) should specify `bash` or `shell` for proper syntax highlighting and consistency with documentation best practices.



<details>
<summary>♻️ Proposed fix</summary>

```diff
 1. **Check readiness of an issue**:
-   ```
+   ```bash
    /jira:ready-to-solve OCPBUGS-12345
    ```

 2. **Preview without applying labels**:
-   ```
+   ```bash
    /jira:ready-to-solve OCPBUGS-12345 --dry-run
    ```

 3. **Get detailed output with section content**:
-   ```
+   ```bash
    /jira:ready-to-solve OCPBUGS-12345 --verbose
    ```

 4. **Validate and fix failing checks**:
-   ```
+   ```bash
    /jira:ready-to-solve OCPBUGS-12345 --fix
    ```
```

</details>

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

Verify each finding against the current code and only fix it if needed.

In @plugins/jira/commands/ready-to-solve.md around lines 88 - 109, The example
code fences in the Examples section for the /jira:ready-to-solve command
currently use plain triple-backtick blocks; update each opening fence for the
four examples that contain "/jira:ready-to-solve OCPBUGS-12345" so they read
bash (or shell) to enable shell syntax highlighting and keep style
consistent—modify the blocks around the occurrences of the command in the
Examples section (the preview/dry-run, verbose, and --fix examples and the
initial check example) to start with ```bash.


</details>

</blockquote></details>

</blockquote></details>

<details>
<summary>🤖 Prompt for all review comments with AI agents</summary>

Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In @plugins/jira/commands/ready-to-solve.md:

  • Around line 10-12: The code block showing the command synopsis for
    /jira:ready-to-solve should include a language specifier for syntax
    highlighting; update the fenced code block containing "/jira:ready-to-solve
    [--dry-run] [--verbose] [--fix]" to use a shell/bash tag (e.g.,
    change tobash) so the snippet for the /jira:ready-to-solve command
    renders with proper highlighting.
  • Around line 88-109: The example code fences in the Examples section for the
    /jira:ready-to-solve command currently use plain triple-backtick blocks; update
    each opening fence for the four examples that contain "/jira:ready-to-solve
    OCPBUGS-12345" so they read bash (or shell) to enable shell syntax
    highlighting and keep style consistent—modify the blocks around the occurrences
    of the command in the Examples section (the preview/dry-run, verbose, and --fix
    examples and the initial check example) to start with ```bash.

In @plugins/jira/skills/ready-to-solve/SKILL.md:

  • Around line 124-126: The three consecutive bullets all start with the phrase
    "AI qualitative failures", making the list repetitive; edit the three bullet
    points (the entries currently titled "AI qualitative failures (vague AC)",
    "AI qualitative failures (insufficient context)", and "AI qualitative
    failures (unclear success conditions)
    ") to vary sentence structure — e.g.,
    keep the first as-is, rewrite the second to start with an action or outcome
    ("Provide implementation pointers such as component names, file paths, related
    features") and the third to start with a conditional or scenario ("When success
    conditions are unclear, add explicit done criteria and edge cases"), ensuring
    clarity and consistent tense while preserving the original meaning.

</details>

---

<details>
<summary>ℹ️ Review info</summary>

<details>
<summary>⚙️ Run configuration</summary>

**Configuration used**: Path: .coderabbit.yaml

**Review profile**: CHILL

**Plan**: Pro Plus

**Run ID**: `855f5529-ef20-4311-b2fe-532c54899eb9`

</details>

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between a8c5eb276c00c8556cb89824ac471f6d58ef463d and f43ba33222c4647d59969c236b05053fc970c2ae.

</details>

<details>
<summary>📒 Files selected for processing (7)</summary>

* `.claude-plugin/marketplace.json`
* `PLUGINS.md`
* `docs/data.json`
* `plugins/jira/.claude-plugin/plugin.json`
* `plugins/jira/commands/ready-to-solve.md`
* `plugins/jira/skills/ready-to-solve/SKILL.md`
* `plugins/jira/skills/ready-to-solve/check_sections.py`

</details>

<details>
<summary>✅ Files skipped from review due to trivial changes (2)</summary>

* plugins/jira/.claude-plugin/plugin.json
* .claude-plugin/marketplace.json

</details>

<details>
<summary>🚧 Files skipped from review as they are similar to previous changes (3)</summary>

* PLUGINS.md
* docs/data.json
* plugins/jira/skills/ready-to-solve/check_sections.py

</details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->

- Add language specifiers to all fenced code blocks (bash, text)
- Vary repetitive "AI qualitative failures" bullet headings
- Bump plugin version to 0.4.1

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@enxebre
enxebre force-pushed the jira-ready-to-solve branch from 6b8eca0 to 4ac768c Compare April 27, 2026 09:44
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@enxebre
enxebre force-pushed the jira-ready-to-solve branch from 4ac768c to 53829fd Compare April 27, 2026 09:45

@bryan-cox bryan-cox left a comment

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

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Apr 28, 2026
@openshift-ci

openshift-ci Bot commented Apr 28, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: bryan-cox, enxebre

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

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. lgtm Indicates that a PR is ready to be merged.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants