rhdh-jira-link について
rhdh-jira-linkは、GitHubのプルリクエストやGitLabのマージリクエストを作成し、Jiraにリンクするスキルです。スクリプトでJiraコメントの更新や、空の課題フィールドの任意設定も行えます。
主な機能
- 01GitHubのPRとGitLabのMRを作成
- 02JiraのWebリンクとコメントを追加
- 03既存のPR/MRコメントを更新
- 04Jiraの空フィールドを任意で設定
- 05リンク済みリクエストをマージ済み・クローズ済みに設定
活用シーン
- 01PR/MRを作成してJira課題にリンク
- 02既存のPR/MRにJiraリンクとコメントを追加
- 03リクエストのマージ後やクローズ後にJiraリンクを更新
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ redhat-developer/ rhdh-skills --skill rhdh-jira-linkインストール後、Claude Code で/rhdh-jira-linkを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
config.example.jsonagents/openai.yamlreferences/raise-pr-integration.mdscripts/create-pr-mr.jslib.jslink-pr-mr.jstests/lib.test.mjs詳細
Jira PR / MR リンク
GitHub と GitLab向けの、トークンを消費しない Node スクリプトです。PR/MR を作成し、Jira のリモート Web リンクを添付し、構造化コメントを投稿または更新し、必要に応じて空の課題フィールドを入力します。
スクリプトはこのスキルの scripts/ ディレクトリにあります。インストール済みスキルのルートからそのパスを解決してください(このファイルを読むエージェントは、すでにそのパスを取得しています)。
SKILL="$(cd "$(dirname "$0")" && pwd)" # or the absolute path to this skill root
node "$SKILL/scripts/create-pr-mr.js" …
node "$SKILL/scripts/link-pr-mr.js" …
リンク手順を必要とする別のスキルは、名前で /rhdh-jira-link を呼び出し、このスキルに自身のスクリプトを実行させます。このディレクトリをパスで直接呼び出すことはありません。
推奨:一括作成(create-pr-mr.js)
フィーチャーブランチをコミットした後:
レビュー担当者向けの PR または MR のタイトルと本文を作成し、両方に対して一度だけ /prose-editing を flavored レジスターで実行します。Jira キー、クローズ構文、見出し、チェックリスト、リンク、および必須の Generated-by 行は維持してください。編集済みの文字列を create-pr-mr.js に渡してください。このスクリプトは転送層であり、文字列を編集してはいけません。後で作成される構造化 Jira リンクコメントはプロトコルペイロードであり、この文章編集処理の対象ではありません。
node "$SKILL/scripts/create-pr-mr.js" \
--issue RHIDP-12345 \
--title 'fix: short summary' \
--target main \
--body "$(cat <<'EOF'
## Summary
- …
## Test plan
- [ ] …
Generated-by: cursor
EOF
)"
git push -u origin HEADを実行します(--no-pushが指定されている場合を除く)。originから GitHub と GitLab のどちらかを判定します。gh pr createまたはglab mr createを実行します。link-pr-mr.js linkを実行します(--no-linkが指定されている場合を除く)。Jira 認証がない場合はエラーになります。リンクをスキップするには--no-linkを指定してください。- 差分ページを開きます(
--no-openが指定されている場合を除く)。
フラグ:--draft、--no-push、--no-link、--no-open、--no-defaults、--no-comment、--no-jira-ref、--host github|gitlab。
認証
どちらの方法でも同じトークンを使用できます。
JIRA_API_TOKENと、~/.config/.jira/.config.yml内のlogin/server、またはacliと同じ場所にある.jira-token(email:token)。これは/rhdh-jira-apiが使用する認証情報です。ここで重複して説明する代わりに、正式な認証設定については名前で/rhdh-jira-apiを呼び出してください。
create-pr-mr.js は、存在しない場合に Ref: https://redhat.atlassian.net/browse/KEY と Generated-by: cursor を PR/MR 本文に追加します。community-plugins リモートの場合(または --no-jira-ref が設定されている場合)は Jira の Ref: 行を省略し、そのリポジトリの git 履歴や PR テキストに Jira の閲覧 URL が含まれないようにします。
リンクのみ:link-pr-mr.js
PR/MR がすでに存在する場合:
node "$SKILL/scripts/link-pr-mr.js" link \
--issue RHIDP-12345 \
--url 'https://gitlab.cee.redhat.com/rhidp/example/-/merge_requests/817' \
--title 'example #817: fix: short summary' \
--host gitlab
--hostは省略可能です。省略した場合は URL から推定されます。--no-defaultsを指定すると、In Progress とメタデータの入力をスキップします(Web リンクとコメントは引き続き作成されます)。--no-commentを指定すると、Jira コメントをスキップします。- コメントに PR/MR の URL がすでに記載されている場合は、コメントがその場で 更新されます(コメントはページネーションされます)。
RHDHPLAN → RHIDP の自動移動
リンク先の課題が RHDHPLAN の Epic、Story、または Task の場合、Jira の一括移動 API を使用して、同じ課題タイプのまま RHIDP に移動し、その後、新しいキーに対して Web リンク/デフォルト値/コメントの処理を続けます。Feature とその他の RHDHPLAN タイプはそのままにします。
標準出力には move: … と移動後の issue: キーが含まれます。
コメントの形式(新たに設定されたフィールドのみ。kept の値は省略します):
PR: https://github.com/org/repo/pull/123
または GitLab の場合:
MR: https://gitlab.cee.redhat.com/group/repo/-/merge_requests/817
その後、デフォルト値が新たに設定された場合:
Adjusted fields:
* Priority: Normal
* Status: In Progress
Web リンクのタイトルは引き続き repo #N: <title> です(変更なし)。
マージ済み/クローズ済みとしてマーク
node "$SKILL/scripts/link-pr-mr.js" mark-merged --issue RHIDP-12345
PR/MR がマージ済みの場合は Web リンクのタイトルの先頭に [x] merged: を付け、マージせずにクローズされた場合は [!] closed: を付けます。デフォルト値やコメントの再適用は行いません。標準出力には各タイトル と その PR/MR の URL が、タイトルの下にインデントされて表示されます。オープン中の PR/MR はプレフィックスなしで leftOpen に残ります。
mark-merged は gh/glab を使用してステータスを確認します。確認に失敗した場合は warn: 行を出力し、リンクは leftOpen に残ります(確認失敗をクローズ済みとして扱わないでください)。GitLab のリモートリンクでは、URL から --hostname(例:gitlab.cee.redhat.com)を渡すため、CEE の MR が正しいホストに対して解決されます。日常的な CEE 作業では、~/.config/glab-cli/config.yml で glab のデフォルト host: gitlab.cee.redhat.com を設定することを推奨します。
ユーザーに要約する際は、Markdown リンク([<title>](<url>))を使用してください。
link --title のタイトル形式
<repo-short-name> #<id>: <full PR/MR title>
マージ済み:[x] merged: <repo-short-name> #<id>: <full PR/MR title>
クローズ(未マージ):[!] closed: <repo-short-name> #<id>: <full PR/MR title>
link が適用するデフォルト(空の場合のみ)
組み込みのチーム/担当者の値はありません。 デフォルトを有効にした状態で初めて実行するには、設定ファイル(または環境変数/CLI)が必要です。キーが不足している場合、デフォルトの適用時にエラーになります。--no-defaults を指定すれば、Web リンクの作成とコメントの投稿は引き続き成功します。
mkdir -p ~/.config/rhdh-jira-link
cp "$SKILL/config.example.json" ~/.config/rhdh-jira-link/config.json
# edit assigneeEmail, teamId, teamName, boardId, …
次の場所も使用できます:$JIRA_PR_MR_CONFIG または $SKILL/config.local.json
(個人のメールアドレスをリポジトリに含めないでください)。
優先順位:CLI > 環境変数 > 設定ファイル > Jira CLI のヒント(~/.config/.jira/.config.yml の login/board.id は担当者/ボードの値を補完する場合に限り使用できます)。
| フィールド | デフォルト適用時の必須項目 |
|---|---|
assigneeEmail | はい(または Jira の login メールアドレス) |
teamId / teamName | はい、またはチームとスプリントをスキップするには、どちらかに NONE を設定 |
boardId | はい(または Jira CLI の board.id)。ただし、NONE でチーム/スプリントをスキップする場合を除く |
storyPoints | はい |
priorityName | はい(優先度が空の場合のみ補完) |
storyPointsField | はい |
teamField / sprintField | はい。ただし、NONE でチーム/スプリントをスキップする場合を除く |
| ステータス | → すでに In Progress/Review/Closed でない限り、In Progress |
すべてのデフォルトをスキップ:--no-defaults または JIRA_PR_MR_APPLY_DEFAULTS=0。
チームとスプリントのみをスキップ(ポイント/担当者/優先度/In Progress は引き続き設定):
"teamName": "NONE",
"teamId": "NONE"
/rhdh-pr-create との関係
/rhdh-pr-create は、rhdh-plugins/community-plugins モノレポの PR ワークフロー(ビルド、changesets、録画)を担当します。このスキルは、任意のリポジトリに対する Jira Web リンクとコメント(およびオプションのデフォルト値)を担当します。名前を指定して呼び出してください。ファイルを読んだり実行したりしないでください。
/rhdh-pr-create が PR を作成すると、URL とタイトルがこのスキルに渡され、このスキルは --no-defaults を指定してリンク手順を実行します。これにより、/rhdh-pr-create は課題を Review に遷移させることができます(references/raise-pr-integration.md を参照)。
エージェントのチェックリスト
- Jira キーを特定します。不明な場合は確認してください(ユーザーが Jira をスキップした場合を除く)。
- フィーチャーブランチでコミットします。Jira の参照 URL と
Generated-by: cursorをPR/MR の本文に含めてください(create-pr-mr.jsは不足している場合にこれらを追加します。community-plugins ではRef:をスキップします)。 create-pr-mr.jsを一度実行します。標準出力に表示されるurl:/diffs:/browserOpened:/jiraLink:を報告してください(browserOpened: trueまたは--no-openの場合、開く手順はすでに完了しています)。- フォールバック:直接作成した後、
link-pr-mr.jsを実行し、自分で一度だけ差分を開きます。 - マージ済みとしてマークする場合:
link-pr-mr.js mark-merged --issue KEYを実行します。マージ済み、クローズ済み、まだ開いている Web リンクを報告してください。 - ユーザー向けの要約では、PR/MR を
[<title>](<url>)の形式でリンクしてください。
ここでの実行はすべて外部への書き込みです
PR/MR の作成、Jira Web リンクの書き込み、コメントの投稿、課題の別プロジェクトへの移動、デフォルトフィールドの入力は、いずれもセッション外の何かを変更します。最初のコマンドを実行する前に /mutation-gate を呼び出し、その指示に従ってください。1 回のスクリプト呼び出しでこれらを複数実行する場合があるため、push、作成、リンク、コメント、デフォルト値をひとまとめにして提示し、すべてを対象とする承認を 1 回取得してください。
完了条件
回答に PR/MR の URL と差分リンク、リンク先の Jira キー(RHDHPLAN の Epic、Story、Task が RHIDP に移動した場合は移動後のキーを含む)、Web リンクのタイトル、コメントが投稿または更新されたかどうか、新たに設定されたデフォルトフィールド、およびスクリプトが出力したすべての warn: 行が含まれていれば完了です。スクリプトが変更しなかったフィールドは、設定済みではなく維持されたものとして報告してください。Web リンクの作成に成功した後、デフォルト値の更新でエラーが発生した場合は部分的なリンク作成となるため、どちらが完了したかを明記してください。