all-green について
all-green は、GitHub のプルリクエストをマージ可能な状態に整えるスキルです。レビューコメント、競合、チェック失敗への対応から最終確認までを案内します。
主な機能
- 01PR 状態と CI チェックの確認
- 02レビューコメントの取得と解決
- 03リベースによる競合対応
- 04チェック失敗の診断と修正
- 05チェック待機と準備状況の確認
活用シーン
- 01ブランチの PR をマージ可能にする
- 02未解決のレビュー指摘に対応する
- 03競合や CI チェック失敗を解消する
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ continuedev/ skills --skill all-greenインストール後、Claude Code で/all-greenを入力して読み込まれたか確認します。
詳細
All Green:PR をマージ可能な状態にする
レビューコメント、マージコンフリクト、失敗しているチェックなど、すべてのブロッカーに対処し、この PR をマージ可能な状態にすることが目標です。
ワークフロー
次の手順を順番に実行してください。
1. PR を特定する
まず、作業対象の PR を特定します。
# Get current branch and find associated PR
gh pr view --json number,title,url,headRefName,baseRefName,mergeable,mergeStateStatus,reviewDecision
現在のブランチに PR が存在しない場合は、ユーザーにその旨を伝えて終了してください。
2. PR のステータスを確認する
対処が必要な事項の全体像を把握します。
# Check for merge conflicts
gh pr view --json mergeable,mergeStateStatus
# Get CI check status
gh pr checks
3. すべてのレビュー スレッドを取得して対処する
重要:GraphQL API を使用してレビュー スレッドを取得し、未解決のものすべてに対処する必要があります。これは必須です。この手順を省略することが、PR がマージ可能な状態にならない最大の原因です。
手順 3a:すべてのレビュー スレッドを取得する(必須)
gh api graphql -f query='
{
repository(owner: "{owner}", name: "{repo}") {
pullRequest(number: {pr_number}) {
reviewThreads(first: 100) {
nodes {
id
isResolved
comments(first: 5) {
nodes { body path line author { login } }
}
}
}
}
}
}'
未解決のスレッドを絞り込みます。"isResolved": false を探してください。未解決のスレッドが 0 件の場合は、手順 4 に進めます。それ以外の場合は、必ずすべてのスレッドに対処してください。
手順 3b:未解決のスレッドごとに、次のすべてを行う
- コメントを読む:何が求められているかを把握します
- 該当するコードを読む:コメントに記載されたファイルと行を確認します
- 求められた変更を行う(同意できない場合は、その理由を説明します)
- スレッドに返信する:行った対応を説明します
gh api graphql -f query=' mutation { addPullRequestReviewThreadReply(input: { pullRequestReviewThreadId: "PRRT_xxx" body: "Fixed in commit abc123" }) { comment { id } } }' - スレッドを解決済みにする — これは必須です。省略しないでください。
gh api graphql -f query=' mutation { resolveReviewThread(input: { threadId: "PRRT_xxx" }) { thread { isResolved } } }'
手順 3c:すべてのスレッドが解決済みであることを確認する(必須)
すべてのスレッドに対処した後、手順 3a の GraphQL クエリを再実行し、未解決のスレッドが 0 件であることを確認してください。未解決のスレッドが残っている場合は、戻って対処してください。
ヒント:
- 行番号がずれないよう、ファイル内の順番に沿ってコメントに対処してください
- コメントの意図が不明な場合は、ユーザーに確認してください
- 提案に同意できない場合は、返信で理由を説明したうえでスレッドを解決してください
- レビュアーが行った対応を確認できるよう、必ず解決する前に返信してください
- コミットハッシュを示せるよう、返信や解決を行う前に修正内容をコミットしてプッシュしてください
4. マージコンフリクトを解決する
PR にマージコンフリクトがある場合:
# Fetch latest changes
git fetch origin
# Get the base branch name from PR
BASE_BRANCH=$(gh pr view --json baseRefName -q .baseRefName)
# Rebase onto the base branch
git rebase origin/$BASE_BRANCH
コンフリクトを解決する際は:
- 両方のバージョンを注意深く読み、意図を把握してください
- 変更内容が独立している場合は、両方の変更を保持してください
- 競合している場合は、正しいバージョンを選択してください
- 問題を検出できるよう、解決後に型チェックを実行してください
# After resolving conflicts
git add <resolved-files>
git rebase --continue
# Verify types still check
npm run tsgo:check
5. 失敗しているチェックを修正する
失敗しているチェックごとに、次の対応を行います。
# Get detailed check failure information
gh pr checks --json name,state,conclusion,detailsUrl
よくある修正方法:
型エラー:
npm run tsgo:check # Identify the errors
# Fix each type error in the reported files
Lint エラー:
npm run lint # See lint issues
npm run lint:fix # Auto-fix what's possible
# Manually fix remaining issues
テストの失敗:
npm test # Run tests to see failures
# Read failing test files and fix the issues
ビルドの失敗:
- インポートの不足を確認する
- 構文エラーを確認する
- すべての依存関係がインストールされていることを確認する
6. プッシュしてチェックの完了を待つ
すべての修正が終わったら:
# If you rebased, force push is required
git push --force-with-lease
# If you only added commits
git push
次に、ブロッキング監視コマンドを使用して、チェックが完了するまで待ちます。
# Block until checks finish, exit immediately on first failure
gh pr checks --watch --fail-fast
このコマンドは次の動作をします。
- すべてのチェックが完了するまでブロックします(ポーリングやトークンの浪費はありません)
- いずれかのチェックが失敗すると、ステータス 1 ですぐに終了します(フェイルファスト)
- すべてのチェックが成功すると、ステータス 0 で終了します
- チェックがまだ保留中の場合は、ステータス 8 で終了します(
--watchを指定していれば発生しないはずです)
7. チェックの失敗に対処する
gh pr checks --watch --fail-fast が失敗で終了した場合:
# See which check failed and get the details URL
gh pr checks --json name,state,conclusion,detailsUrl
# View the failed run logs directly
gh run view <run-id> --log-failed
問題を修正してコミットし、プッシュした後、gh pr checks --watch --fail-fast を再実行してください。
8. マージ可能な状態であることを確認する
チェックが成功したら:
gh pr view --json mergeable,mergeStateStatus,reviewDecision
重要な注意事項
- 未解決のレビュー スレッドにはすべて対処し、解決済みにする必要があります。これが PR をすべて成功の状態にするうえで最も重要です。この手順を省略したり、任意のものとして扱ったりしないでください。必ず GraphQL クエリを再実行し、未解決のスレッドが 0 件であることを確認してください。
- ブランチに他の共同作業者がいる可能性がある場合は、強制プッシュの前に確認してください
- 問題を早期に検出できるよう、型チェックをこまめに実行してください
- 関連する修正をまとめて、論理的にコミットしてください
- 修正後もチェックが失敗し続ける場合は、CI ログを注意深く読んでください。
gh run view <run-id> --log-failed
セッション例
# 1. See what we're dealing with
gh pr view --json number,title,mergeable,mergeStateStatus,reviewDecision
gh pr checks
# 2. MANDATORY: Fetch ALL review threads and find unresolved ones
gh api graphql -f query='{
repository(owner: "OWNER", name: "REPO") {
pullRequest(number: PR_NUM) {
reviewThreads(first: 100) {
nodes { id isResolved comments(first: 5) { nodes { body path line author { login } } } }
}
}
}
}'
# 3. Address each unresolved thread: read code, make fix, commit
# 4. Push fixes
git push
# 5. Reply to and resolve EVERY addressed thread
gh api graphql -f query='mutation { addPullRequestReviewThreadReply(input: { pullRequestReviewThreadId: "PRRT_xxx", body: "Fixed in abc123 — added encodeURIComponent" }) { comment { id } } }'
gh api graphql -f query='mutation { resolveReviewThread(input: { threadId: "PRRT_xxx" }) { thread { isResolved } } }'
# 6. VERIFY: Re-fetch threads and confirm zero unresolved remain
# (Re-run the GraphQL query from step 2, filter for isResolved: false)
# 7. If there are merge conflicts, rebase
git fetch origin
git rebase origin/main
# ... resolve conflicts ...
git add .
git rebase --continue
# 8. Fix any failing checks
npm run tsgo:check
npm run lint:fix
npm test
# 9. Push and wait for checks (blocks until complete, fails fast)
git push --force-with-lease
gh pr checks --watch --fail-fast
# 10. If checks failed, fix and repeat. Once green:
gh pr view --json mergeable,mergeStateStatus,reviewDecision