From odh-ai-helpers
Gathers context from Jira tickets and PRs by resolving ticket metadata, cloning repos, collecting candidate files, and producing a structured context package.
How this skill is triggered — by the user, by Claude, or both
Slash command
/odh-ai-helpers:doc-gather <JIRA-KEY|PR-URL><JIRA-KEY|PR-URL>claude-sonnet-4-5The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Gather context from Jira tickets, source repos, and documentation repos to produce a structured context package for downstream skills.
Gather context from Jira tickets, source repos, and documentation repos to produce a structured context package for downstream skills.
$ARGUMENTS contains either:
RHOAIENG-55490)https://github.com/org/repo/pull/123)Detect the input type:
http → PR URLUse the resolve script to fetch and structure ticket metadata:
bash ${CLAUDE_SKILL_DIR}/scripts/resolve-jira.sh <JIRA-KEY>
This returns JSON with: key, summary, description, acceptance_criteria, fix_versions, components, linked_tickets, epic_key, status, issue_type.
If the ticket has linked tickets that provide useful context (e.g., parent epic, related stories), resolve those too (up to 5 linked tickets):
bash ${CLAUDE_SKILL_DIR}/scripts/resolve-jira.sh <LINKED-KEY>
Use gh CLI to extract PR metadata:
gh pr view <PR-URL> --json title,body,labels,files,headRefName
Extract the Jira key from the PR title or body (pattern: [A-Z]+-\d+), then resolve the Jira ticket using the resolve script as above.
Read the product configuration bundled with this skill:
python3 ${CLAUDE_SKILL_DIR}/scripts/parse-product-config.py ${CLAUDE_SKILL_DIR}/references/rhoai.yaml
From the config, determine:
For each fixVersion from the ticket:
python3 ${CLAUDE_SKILL_DIR}/scripts/parse-product-config.py ${CLAUDE_SKILL_DIR}/references/rhoai.yaml --resolve-version "<fixVersion>"
This determines which branch to checkout for each repo.
For each component from the ticket:
python3 ${CLAUDE_SKILL_DIR}/scripts/parse-product-config.py ${CLAUDE_SKILL_DIR}/references/rhoai.yaml --resolve-component "<component-name>"
This identifies which source repos are relevant.
For each context source in the product config, plus each resolved component repo:
bash ${CLAUDE_SKILL_DIR}/scripts/gather-context.sh <repo-slug> <branch> <path-patterns...>
The branch is determined by:
branch_hint from the context source declarationmainAssemble a JSON input for the filtering pipeline combining:
python3 ${CLAUDE_SKILL_DIR}/scripts/context-filter.py <<< '<assembled-json>'
The pipeline runs six stages:
Source the git utilities (which internally uses scripts/load-env.sh to load credentials from the environment) and read each selected candidate's content from the cloned repo:
source ${CLAUDE_SKILL_DIR}/scripts/git-utils.sh
git_file_content "workspace/repos/<repo-slug>" "<file-path>"
Attach content to each candidate entry.
Write workspace/context-package.json with this structure:
{
"ticket": {
"key": "RHOAIENG-55490",
"summary": "...",
"description": "...",
"fix_versions": ["rhoai-2.18"],
"components": ["Dashboard"],
"linked_tickets": [],
"epic_key": "",
"status": "In Progress",
"issue_type": "Story"
},
"product": {
"product_id": "rhoai",
"display_name": "Red Hat OpenShift AI",
"docs_repo": "opendatahub-io/opendatahub-documentation",
"docs_branch": "main",
"framework": "asciidoc-modular",
"module_prefixes": {
"concept": "con_",
"procedure": "proc_",
"reference": "ref_",
"assembly": "assembly_",
"snippet": "snip_"
}
},
"context_files": [
{
"source_type": "documentation",
"repo": "opendatahub-io/opendatahub-documentation",
"file_path": "modules/serving/pages/con_model-serving.adoc",
"content": "...",
"relevance_score": 0.85,
"size_bytes": 4521,
"estimated_tokens": 1130,
"signals": [...]
}
],
"metadata": {
"gathered_at": "2026-04-14T10:30:00Z",
"total_candidates": 500,
"selected_candidates": 42,
"total_tokens": 85000,
"version_resolved": "2.18",
"branch_resolved": "release-2.18"
}
}
GITHUB_TOKEN must be set in the environment; without it, private repo clones and GitHub API calls will fail silently or return incomplete data.Primary: workspace/context-package.json
Report to caller: number of files gathered, total tokens, repos cloned.
npx claudepluginhub opendatahub-io/ai-helpersFetches a JIRA issue, distills it into a structured task for Claude Code, analyzes the codebase for missing criteria and risks, and optionally enriches the issue in JIRA.
Analyzes tickets and PRDs for completeness, classifies product area, performs RCA on bugs, and generates structured handoff reports. Works with Jira, Linear, GitHub, Confluence, or manual paste.
Creates synced feature branches for new tasks: pulls latest main, fetches context from Jira tickets/GitHub issues/local specs, pushes {type}/{task-number}/{slug} branches.