Rota Check Periodic Jobs
oracle/graalpython
Analyze current GraalPy periodic job failures for ROTA. An agent skill from oracle/graalpython.
Check whether a Jira issue is well-groomed and ready for /jira:solve
$ npx skills add openshift-eng/ai-helpers --skill ready-to-solve -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install openshift-eng/ai-helpers ready-to-solve --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "ready-to-solve" agent skill from https://github.com/openshift-eng/ai-helpers/tree/main/plugins/jira/skills/ready-to-solve into .claude/skills/ready-to-solve/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ready-to-solve", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/openshift-eng/ai-helpers/tree/main/plugins/jira/skills/ready-to-solveType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add openshift-eng/ai-helpers --skill ready-to-solve -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install openshift-eng/ai-helpers ready-to-solve --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/openshift-eng/ai-helpers.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/jira/skills/ready-to-solve .agents/skills/ready-to-solve && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "ready-to-solve" agent skill from https://github.com/openshift-eng/ai-helpers/tree/main/plugins/jira/skills/ready-to-solve into .agents/skills/ready-to-solve/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ready-to-solve", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add openshift-eng/ai-helpers --skill ready-to-solve -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install openshift-eng/ai-helpers ready-to-solve --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/openshift-eng/ai-helpers.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/jira/skills/ready-to-solve .cursor/skills/ready-to-solve && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "ready-to-solve" agent skill from https://github.com/openshift-eng/ai-helpers/tree/main/plugins/jira/skills/ready-to-solve into .cursor/skills/ready-to-solve/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ready-to-solve", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/openshift-eng/ai-helpers.git --path plugins/jira/skills/ready-to-solve--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add openshift-eng/ai-helpers --skill ready-to-solve -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install openshift-eng/ai-helpers ready-to-solve --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/openshift-eng/ai-helpers.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/jira/skills/ready-to-solve .gemini/skills/ready-to-solve && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "ready-to-solve" agent skill from https://github.com/openshift-eng/ai-helpers/tree/main/plugins/jira/skills/ready-to-solve into .gemini/skills/ready-to-solve/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ready-to-solve", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install openshift-eng/ai-helpers ready-to-solveInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add openshift-eng/ai-helpers --skill ready-to-solve -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/openshift-eng/ai-helpers.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/jira/skills/ready-to-solve .github/skills/ready-to-solve && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "ready-to-solve" agent skill from https://github.com/openshift-eng/ai-helpers/tree/main/plugins/jira/skills/ready-to-solve into .github/skills/ready-to-solve/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ready-to-solve", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add openshift-eng/ai-helpers --skill ready-to-solve -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install openshift-eng/ai-helpers ready-to-solve --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/openshift-eng/ai-helpers.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/jira/skills/ready-to-solve .opencode/skills/ready-to-solve && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "ready-to-solve" agent skill from https://github.com/openshift-eng/ai-helpers/tree/main/plugins/jira/skills/ready-to-solve into .opencode/skills/ready-to-solve/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ready-to-solve", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
ready-to-solveCheck whether a Jira issue is well-groomed and ready for /jira:solve
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.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit a627176. It shows what the files ask for, not the result of running them.
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.
Ships 1 file in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
python3jqFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
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.
.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.jira:ready-to-solve
/jira:ready-to-solve <jira-issue-key> [--dry-run] [--verbose] [--fix]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:
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.
which python3)Fetch the issue via getJiraIssue with the issue key.
Extract from the response:
fields.description -- full description textfields.summary -- issue titlefields.labels -- current labels array (needed for label updates)fields.status.name -- current statusfields.issuetype.name -- issue typeIf description is null or empty, skip to Phase 4 with an automatic FAIL verdict.
Pipe the description to the Python script:
echo '{"description": "<description_content>"}' | python3 plugins/jira/skills/ready-to-solve/scripts/check_sections.pyFor verbose output (includes matched content):
echo '{"description": "<description_content>"}' | python3 plugins/jira/skills/ready-to-solve/scripts/check_sections.py --verboseImportant: Construct the JSON input carefully. The description may contain quotes, newlines, and special characters. Use Python or jq to safely serialize:
echo "$DESCRIPTION" | jq -Rs '{"description": .}' | python3 plugins/jira/skills/ready-to-solve/scripts/check_sections.pyThe script outputs JSON with per-check results. Parse the output to get:
overall_pass: boolean -- whether all REQUIRED checks passedchecks: array of individual check resultsstats: summary countsDeterministic checks performed by the script:
| Check ID | Name | Pass Condition | Severity |
|---|---|---|---|
has_context | Context section present | Heading matching: Context, Description, Background, Overview, or Why | REQUIRED |
has_ac | Acceptance Criteria present | Heading matching: Acceptance Criteria, AC, or Definition of Done | REQUIRED |
context_not_empty | Context has content | At least 50 characters below the heading | REQUIRED |
ac_not_empty | AC has content | At least 30 characters below the heading | REQUIRED |
has_tech | Technical Details present | Heading matching: Technical Details, Technical Context, Implementation Details, Implementation Notes, or Technical Notes | REQUIRED |
tech_not_empty | Technical Details has content | At least 30 characters below the heading | REQUIRED |
ac_has_items | AC has multiple items | Warns if fewer than 2 bullet points or numbered items | WARNING |
min_description_length | Adequate overall length | Total description at least 200 characters | WARNING |
Note: WARNING checks are reported but do not block the overall verdict. Only REQUIRED checks must pass for the issue to be considered ready.
Read the full description and evaluate three dimensions. For each, produce a verdict (PASS or FAIL) and a 1-2 sentence justification.
AC Specificity and Testability: Are acceptance criteria specific enough to write tests against? Do they describe observable behavior rather than vague goals?
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?
Clear Success/Failure Conditions: Can a reviewer determine whether a proposed solution addresses the issue?
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.
--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:
Identify failures: Collect all failed deterministic checks and AI qualitative FAILs from phases 2-4.
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:
h2. Why section from the issue summary and any context in the existing description text.h2. Acceptance Criteria section with concrete, testable bullet points derived from the description context.h2. Technical Details section from any code references, file paths, component mentions, or technical context in the description.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)"
If confirmed: Update the issue description via editJiraIssue, setting the description field to the revised text with contentFormat: "markdown".
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.
If declined: Skip the update and proceed to label application and reporting with the original validation 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.
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.
On FAIL: Reuse the same report format defined in Phase 8 (Generate Report), filtered to only show failed and warning checks. Wrap it with:
**Automated Readiness Check — FAILED** followed by "Please update the issue description to address the REQUIRED items below."*These checks can also be auto-fixed by running '/jira:ready-to-solve {issue-key} --fix' in Claude Code.*--fix was attempted but the issue still fails, replace the footer with:*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.
**Automated Readiness Check — PASSED**
All checks passed. This issue is ready for `/jira:solve`.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.
Skip if --dry-run is set.
not-ready-to-solve (if present), add ready-to-solveready-to-solve (if present), add not-ready-to-solveeditJiraIssue, 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.Output format:
## 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)_| Error | Handling |
|---|---|
| Issue not found | "Could not find issue {key}. Verify the issue key is correct." |
| MCP unavailable | Display error: "Jira MCP server required. Check plugin README for setup." |
| Python not available | "Python 3 is required. Check: which python3" |
check_sections.py fails | Display script error, proceed with AI-only assessment, note in report |
| Description is null/empty | Automatic FAIL: "Issue has no description. Add Context and Acceptance Criteria sections." |
| Comment post/edit fails | Display warning but still proceed with label application and report. Non-fatal. |
| Label update fails | Display 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 fix | Report the new failures. The fix improved but did not fully resolve all issues. |
Basic usage:
/jira:ready-to-solve OCPBUGS-12345Dry run (no label changes):
/jira:ready-to-solve OCPBUGS-12345 --dry-runVerbose output:
/jira:ready-to-solve OCPBUGS-12345 --verboseValidate and fix failing checks:
/jira:ready-to-solve OCPBUGS-12345 --fixOCPBUGS-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./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
SKILL.md and 1 other file (scripts) in plugins/jira/skills/ready-to-solve of openshift-eng/ai-helpers.
Open the folder on GitHubat commit a627176
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Ready To Solve this skillopenshift-eng/ai-helpers | 120 | — | ~3.2k | Automated safety check: Pass | Apache-2.0 | |
| Rota Check Periodic Jobsoracle/graalpython | 1.7k | — | ~792 | Automated safety check: Pass | Custom licence | |
| Kanban TuiZaloog/kanban-tui | 285 | — | ~4.1k | Automated safety check: Pass | MIT | |
| GitHub PR Mirrororacle/graalpython | 1.7k | — | ~1.3k | Automated safety check: Pass | Custom licence | |
| Atlassian Readonly Skillssillsdev/FieldWorks | 110 | — | ~1.3k | Automated safety check: Pass | Custom licence | |
| Atlassian Skillssillsdev/FieldWorks | 110 | — | ~2.7k | Automated safety check: Pass | Custom licence |
oracle/graalpython
Analyze current GraalPy periodic job failures for ROTA. An agent skill from oracle/graalpython.
Zaloog/kanban-tui
Comprehensive kanban board and task management via ktui CLI.
oracle/graalpython
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…
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.
sillsdev/FieldWorks
Python utilities for Jira (SIL Data Center) covering issue management, JQL search, workflows and transitions, links, agile boards, worklogs and projects.
alirezarezvani/claude-skills
Advanced Scrum Master skill for data-driven agile team analysis and coaching.
openshift-eng/ai-helpers
Find and independently validate actionable reliability defects across OpenShift release jobs and presubmits, then export portable issue handoffs.
openshift-eng/ai-helpers
Fetch and address all PR review comments — categorize by priority, make code changes, post replies, and push.
openshift-eng/ai-helpers
Categorize Jira issues into Red Hat Sankey Activity Type categories using MCP Jira tools.
openshift-eng/ai-helpers
Decide whether a GitHub PR has unanswered authorized review comments or new required CI failures worth a follow-up agent.
openshift-eng/ai-helpers
Analyze OpenShift must-gather diagnostic data including cluster operators, pods, nodes, and network components.
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.