gh-issues について
gh-issuesは、GitHub Issueの修正とPRレビュー対応を自動化するスキルです。gh CLIでIssueを絞り込み、ワーカーを調整して、PR作成やレビュー更新まで追跡します。
主な機能
- 01ラベル、マイルストーン、担当者、状態でIssueを絞り込み
- 02既存作業や有効な割り当てがあるIssueを除外
- 03バックグラウンドワーカーによるIssue修正
- 04ワークフローPRの対応が必要なコメント処理
- 05一定間隔でIssueとレビューを監視
活用シーン
- 01修正対象のオープンIssueを選定
- 02Issue修正をPRとして作成
- 03fix/issue PRへのレビュー指摘に対応
- 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.
監視モード
次を繰り返します。
- Issue を取得します。
- 条件を満たす Issue ワーカーを起動します。
- 対応が必要な PR レビューを処理します。
--intervalの時間だけスリープします。- ユーザーが停止を指示したら終了します。
累積サマリーは簡潔に保ってください。