mcpField
G
gh-issues

gh-issues

github.com/openclaw開発393.3k5.0k 回インストール今日更新
リポジトリ

gh-issues について

gh-issuesは、GitHub Issueの修正とPRレビュー対応を自動化するスキルです。gh CLIでIssueを絞り込み、ワーカーを調整して、PR作成やレビュー更新まで追跡します。

主な機能

  1. 01ラベル、マイルストーン、担当者、状態でIssueを絞り込み
  2. 02既存作業や有効な割り当てがあるIssueを除外
  3. 03バックグラウンドワーカーによるIssue修正
  4. 04ワークフローPRの対応が必要なコメント処理
  5. 05一定間隔でIssueとレビューを監視

活用シーン

  1. 01修正対象のオープンIssueを選定
  2. 02Issue修正をPRとして作成
  3. 03fix/issue PRへのレビュー指摘に対応
  4. 04Issueとレビューを定期的に監視

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/openclaw/openclaw --skill gh-issues

インストール後、Claude Code で/gh-issuesを入力して読み込まれたか確認します。

詳細

gh-issues

Issue から PR への自動化に使用します。gh CLI を優先し、高レベルコマンドで必要なフィールドを取得できない場合に限り、gh api にフォールバックします。

引数

  • 位置引数 owner/repo:省略可能です。省略した場合は git remote get-url origin から推測します。
  • --label <label>:フィルター。
  • --limit <n>:デフォルトは 10 です。
  • --milestone <title>:フィルター。
  • --assignee <login|@me>:フィルター。
  • --state open|closed|all:デフォルトは open です。
  • --fork <owner/repo>:ブランチをフォークにプッシュし、PR はソースリポジトリに作成します。
  • --watch:Issue とレビューをポーリングします。
  • --interval <minutes>:デフォルトは 5 です。
  • --dry-run:一覧表示のみ行います。
  • --yes:確認を省略します。
  • --reviews-only:Issue の修正をスキップし、PR レビューを処理します。
  • --cron:起動して終了します。--yes を暗黙的に指定します。
  • --model <id>:対応している場合、ワーカーに渡します。
  • --notify-channel <id>:任意の最終通知先です。

フェーズ 1:リポジトリを解決する

git remote get-url origin
if [ -z "${GH_TOKEN:-}" ]; then
  CONFIG_PATH="${OPENCLAW_CONFIG_PATH:-${OPENCLAW_STATE_DIR:-$HOME/.openclaw}/openclaw.json}"
  GH_TOKEN=$(jq -r '.skills.entries["gh-issues"].apiKey // empty' "$CONFIG_PATH" 2>/dev/null || true)
  if [ -n "$GH_TOKEN" ]; then export GH_TOKEN; fi
fi
gh auth status
gh repo view OWNER/REPO --json nameWithOwner,defaultBranchRef

gh auth status が失敗し、GH_TOKEN が設定されていない場合は停止し、GitHub の認証/設定を求めてください。

派生値:

  • SOURCE_REPO:Issue のリポジトリ。
  • PUSH_REPO:フォークが設定されている場合はフォーク、それ以外はソースリポジトリ。
  • BASE_BRANCH:ユーザーから指定がない限り、ソースリポジトリのデフォルトブランチ。
  • PUSH_REMOTE:フォークモードでは fork、それ以外では origin。

ユーザーが未コミットの変更をワーカーに無視させることを確認しない限り、作業ツリーに変更がある場合は停止してください。

フォークモードでは、確認前または --dry-run の実行中にリモートを変更しないでください。

認証と読み取りアクセスのみを確認します。

gh auth token >/dev/null || test -n "${GH_TOKEN:-}"
gh repo view "$PUSH_REPO" --json nameWithOwner
git ls-remote --exit-code origin HEAD

フェーズ 2:Issue を取得する

フィルターを設定して取得します。

gh issue list --repo "$SOURCE_REPO" --state open --limit 10 --json number,title,labels,url,body,assignees,milestone

必要に応じて --label、--milestone、--assignee、--state、--limit を追加します。gh issue list はすでに PR を除外します。

該当がない場合は、一致する項目がないことを報告します。--dry-run の場合は、簡潔な一覧を表示して終了します。

フェーズ 3:作業の重複を防ぐ

候補ごとに、次を実行します。

gh pr list --repo "$SOURCE_REPO" --search "$SOURCE_REPO#<n>" --state open --json number,url,title,headRefName
gh pr list --repo "$SOURCE_REPO" --head "fix/issue-<n>" --state open --json number,url
gh api "repos/$PUSH_REPO/branches/fix/issue-<n>" >/dev/null

オープン中の PR、既存のブランチ、または有効なローカル claim がある候補はスキップします。

Claim ファイル:

${OPENCLAW_STATE_DIR:-$HOME/.openclaw}/gh-issues-<owner>-<repo>.json

2 時間を超過した claim は期限切れとして扱います。 書き込む前に親ディレクトリを作成してください。

フェーズ 4:確認する

--yes または --cron が指定されていない場合は、ユーザーに次から選択するよう求めます。

  • all
  • カンマ区切りの Issue 番号
  • cancel

確認後、フォークモードでは、作業をエージェントに渡す前にプッシュ先リモートを設定します。

gh auth setup-git
git remote get-url fork || git remote add fork "https://github.com/$PUSH_REPO.git"
git remote set-url fork "https://github.com/$PUSH_REPO.git"
git ls-remote --exit-code fork HEAD

フェーズ 5:ワーカーを起動する

バックグラウンドワーカーを最大 8 つ起動します。--cron の場合は、各ワーカーの完了を待たないでください。

起動前に、現在の ISO タイムスタンプを使って SOURCE_REPO#<n> の claim を書き込みます。ワーカーから PR または失敗の報告を受け取ったら、claim を削除または更新します。これにより、ブランチまたは PR が作成される前に watch と cron が重複して実行されることを防ぎます。

ワーカープロンプトには次を含めてください。

  • Issue の URL、タイトル、本文、ラベル。
  • SOURCE_REPO、PUSH_REPO、BASE_BRANCH、PUSH_REMOTE、フォークモード。
  • 対象ブランチ fix/issue-<n>。
  • 必要な証拠と PR 本文。
  • 通知先。

ワーカーへの指示:

Use gh and git. Do not handwave.
Checkout/create fix/issue-<n> from BASE_BRANCH.
Implement minimal fix.
Run relevant tests.
Commit with conventional message.
Push to PUSH_REMOTE.
Open PR against SOURCE_REPO BASE_BRANCH.
PR body: What Problem This Solves + Why This Change Was Made + User Impact + Evidence + visible Fixes SOURCE_REPO#<n>.
Report PR URL or failure reason.
Send completion/failure with openclaw message send if route provided.

利用可能な場合は、coding-agent の起動ルールを使用します。

フェーズ 6:結果を収集する

process またはタスクレジストリを使ってワーカーをポーリングします。次を報告します。

  • Issue 番号とタイトル。
  • ステータス:PR 作成、スキップ、失敗、タイムアウト。
  • PR の URL または理由。

通知先チャンネルには、最終結果の簡潔な概要のみを通知します。

レビューのみ/レビューの監視

オープン中の PR を検出します。

gh pr list --repo "$SOURCE_REPO" --state open --json number,title,url,headRefName,reviewDecision \
  --jq '[.[] | select(.headRefName | startswith("fix/issue-"))]'

レビューのスレッド/コメントを取得します。

gh pr view <n> --repo "$SOURCE_REPO" --json url,headRefName,comments,reviews
gh api "repos/$SOURCE_REPO/pulls/<n>/comments"
gh api "repos/$SOURCE_REPO/issues/<n>/comments"

ユーザーが PR 番号を明示的に指定していない限り、このワークフローが作成した fix/issue-* PR のみを処理します。対応が必要なコメントを PR ごとにまとめます。称賛、ステータス、重複、対応済みのコメントは無視します。選択された PR または対象範囲を指定された PR ごとに 1 つのワーカーを起動し、同じバックグラウンド実行ルールを適用します。

レビュー担当ワーカーへの指示:

Checkout PR branch.
Read all actionable review comments.
Patch minimal changes.
Run relevant tests.
Commit and push normally; do not force-push unless explicitly told.
Reply to addressed comments with fix + commit/file reference.
Report comments addressed/skipped and proof.

監視モード

次を繰り返します。

  1. Issue を取得します。
  2. 条件を満たす Issue ワーカーを起動します。
  3. 対応が必要な PR レビューを処理します。
  4. --interval の時間だけスリープします。
  5. ユーザーが停止を指示したら終了します。

累積サマリーは簡潔に保ってください。

コメント