pr-link-issue について
GitHub の課題と Linear チケットへの参照をプルリクエストの説明に追加するワークフロースキルです。既存の本文を保ち、既存の `#### Issues` セクションは重複させず置き換えます。
主な機能
- 01現在のブランチのオープン PR を取得
- 02Linear のリンクバックコメントを確認
- 03Issues セクションを追加または置換
- 04PR 本文の他の内容を保持
- 05Linear キーがない場合に通知
活用シーン
- 01PR に課題参照を追加
- 02PR を Linear チケットに関連付け
- 03既存の Issues セクションを更新
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ getsentry/ skills --skill pr-link-issueインストール後、Claude Code で/pr-link-issueを入力して読み込まれたか確認します。
詳細
PR に GitHub Issue と Linear チケットをリンクする
Issue の linear-linkback コメントから取得した GitHub Issue と Linear チケットの両方を参照する、Sentry 形式の #### Issues ブロックを PR の説明に追加します。
入力
<issue-url>—https://github.com/<owner>/<repo>/issues/<n>のような GitHub Issue の URL です。同じリポジトリ内の PR であれば、Issue 番号だけでもかまいません。- (任意)
<pr-number>— デフォルトでは、現在のブランチに対するオープン中の PR が使われます。
手順
-
PR 番号を特定する — ユーザーが指定している場合はスキップします。
gh pr view --json number,body -q '.number'ブランチに PR が存在しない場合は、処理を中止してユーザーに伝えます。
-
入力 URL から Issue 番号とリポジトリを抽出するか、現在のリポジトリの場合は
#1234の形式を受け付けます。 -
Issue の linear-linkback コメントから Linear チケットを取得します。
gh issue view <n> --repo <owner>/<repo> --json comments \ -q '.comments[] | select(.author.login=="linear-code") | .body' \ | grep -Eioe '[a-z]+-[0-9]+' | head -1一致するものがない場合は、ユーザーに Linear キーを尋ねるか、省略します。
-
既存の PR 本文を読み取り、上書きせずに追記できるようにします。
gh pr view <pr-number> --json body -q '.body' -
新しい本文を作成します。本文が空の場合は、
#### Issuesブロックのみを使用します。それ以外の場合は、空行の後に追記します。重複させないでください。すでに#### Issuesがある場合は、2 つ目を追加せず、そのセクションを置き換えます。形式:
#### Issues * Resolves: #<n> * Resolves: <linear-key> -
改行を保持するため、ヒアドキュメントを使って PR を更新します。
gh pr edit <pr-number> --body "$(cat <<'EOF' <new body> EOF )" -
生成された PR の URL を出力して、完了を確認します。
gh pr view <pr-number> --json url -q '.url'
補足
- Linear の linkback コメントは、GitHub ユーザー
linear-codeによって投稿されます。本文には Linear キーをテキストにした Markdown リンクが含まれます。例:PY-2357。 - プロジェクトキーはリポジトリごとに異なります(sentry-python の場合は
PY-…、sentry-javascript の場合はJS-…など)。正規表現[a-z]+-[0-9]+で対応できます。 - 既存の PR の内容を削除しないでください。必ず最初に読み取り、その後に追記または置き換えを行います。
- Issue にまだ Linear linkback がない場合(新規作成された Issue など)は、GitHub Issue の参照だけを追加し、Linear キーがないことをユーザーに伝えます。
コメント
Markdown 対応