Standard collaboration patterns for all squad agents — worktree awareness, decisions, cross-agent communication
日本語の概要は準備中です。原文の説明を表示しています。
Prepare an open pull request for merge from a GitHub Copilot cloud agent. Drives Reviews, local validation, and Mergeable to a ready state. Does not merge, and cannot trigger CI.
インストール方法を見るインストールする前に、エージェントに与えられる指示の中身を確認できます。
Drive an open PR for the current branch to a merge-ready state from a GitHub Copilot cloud agent. Do not merge. When everything you can act on is done, report ready-for-human-merge and stop.
This skill runs inside a GitHub Copilot cloud agent, not on a developer's machine.
statusCheckRollup reflects an earlier HEAD and goes stale the moment the agent pushes.make targets are the agent's authoritative correctness signal before push. CI is observational only.workflow_dispatch, or a push from a maintainer). The agent must surface this in its summary.A PR is merge-ready when all three are satisfied. Work them concurrently.
| Condition | Definition | Agent's signal |
|---|---|---|
| Reviews | Every unresolved in-scope review thread is addressed on its merits, replied to, and resolved, including GitHub Actions bot threads/comments (github-actions[bot]). Code changes alone do not satisfy this. Threads where Copilot has already replied with a substantive answer must be resolved before delegating to copilot-review. | copilot-review skill + GraphQL reviewThreads |
| Checks | Local formatting, lint, and impacted unit tests pass; broader tests run when required by affected code or prior CI failures. Last-known CI failures reviewed at log level. | make targets locally; gh pr checks / gh run view --log-failed for prior runs |
| Mergeable | PR is OPEN, not draft, mergeable: MERGEABLE, not BEHIND if the repo requires up-to-date branches. | gh pr view --json mergeable,mergeStateStatus,state,isDraft |
Because the agent cannot re-trigger CI, "Checks" is satisfied at the agent's level when local validation passes and prior CI failures have been root-caused and fixed in the pushed commits. Final green CI requires a human to re-trigger after the agent stops.
Top-level PR comments and review bodies are useful feedback but not a merge gate. Read and action useful ones; do not block on them.
gh pr merge, enable auto-merge, or enqueue. This skill stops at "ready for merge."gh: prefix with GH_PAGER="" or pipe through cat. Without this, commands hang in non-interactive shells.gh pr view payload in a local snapshot file and use jq against that file until you perform an action that can change PR state (for example: push, update branch, resolve conflicts). Do not re-run overlapping gh pr view calls within the same unchanged turn sequence.dependabot[bot], app/dependabot, renovate[bot], or another unrecognized bot unless the user explicitly asks to handle that bot. Continue for trusted GitHub automation such as app/github-copilot and github-actions[bot].bash sleep, no gh run watch, no gh pr checks --watch, no re-check loop after push. The agent's pushes will not trigger workflows; waiting is futile.make ... locally. Treat a green local run as the bar.A failing CI step is a signal, not a nuisance. Even though the agent cannot re-run CI to confirm, the following are forbidden and should trigger ask_user instead:
Anti-pattern test: if the change would make the failure invisible on future PRs without solving it, stop and escalate.
Before declaring a tool broken on a platform: reproduce locally, check version/config, look for transient causes (timeouts, network, runner state). Most "X is broken on macOS/Windows" reports are transient flakes on healthy tooling.
For flaky infra (caches, registries, runners): prefer narrow fixes — targeted retry, higher timeout, pre-flight health check. If a narrow fix doesn't land in one or two attempts, escalate via ask_user.
The agent runs this once. There is no monitoring loop.
mkdir -p /tmp/gh-aw/pr-finisher
PR_SNAPSHOT=/tmp/gh-aw/pr-finisher/pr-state.json
GH_PAGER="" gh pr view <number> --json author,state,isDraft,reviewDecision,mergeable,mergeStateStatus,statusCheckRollup,headRefOid,reviews,comments > "$PR_SNAPSHOT"
GH_PAGER="" gh api graphql --paginate --slurp \
-f query='query($owner:String!,$repo:String!,$pr:Int!,$endCursor:String){repository(owner:$owner,name:$repo){pullRequest(number:$pr){reviewThreads(first:100,after:$endCursor){pageInfo{hasNextPage endCursor} nodes{id isResolved comments(first:100){pageInfo{hasNextPage} nodes{author{login} authorAssociation body createdAt url}}}}}}}' \
-f owner=github -f repo=gh-aw -F pr=<number> \
> /tmp/gh-aw/pr-finisher/review-threads.json
jq -s '.[0] + {reviewThreads: [.[1][] | .data.repository.pullRequest.reviewThreads.nodes[] | . + {comments: .comments.nodes, commentsPageInfo: .comments.pageInfo}]}' \
"$PR_SNAPSHOT" /tmp/gh-aw/pr-finisher/review-threads.json \
> "$PR_SNAPSHOT.tmp" && mv "$PR_SNAPSHOT.tmp" "$PR_SNAPSHOT"
GH_PAGER="" gh pr checks <number>
reviewThreads is not a supported gh pr view --json field. The GraphQL data
above is flattened into the snapshot shape used by copilot-review. If a thread's
commentsPageInfo.hasNextPage is true, fetch its remaining comments before judging
whether it is addressed. Do not treat truncated or failed reads as resolved feedback.
If merged/closed, report and stop. Also stop if the author is a platform-managed dependency bot or another unrecognized bot, unless the user explicitly requested handling that bot-authored PR. This author gate is independent of reviewer eligibility. Otherwise classify each condition as ✅ / ❌ / ⏳ / ❓ using the snapshot file plus gh pr checks. The CI snapshot here is your only view of CI for this run — capture which checks failed and why before changing anything, because after you push it will be stale.
Before delegating to copilot-review, find review threads where Copilot has already replied with a substantive answer but the thread has not yet been marked as resolved. Resolve those threads immediately — no code changes are needed for them.
# Identify unresolved threads that already have a Copilot reply
jq '.reviewThreads[]? | select(.isResolved==false) | select(any(.comments[]?; .author.login == "app/github-copilot" or (.author.login | test("copilot"; "i"))))' "$PR_SNAPSHOT"
For each such thread:
Delegate to the copilot-review skill and treat that delegation as mandatory, not optional. Insist on full handling of each remaining unresolved in-scope thread (including github-actions[bot]): make change → run relevant local validation → commit → push → reply → resolve. A thread is not handled until reply + resolve both succeed.
Before editing, reuse the triage snapshot instead of fetching the same PR again:
jq '{reviews,reviewThreads,comments}' "$PR_SNAPSHOT"
jq '.reviewThreads[]? | select(.isResolved==false)' "$PR_SNAPSHOT"
When reviewing collected feedback, apply reviewer scoping from copilot-review: trusted automation and team/collaborator reviewers only. Ignore non-team-member feedback.
jq '{state,isDraft,mergeable,mergeStateStatus,reviewDecision,headRefOid}' "$PR_SNAPSHOT"
CONFLICTING → resolve conflicts using the repo's conventions. If you cannot determine the correct resolution, ask_user.mergeStateStatus: BEHIND → update branch from base. After updating, scan the new commits for tooling drift (lockfiles, toolchains, lint configs); re-run installs if manifests changed, and flag drift in the summary so any new errors read as drift, not regressions.PR_SNAPSHOT only after you perform a state-changing action that can invalidate it. Otherwise keep reusing the original file for the rest of the pass.Local validation — the agent's only correctness signal. Batch related review,
mergeability, and CI fixes before the final gate. Use focused tests while editing;
do not repeat the full gate for each thread or run both standalone test-unit and
the progress gate on the same unchanged files. Run in order; fix failures before
moving on:
make fmt
make lint
make agent-report-progress
The progress gate includes impacted test-unit coverage and workflow drift checks.
Run make test when the affected code or a prior failing CI job requires its
broader coverage, not on every no-change finisher pass. Run make recompile after
workflow markdown changes. If nothing changed and all blockers are already
addressed, reuse prior validation only when its recorded SHA matches the current
headRefOid, and stop instead of repeating validation or producing an empty commit.
If a make test fix changes wasm compiler output, or wasm golden tests fail:
make update-wasm-golden
Then re-run the affected tests.
If model-routing golden tests fail after an intentional audit-output change:
make verify-model-routing-golden
make update-model-routing-golden
Review the fixture and every regenerated expected*.json diff before accepting
the change. For a new run, follow .github/skills/model-routing-golden/SKILL.md
and require the capture tool's full-download versus minimized-fixture comparison
to pass.
Prior CI failures — for each failure captured during triage, pull logs and fix the root cause:
GH_PAGER="" gh run view <run_id> --log-failed
Classify as: real product/test bug, infra flake, or third-party flake. Apply the fix in the agent's commits and, where possible, reproduce the fix locally via the matching make target. If the failure can't be reproduced locally (infra-only), state that in the summary so the human re-triggers CI with eyes open. Per anti-pattern rules: 1–2 narrow attempts, then ask_user.
After each iteration that changes files, commit and push immediately. Before stopping, ensure there are no uncommitted or unpushed changes left. Do not re-check gh pr checks expecting a new run. Print the summary and stop.
At the stopping point, print:
- ✅ Reviews — <plain language>
- ✅ Checks (local) — <plain language>
- <status> Checks (CI) — stale after agent push; needs human re-trigger. Prior failures: <fixed | open | not reproducible locally>
- ✅ Mergeable — <plain language>
Actions taken: <what changed in this run>
Hand-off: CI must be re-triggered by a maintainer (close/reopen PR, workflow_dispatch, or push) before merge.
Still needed: <human review, anything not actionable from the agent>
Status vocabulary:
Translate status into plain language. Don't write bare labels. Always state explicitly that CI on the agent's HEAD is unverified until a human re-triggers it.
ask_user with context.For eligible PRs, the task is complete only when all are true:
make fmt, make lint, make test-unit all pass (or unrelated pre-existing failures explicitly identified).make test was run and fixed when it was part of the failing state; wasm goldens regenerated when required.copilot-review skill addressed all in-scope review threads, including GitHub Actions bot review comments/threads (github-actions[bot]) (reply + resolve succeeded for each).copilot-review (step 2b).BEHIND updated when present.gh pr merge was run.まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Standard collaboration patterns for all squad agents — worktree awareness, decisions, cross-agent communication
日本語の概要は準備中です。原文の説明を表示しています。
Shared hard rules enforced across all squad agents
日本語の概要は準備中です。原文の説明を表示しています。
Route gh-aw design, creation, diagnosis, patching, active debugging, and upgrade requests to the right strategies.
日本語の概要は準備中です。原文の説明を表示しています。
How to write comprehensive architectural proposals that drive alignment before code is written
日本語の概要は準備中です。原文の説明を表示しています。
Upgrade gh-aw to latest gh-aw-firewall release and identify follow-up spec tasks.
日本語の概要は準備中です。原文の説明を表示しています。
Review code that performs git or gh operations against repository checkouts in gh-aw, checking that the right credentials are available at the right time and that sparseness, shallowness and credential-free factors are properly considered.
日本語の概要は準備中です。原文の説明を表示しています。