github は何をしますか?
GitHub操作にはghを使用してください。ローカルのコミット/ブランチ/push/pullにはgitを使用します。詳細なレビューにはコード読み取りツールを使用してください。
認証
git auth status
git auth login
ゲートウェイのHOMEはオペレーターのHOMEとは異なる場合があります。ghの認証情報が別の場所に存在する場合は、ゲートウェイサービスの環境変数にGH_CONFIG_DIRを設定して再起動してください。
PR
gh pr list --repo owner/repo --json number,title,state,author,url
gh pr view 55 --repo owner/repo --json title,body,author,files,commits,reviews,reviewDecision
gh pr checks 55 --repo owner/repo
gh pr diff 55 --repo owner/repo
gh pr create --repo owner/repo --title "feat: title" --body-file /tmp/pr.md
PRの本文を作成または更新する際には、Runtime行がsessionUrl=<exact-url>を提供している場合にのみ、以下のフッターを追加してください。<sessionUrl>をそのURLで置き換え、構築や変更は行わないでください。sessionUrlは明示的に公開セッションの場合のみ提供されます。ない場合はフッターを省略し、プライベートチャットのURLを代用したり、共有を有効にして取得しようとしないでください。公開マーカーがある場合は、正確に1つのフッターの前に保持し、フッターは最後に配置してください。
---
[View the OpenClaw team session](https://raw.githubusercontent.com/clawdbot/clawdbot/main/<sessionUrl>)
URLは直接使用できます: gh pr view https://github.com/owner/repo/pull/55
非同期マージ
リポジトリがネイティブランディングワークフローを提供している場合は、それを使用してください。他の場所で承認されたプログラムによるマージには、GitHubの非同期マージAPIをgh api経由で使用してください。gh pr mergeはこのAPIを選択しません。レビュー済みのヘッドSHAを指定し、必要なレビュー/チェックを保持し、まずスタックのメンバーシップを確認してください。スタックされたPRを送信すると、その下流のオープンPRもマージまたはキューに入れられるため、それらにも個別のレビューと承認が必要です。
gh api -H 'X-Octopool-Require: merge-async-v1' \
--method PUT repos/owner/repo/pulls/55/merge-async \
-H 'X-GitHub-Api-Version: 2026-03-10' \
-f sha=REVIEWED_HEAD_SHA -f merge_method=squash -f merge_action=direct_merge
gh api -H 'X-Octopool-Require: merge-async-v1' \
repos/owner/repo/pulls/55/merge-async/REQUEST_UUID \
-H 'X-GitHub-Api-Version: 2026-03-10' -H 'Cache-Control: max-age=0'
apiの直後にOctopoolガードヘッダーを最初に配置してください。古いラッパーは、マージ権限を書き換える前にこれを拒否します。拒否された場合は、非同期ガードを含むOctopoolビルドを使用してください。サポートされているラッパーはSHA/メソッド/アクション/バイパスを保持し、コミットテキストのみを書き換えます。ネイティブのghはヘッダーを通過させることができます。拒否を回避するために、このヘッダーを削除したり、ポリシーを無効にしたり、生のバイナリを選択したりしないでください。
ポーリング前に202レスポンスからdetails.uuidを保持してください。pendingは待機を意味します。mergedにはdetails.shaが含まれますが、これには最終的なPR/ヘッドの検証がまだ必要です。enqueuedはキューに入れられただけでマージされていません。PR自体を監視してください。設定されたキューを尊重するには、merge_action=default(または明示的にキューに入れる場合はmerge_queue)を使用し、direct-onlyのメソッド/タイトル/メッセージフィールドを省略します。許可なくbypass_rulesを有効にしないでください。
failedの場合は、details.messageを報告してください。409は既存のリクエストを示します。再送信せずにそのUUIDとオプションを検査してください。応答の喪失、ポーリングエラー、24時間後の期限切れは、盲目的な再試行や同期フォールバックではなく、調整が必要です。制限された待機時間と新しい読み取りでポーリングしてください。非同期処理は、未達成のチェックに対して自動マージを有効にしません。その動作が承認されている場合は、ネイティブワークフローまたはgh pr merge --autoを使用してください。
ランディング所有権
ユーザーがPRをランディングまたはマージするように依頼した場合、最終結果は確認されたPRのGitHub状態であり、レビュー、ワーカーのターン、CI観察の終了ではありません。
stateがMERGEDであることをgh pr view ... --json state,mergedAt,mergeCommitで証明するまで、ジョブをアクティブに保ちます。- レビュー結果、マージ競合、失敗したチェック、要求された変更は、範囲内にある場合、継続作業として扱います。それらを修正し、必要なゲートを再実行し、正確に更新されたヘッドを再評価します。
- 保留中のチェックは待機状態であり、完了ではありません。リポジトリでサポートされている待機またはマージワークフローを使用し、部分的なグリーンチェックから成功を主張しないでください。
- 作業が永続セッションに委任され、その実行がマージ前に停止した場合は、そのレポートを最終結果として扱うのではなく、同じセッションを続行します。
- 続行するために新しい権限、利用できない資格情報、または安全に推測できない製品上の決定が必要な場合にのみ、ブロックされたとして停止します。正確なブロッカーを報告し、PRをマージせずに残します。
Issue
gh issue list --repo owner/repo --state open --json number,title,labels,url
gh issue view 42 --repo owner/repo --json title,body,comments,labels,state
gh issue create --repo owner/repo --title "Bug: ..." --body-file /tmp/issue.md
gh issue comment 42 --repo owner/repo --body-file /tmp/comment.md
gh issue close 42 --repo owner/repo --comment "Fixed in ..."
CI/実行
gh run list --repo owner/repo --limit 10
gh run view <run-id> --repo owner/repo --json status,conclusion,headSha,url
gh run view <run-id> --repo owner/repo --log-failed
gh run rerun <run-id> --repo owner/repo --failed
API
gh api repos/owner/repo/pulls/55 --jq '.title, .state, .user.login'
gh api repos/owner/repo/labels --jq '.[].name'
gh api --cache 1h repos/owner/repo --jq '{stars: .stargazers_count, forks: .forks_count}'
構造化出力を得るには--jsonと--jqを使用してください。バッククォート、シェルスニペット、環境変数名、ユーザーテキストを含むコメント/本文には--body-fileを使用してください。