mcpField
R
rhdh-jira-link

rhdh-jira-link

github.com/redhat-developer開発1956 回インストール1 日前に更新
リポジトリ

rhdh-jira-link について

rhdh-jira-linkは、GitHubのプルリクエストやGitLabのマージリクエストを作成し、Jiraにリンクするスキルです。スクリプトでJiraコメントの更新や、空の課題フィールドの任意設定も行えます。

主な機能

  1. 01GitHubのPRとGitLabのMRを作成
  2. 02JiraのWebリンクとコメントを追加
  3. 03既存のPR/MRコメントを更新
  4. 04Jiraの空フィールドを任意で設定
  5. 05リンク済みリクエストをマージ済み・クローズ済みに設定

活用シーン

  1. 01PR/MRを作成してJira課題にリンク
  2. 02既存のPR/MRにJiraリンクとコメントを追加
  3. 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.json
agents/
openai.yaml
references/
raise-pr-integration.md
scripts/
create-pr-mr.js
lib.js
link-pr-mr.js
tests/
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
)"
  1. git push -u origin HEAD を実行します(--no-push が指定されている場合を除く)。
  2. origin から GitHub と GitLab のどちらかを判定します。
  3. gh pr create または glab mr create を実行します。
  4. link-pr-mr.js link を実行します(--no-link が指定されている場合を除く)。Jira 認証がない場合はエラーになります。リンクをスキップするには --no-link を指定してください。
  5. 差分ページを開きます(--no-open が指定されている場合を除く)。

フラグ:--draft、--no-push、--no-link、--no-open、--no-defaults、--no-comment、--no-jira-ref、--host github|gitlab。

認証

どちらの方法でも同じトークンを使用できます。

  1. JIRA_API_TOKEN と、~/.config/.jira/.config.yml 内の login/server、または
  2. 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 を参照)。

エージェントのチェックリスト

  1. Jira キーを特定します。不明な場合は確認してください(ユーザーが Jira をスキップした場合を除く)。
  2. フィーチャーブランチでコミットします。Jira の参照 URL と Generated-by: cursor をPR/MR の本文に含めてください(create-pr-mr.js は不足している場合にこれらを追加します。community-plugins では Ref: をスキップします)。
  3. create-pr-mr.js を一度実行します。標準出力に表示される url:/diffs:/browserOpened:/jiraLink: を報告してください(browserOpened: true または --no-open の場合、開く手順はすでに完了しています)。
  4. フォールバック:直接作成した後、link-pr-mr.js を実行し、自分で一度だけ差分を開きます。
  5. マージ済みとしてマークする場合:link-pr-mr.js mark-merged --issue KEY を実行します。マージ済み、クローズ済み、まだ開いている Web リンクを報告してください。
  6. ユーザー向けの要約では、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 リンクの作成に成功した後、デフォルト値の更新でエラーが発生した場合は部分的なリンク作成となるため、どちらが完了したかを明記してください。

コメント