Agent skill

Ready To Solve

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

Check whether a Jira issue is well-groomed and ready for /jira:solve

Apache-2.0Auto-check passed

Install Ready To Solve

skills CLI
$ npx skills add openshift-eng/ai-helpers --skill ready-to-solve -a claude-code

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

GitHub CLI
$ gh skill install openshift-eng/ai-helpers ready-to-solve --agent claude-code

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

Manual copy
$ git clone --depth 1 https://github.com/openshift-eng/ai-helpers.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/jira/skills/ready-to-solve .claude/skills/ready-to-solve && rm -rf skills-src

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

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

Facts

Skill name
ready-to-solve
GitHub stars
120
Token cost
~3.2k tokens
SKILL.md length
1,487 words
Files
2 (incl. scripts)
Skills in repo
118
Repo updated
First seen
Licence
Apache-2.0

At a glance

Check whether a Jira issue is well-groomed and ready for /jira:solve

  • Works in 8 steps: Fetch Issue Data → Run Deterministic Checks → AI Qualitative Assessment → …
  • SKILL.md covers Name, Synopsis, Description and Prerequisites, plus 6 more sections
  • Runs Python scripts from its folder; calls python3 and jq

What it does

Ready To Solve is an agent skill from openshift-eng/ai-helpers. Check whether a Jira issue is well-groomed and ready for /jira:solve

Its SKILL.md is about 3.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts (for example `scripts/check_sections.py`).

It works with Jira and Python. The repository describes itself as: Developer productivity tools for Claude Code & other AI assistants. The licence is Apache-2.0.

Example prompts

  • “/ready-to-solve”

Requirements

  • Python 3

Workflow steps

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

  1. Fetch Issue Data
  2. Run Deterministic Checks
  3. AI Qualitative Assessment
  4. Aggregate Verdict
  5. Fix Failing Checks (if --fix)
  6. Comment on Result
  7. Apply Jira Label
  8. Generate Report

What it can do on your machine

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

  • Tool permissions

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

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python3
    • jq

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

  • Network

    No URLs in SKILL.md.

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

  • Credentials

    Names no API keys, tokens, secrets or passwords.

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

Context cost

Ready To Solve loads about 3.2k tokens when it runs. Until then it costs about 21 tokens; SKILL.md has 1,487 words of instructions outside code blocks.

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

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

Safety

Auto-check passed

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

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

SKILL.md

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

Download SKILL.mdSave it as .claude/skills/ready-to-solve/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
ready-to-solve
description
Check whether a Jira issue is well-groomed and ready for /jira:solve
argument-hint
<jira-issue-key> [--dry-run] [--verbose] [--fix]

Name

jira:ready-to-solve

Synopsis

bash
/jira:ready-to-solve <jira-issue-key> [--dry-run] [--verbose] [--fix]

Description

The jira:ready-to-solve command checks whether a Jira issue has sufficient grooming for /jira:solve to produce a quality solution.

It runs a two-phase validation:

  1. Deterministic checks via a Python script that verifies structural requirements: required sections exist, are non-empty, and have adequate content.
  2. AI qualitative assessment that evaluates whether the acceptance criteria are specific and testable, whether there is enough implementation context, and whether clear success/failure conditions exist.

On pass, the label ready-to-solve is added to the issue. On fail, not-ready-to-solve is added. The stale opposite label is removed if present.

With --fix, when validation fails the command generates a revised description that adds or improves the failing sections, shows the proposed changes to the user for approval, and updates the Jira issue description upon confirmation.

Prerequisites

  • Jira MCP server configured (Atlassian Rovo MCP)
  • Python 3.8+ (which python3)

Implementation

Phase 1: Fetch Issue Data

Fetch the issue via getJiraIssue with the issue key.

Extract from the response:

  • fields.description -- full description text
  • fields.summary -- issue title
  • fields.labels -- current labels array (needed for label updates)
  • fields.status.name -- current status
  • fields.issuetype.name -- issue type

If description is null or empty, skip to Phase 4 with an automatic FAIL verdict.

Phase 2: Run Deterministic Checks

Pipe the description to the Python script:

bash
echo '{"description": "<description_content>"}' | python3 plugins/jira/skills/ready-to-solve/scripts/check_sections.py

For verbose output (includes matched content):

bash
echo '{"description": "<description_content>"}' | python3 plugins/jira/skills/ready-to-solve/scripts/check_sections.py --verbose

Important: Construct the JSON input carefully. The description may contain quotes, newlines, and special characters. Use Python or jq to safely serialize:

bash
echo "$DESCRIPTION" | jq -Rs '{"description": .}' | python3 plugins/jira/skills/ready-to-solve/scripts/check_sections.py

The script outputs JSON with per-check results. Parse the output to get:

  • overall_pass: boolean -- whether all REQUIRED checks passed
  • checks: array of individual check results
  • stats: summary counts

Deterministic checks performed by the script:

Check IDNamePass ConditionSeverity
has_contextContext section presentHeading matching: Context, Description, Background, Overview, or WhyREQUIRED
has_acAcceptance Criteria presentHeading matching: Acceptance Criteria, AC, or Definition of DoneREQUIRED
context_not_emptyContext has contentAt least 50 characters below the headingREQUIRED
ac_not_emptyAC has contentAt least 30 characters below the headingREQUIRED
has_techTechnical Details presentHeading matching: Technical Details, Technical Context, Implementation Details, Implementation Notes, or Technical NotesREQUIRED
tech_not_emptyTechnical Details has contentAt least 30 characters below the headingREQUIRED
ac_has_itemsAC has multiple itemsWarns if fewer than 2 bullet points or numbered itemsWARNING
min_description_lengthAdequate overall lengthTotal description at least 200 charactersWARNING

Note: WARNING checks are reported but do not block the overall verdict. Only REQUIRED checks must pass for the issue to be considered ready.

Phase 3: AI Qualitative Assessment

Read the full description and evaluate three dimensions. For each, produce a verdict (PASS or FAIL) and a 1-2 sentence justification.

  1. AC Specificity and Testability: Are acceptance criteria specific enough to write tests against? Do they describe observable behavior rather than vague goals?

    • FAIL: no acceptance criteria, or criteria are vague ("it should work", "system performs well")
    • PASS: criteria describe observable behavior ("when X happens, Y returns Z", "API returns 404 for missing resources")
  2. Implementation Context Sufficiency: Is there enough description of the problem, affected code area, or desired behavior that /jira:solve could identify relevant files and implement a solution?

    • FAIL: a codebase search would be ambiguous (no component, file, or feature area mentioned)
    • PASS: the description points to a specific area of the codebase, component, or behavior
  3. Clear Success/Failure Conditions: Can a reviewer determine whether a proposed solution addresses the issue?

    • FAIL: no way to tell if a solution is correct (no expected behavior, no test criteria)
    • PASS: conditions are explicit enough to verify a solution
Phase 4: Aggregate Verdict
text
overall_pass = (all REQUIRED deterministic checks pass) AND (no AI check has verdict FAIL)

Collect all failures and warnings into a list for the report.

Phase 5: Fix Failing Checks (if --fix)

Skip if --fix is not set or if validation already passed.

When validation fails and --fix is set, generate a revised description that fixes the failing checks:

  1. Identify failures: Collect all failed deterministic checks and AI qualitative FAILs from phases 2-4.

  2. Generate revised description: Preserve ALL existing content from the original description. Only add or expand sections -- never remove or rewrite content the user wrote. For each failure:

    • Missing Context/Why section: Generate an h2. Why section from the issue summary and any context in the existing description text.
    • Missing Acceptance Criteria: Generate an h2. Acceptance Criteria section with concrete, testable bullet points derived from the description context.
    • Missing Technical Details: Generate an h2. Technical Details section from any code references, file paths, component mentions, or technical context in the description.
    • Section too short: Expand the existing section with additional relevant detail while preserving the original content.
    • AC lacks list items: Restructure the existing AC text into proper bullet points and add additional criteria if needed.
    • Vague acceptance criteria: Rewrite vague criteria to be specific and testable (e.g., "works" 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.
  3. Present proposed changes to the user: Show the full proposed description, clearly indicating what was added or changed (e.g., mark new sections with a note). Ask the user: "Here is the proposed updated description. Apply this to the Jira issue? (yes/no)"

  4. If confirmed: Update the issue description via editJiraIssue, setting the description field to the revised text with contentFormat: "markdown".

  5. Re-run validation: After updating, re-run phases 2-4 on the new description to confirm the issue now passes. Report the re-validation results.

  6. If declined: Skip the update and proceed to label application and reporting with the original validation result.

Show full SKILL.md (600 more words)Show less
Phase 6: Comment on Result

Skip if --dry-run is set.

Post or update a Jira comment reflecting the validation result so the ticket author knows the outcome without running the check themselves.

Step 1: Check for existing automated comment

Fetch the issue with comments included via getJiraIssue and search for one whose body starts with **Automated Readiness Check. Save its comment_id if found.

Step 2: Build comment body

On FAIL: Reuse the same report format defined in Phase 8 (Generate Report), filtered to only show failed and warning checks. Wrap it with:

  • Header: **Automated Readiness Check — FAILED** followed by "Please update the issue description to address the REQUIRED items below."
  • Footer: *These checks can also be auto-fixed by running '/jira:ready-to-solve {issue-key} --fix' in Claude Code.*
  • If --fix was attempted but the issue still fails, replace the footer with:
    text
    *Auto-fix was attempted but could not fully resolve all issues. Please address the remaining items manually.*

On PASS: If an existing automated comment was found in Step 1, use a brief body. If no existing comment was found, skip to Phase 7 — no comment is needed for a first-time PASS.

markdown
**Automated Readiness Check — PASSED**

All checks passed. This issue is ready for `/jira:solve`.
Step 3: Post or edit the comment

If an existing automated comment was found (Step 1), the Atlassian Rovo MCP does not support editing comments directly. Post a new comment instead.

Post the comment via addCommentToJiraIssue with the issue key, the comment body, and contentFormat: "markdown".

If no existing comment was found and the verdict is PASS, do nothing.

Phase 7: Apply Jira Label

Skip if --dry-run is set.

  1. Get current labels from the fetched issue data
  2. Build the updated label list:
    • If PASS: remove not-ready-to-solve (if present), add ready-to-solve
    • If FAIL: remove ready-to-solve (if present), add not-ready-to-solve
  3. Skip update if labels haven't changed
  4. Apply via editJiraIssue, setting the labels field to the updated labels list. Note: The labels field replaces the entire array, so always include all existing labels plus the new one.
Phase 8: Generate Report

Output format:

markdown
## Readiness Validation: {issue-key}
**Summary**: {summary} | **Verdict**: PASS/FAIL

### Deterministic Checks

| Check | Result | Details |
|-------|--------|---------|
| Context section present | PASS/FAIL | {details} |
| Acceptance Criteria present | PASS/FAIL | {details} |
| ... | ... | ... |

### AI Qualitative Assessment

**AC Specificity and Testability**: PASS/FAIL
{reasoning}

**Implementation Context Sufficiency**: PASS/FAIL
{reasoning}

**Clear Success/Failure Conditions**: PASS/FAIL
{reasoning}

### Overall Verdict: PASS/FAIL

{Summary of failures or confirmation that issue is ready}

**Label Applied**: `ready-to-solve` / `not-ready-to-solve` / _(dry run -- no label applied)_

Return Value

  • Format: Structured markdown report with deterministic check results table, AI qualitative assessment (3 dimensions with verdicts and reasoning), overall PASS/FAIL verdict, and label applied.
  • PASS: All required checks pass, no AI FAIL verdicts.
  • FAIL: At least one required check failed or AI flagged a critical issue.

Error Handling

ErrorHandling
Issue not found"Could not find issue {key}. Verify the issue key is correct."
MCP unavailableDisplay error: "Jira MCP server required. Check plugin README for setup."
Python not available"Python 3 is required. Check: which python3"
check_sections.py failsDisplay script error, proceed with AI-only assessment, note in report
Description is null/emptyAutomatic FAIL: "Issue has no description. Add Context and Acceptance Criteria sections."
Comment post/edit failsDisplay warning but still proceed with label application and report. Non-fatal.
Label update failsDisplay warning but still show report. Non-fatal.
Description update fails (--fix)Display error, report original validation result. Non-fatal.
User declines fix (--fix)Skip update, proceed with original validation result.
Re-validation fails after fixReport the new failures. The fix improved but did not fully resolve all issues.

Examples

  1. Basic usage:

    bash
    /jira:ready-to-solve OCPBUGS-12345
  2. Dry run (no label changes):

    bash
    /jira:ready-to-solve OCPBUGS-12345 --dry-run
  3. Verbose output:

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

    bash
    /jira:ready-to-solve OCPBUGS-12345 --fix

Arguments:

  • $1: Jira issue key (required). Examples: OCPBUGS-12345, HOSTEDCP-999, GCP-456.
  • --dry-run: Optional. Skip label application and comment posting, only report results.
  • --verbose: Optional. Show full per-check details including matched section content.
  • --fix: Optional. When validation fails, generate a revised description fixing the failing checks.

See Also

  • /openshift-developer:jira-solve -- the skill this validates readiness for

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

Files

SKILL.md and 1 other file (scripts) in plugins/jira/skills/ready-to-solve of openshift-eng/ai-helpers.

  • SKILL.md
  • scripts/check_sections.py

Open the folder on GitHubat commit a627176

Compare with similar skills

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

Ready To Solve compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Ready To Solve this skillopenshift-eng/ai-helpers120—~3.2kAutomated safety check: PassApache-2.0
Rota Check Periodic Jobsoracle/graalpython1.7k—~792Automated safety check: PassCustom licence
Kanban TuiZaloog/kanban-tui285—~4.1kAutomated safety check: PassMIT
GitHub PR Mirrororacle/graalpython1.7k—~1.3kAutomated safety check: PassCustom licence
Atlassian Readonly Skillssillsdev/FieldWorks110—~1.3kAutomated safety check: PassCustom licence
Atlassian Skillssillsdev/FieldWorks110—~2.7kAutomated safety check: PassCustom licence

Similar skills

  • Rota Check Periodic Jobs

    oracle/graalpython

    Official

    Analyze current GraalPy periodic job failures for ROTA. An agent skill from oracle/graalpython.

    1.7k GitHub stars~792 tokensUpdated today
    Testing & QAAuto-check passed
  • Kanban Tui

    Zaloog/kanban-tui

    Comprehensive kanban board and task management via ktui CLI.

    285 GitHub stars~4.1k tokensUpdated 1 mo ago
    Productivity & AutomationAuto-check passed
  • GitHub PR Mirror

    oracle/graalpython

    Official

    Mirror an external GitHub pull request into the internal GraalPython Bitbucket review flow, including OCA label checks, Jira creation or reuse, preserving PR commits, pre-commit cleanup, and handoff…

    1.7k GitHub stars~1.3k tokensUpdated today
    Auto-check passed
  • Atlassian Readonly Skills

    sillsdev/FieldWorks

    Read-only Python utilities for Jira (SIL Data Center): fetch an issue, search with JQL, read transitions, links, worklogs, agile boards and projects.

    110 GitHub stars~1.3k tokensUpdated today
    Auto-check passed
  • Atlassian Skills

    sillsdev/FieldWorks

    Python utilities for Jira (SIL Data Center) covering issue management, JQL search, workflows and transitions, links, agile boards, worklogs and projects.

    110 GitHub stars~2.7k tokensUpdated today
    Auto-check passed
  • Scrum Master

    alirezarezvani/claude-skills

    Advanced Scrum Master skill for data-driven agile team analysis and coaching.

    28k GitHub starsUsed in 1 repo~2.4k tokens
    Product & Project ManagementAuto-check passed

More from openshift-eng/ai-helpers

All 118 skills in this repo
  • Investigate CI Reliability

    openshift-eng/ai-helpers

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

    120 GitHub stars~1.9k tokensUpdated 2 days ago
    Auto-check passed
  • Address Review PR

    openshift-eng/ai-helpers

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

    120 GitHub stars~2.9k tokensUpdated 2 days ago
    Auto-check passed
  • Categorize Activity Types

    openshift-eng/ai-helpers

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

    120 GitHub stars~2.4k tokensUpdated 2 days ago
    Auto-check passed
  • Has Review Work

    openshift-eng/ai-helpers

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

    120 GitHub stars~1.9k tokensUpdated 2 days ago
    Auto-check passed
  • Must Gather Analyzer

    openshift-eng/ai-helpers

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

    120 GitHub stars~2.3k tokensUpdated 2 days ago
    Auto-check passed
  • Payload Autodl JSON

    openshift-eng/ai-helpers

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

    120 GitHub stars~2.6k tokensUpdated 2 days ago
    Auto-check passed

Works with

Questions about Ready To Solve

What does Ready To Solve do?

Check whether a Jira issue is well-groomed and ready for /jira:solve. Ready To Solve is an agent skill from openshift-eng/ai-helpers.

How do I install Ready To Solve in Claude Code?

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

How do I install Ready To Solve in Codex?

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

Can I use Ready To Solve in Cursor, Gemini CLI or GitHub Copilot?

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

What does Ready To Solve need to run?

Going by SKILL.md and its folder, Ready To Solve needs Python for the scripts in its folder and the command-line tools its instructions call (python3 and jq). Our summary lists: Python 3.

Does Ready To Solve access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Ready To Solve safe to install?

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

What licence does Ready To Solve use?

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

How many tokens does Ready To Solve use?

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

What are the alternatives to Ready To Solve?

Skills that share tags, products or a category with Ready To Solve: Rota Check Periodic Jobs (oracle/graalpython, 1.7k stars), Kanban Tui (Zaloog/kanban-tui, 285 stars), GitHub PR Mirror (oracle/graalpython, 1.7k stars) and Atlassian Readonly Skills (sillsdev/FieldWorks, 110 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Ready To Solve?

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

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