From odh-ai-helpers
Finds PRs/MRs missing Jira references, detects Jira keys, and links them bidirectionally. Supports single PR/MR linking and batch audit of configured repos.
How this skill is triggered — by the user, by Claude, or both
Slash command
/odh-ai-helpers:pr-jira-linkerThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Detects PRs/MRs missing Jira references, finds or creates the matching Jira issue, and links them bidirectionally.
Detects PRs/MRs missing Jira references, finds or creates the matching Jira issue, and links them bidirectionally.
list_pull_requests, pull_request_read, update_pull_requestget_merge_request, get_merge_request_commits, search, create_workitem_notejira_search, jira_add_comment, jira_create_issuecurl for GitLab API fallback (constrained; see safety rules below)The skill reads repository lists and project defaults from a user-provided config.yaml file. A minimal example:
defaults:
project_key: "MYPROJECT"
issue_type: "Task"
security_level: "Red Hat Employee"
priority: "Normal"
component: "Engineering"
team: "My Team"
team_id: "your-team-id-here"
repos:
gitlab:
- project: "my-org/my-repo"
host: "gitlab.example.com"
github:
- owner: "my-org"
repo: "my-repo"
Scan for pattern [A-Z][A-Z0-9]+-[0-9]+ in: (1) PR/MR title, (2) description, (3) branch name, (4) commit messages.
If found, mark as candidate key detected and verify bidirectional linkage (PR/MR references Jira key and Jira issue has PR/MR URL comment) before classifying as linked.
Trigger: User provides a PR/MR URL or says "link this PR to Jira".
Use pull_request_read (GitHub) or get_merge_request (GitLab). If GitLab MCP is down, fall back to curl --negotiate -u: against the GitLab REST API under the following mandatory safety constraints:
config.yaml under repos.gitlab[].host. Reject any target not in the allowlist.https://, and reconstruct from validated components. Do not pass user-supplied URLs directly to shell commands.GITLAB_TOKEN), not interpolated into command strings.--max-time 30 --max-redirs 3 to enforce timeouts and limit redirects.--proto '=https' to prevent protocol downgrade or scheme switching.Extract title, description, branch name, author.
Scan title, description, branch, and commits for Jira key.
Search Jira with escaped/sanitized keywords from the PR/MR title (treat user text as data, not query syntax). Strip or escape JQL/Lucene operators (+ - && || ! ( ) { } [ ] ^ " ~ * ? : \ /) before constructing the query. If sanitized tokens are empty, fall back to prompting the user for manual input. Show matches and let user pick, or offer to create new / enter key manually / skip.
After user selects or creates a Jira issue:
4a. Add Jira ref to PR/MR: Use update_pull_request (GitHub) to append to description. For GitLab, use create_workitem_note to add a comment with the Jira link.
4b. Add PR/MR link to Jira: Use jira_add_comment with MR/PR URL, repo, branch, and author.
4c. Report success: Show both URLs and confirm what was linked.
Never modify a PR/MR or Jira issue without showing a preview and getting user confirmation.
Trigger: "scan PRs for missing Jira links", "PR audit", "check repos for unlinked PRs".
When no matching Jira exists, the skill can create one:
jira_create_issueIMPORTANT: Every issue MUST include "security": {"name": "Red Hat Employee"} and "customfield_10001": "[TEAM_ID]" in additional_fields. Never omit these fields.
| Error | Action |
|---|---|
| GitLab MCP down | Fall back to curl --negotiate -u: only for hosts allowlisted in config.yaml; reject non-allowlisted targets and raw IPs; enforce --max-time 30 --max-redirs 3 --proto '=https'; pass credentials via env vars |
| GitHub MCP not available | Skip GitHub repos, process GitLab only |
| PR/MR already linked | Verify bidirectional linkage, report and skip if confirmed |
| Jira search returns nothing | Offer to create new or enter key manually |
| PR/MR description update fails | Fall back to adding a comment |
| Permission denied | Inform user, suggest checking repo access |
User: Link this PR to Jira https://github.com/my-org/my-repo/pull/42
Assistant: [Reads PR, scans for Jira key, searches Jira, links bidirectionally]
User: Link this MR to Jira https://gitlab.example.com/my-org/my-repo/-/merge_requests/15
Assistant: [Reads MR via API, scans for Jira key, creates or finds Jira issue, links both]
User: Scan my repos for PRs missing Jira links
Assistant: [Loads repos from config, scans all open PRs/MRs, reports linked vs missing]
npx claudepluginhub ikredhat/skills-registry --plugin odh-ai-helpersRecursively extracts GitHub Pull Request links from Jira issues and their subtasks. Outputs structured JSON with PR metadata for documentation or release notes.
Git and developer workflow integration. TRIGGERS: 'generate branch name', 'create branch name', 'branch name for', 'write PR description', 'PR description for', 'link PR', 'link pull request', 'parse commit', 'extract issue from commit', 'smart commit', 'development panel'. Use for Git, GitHub, GitLab, Bitbucket integration with JIRA. NOT FOR: issue field updates (use jira-issue), searching issues (use jira-search), status transitions (use jira-lifecycle).
Guides creating, managing, and merging pull requests with Jira integration, covering branch naming, commit messages, PR descriptions, review processes, merge strategies, and deployment practices.