mirror of
https://github.com/github/awesome-copilot.git
synced 2026-07-16 10:53:25 +00:00
d47a6c93b7
* Add copilot-pr-autopilot skill Skill that drives any GitHub pull request through repeated rounds of Copilot Code Review until the agent has either resolved every thread or explicitly escalated it to the human. Triggered via GraphQL (no @copilot mention needed), triages every open thread with a fix / decline / escalate rubric, replies and resolves each thread citing the pushed SHA, then re-triggers until HEAD is reviewed with zero threads awaiting the agent's reply. Includes step scripts (01 request-review, 02 check-review-status, 03 list-open-threads, 08 reply-and-resolve, 10 cleanup-outdated), shared library (_lib.ps1) with gh-CLI wrappers (Invoke-Gh, Invoke-GhGraphQL, ConvertFrom-GhJson, Assert-GhReady), reply templates, and reference docs for each step. Repo-agnostic. Requires gh CLI on PATH and repo Triage/Write for full autopilot; external PR authors get single-iteration mode with manual re-trigger via the UI re-request button or a substantive push. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address review: split per-step references + add recap-gate circuit breaker - Fix #1: give steps 1/7/10 their own reference files (01-request-review.md, 07-commit-push.md, 10-cleanup.md); trim the inline bodies out of orchestration.md so it stays cross-cutting only. - Fix #3: add a recurring round-cap & recap gate to 09-convergence.md — default STOP every 10th round, recap all prior rounds, detect drift (out-of-scope / over-engineering / wrong-direction / belongs-in-separate-PR) with CONTINUE / REVERT-AND-SHIP / HAND-OFF verdicts. Agent reasoning, no new script. - Surface the gate from SKILL.md and orchestration.md; regenerate docs/README.skills.md. Markdown-only change; scripts unchanged. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * docs(copilot-pr-autopilot): surface recap gate in decision pseudo-code; clarify Copilot+human convergence and round definition - Inject the round-cap recap gate into the '## Decision: loop back or exit' pseudo-code else-branch so an agent following the code block (not just the prose) runs the STOP-every-10th-round check before looping. - Broaden the 'never terminal' paragraph: non-convergence is driven by a Copilot finding OR a human review comment (this skill handles both); the loop ends only when there are no new comments from either source AND every open thread (Copilot or human) has an agent reply/escalation. - Define a 'round' explicitly as one execution of step 1 (01-request-review), i.e. one Copilot-review trigger — the cap counts review rounds, not tool calls or fix edits. Markdown-only; no script changes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * copilot-pr-autopilot: make recap-gate round count deterministic Add 09-review-round.ps1: counts Copilot Code Review submissions straight from the PR's API history (full GraphQL pagination), so the recap-gate trigger is a derived number, not a fallible agent mental tally. This removes the exact failure mode the skill exists to survive — a count drifting across a long run (the real 156-round case). The script reports Round + RecapDue (Round % RecapInterval == 0) only; it never stops the loop or picks the verdict. CONTINUE / REVERT-AND-SHIP / HAND-OFF stays agent reasoning. 09-convergence.md updated to reference the deterministic count while preserving 'no script stops the loop' and 'non-convergence = Copilot finding OR human comment'. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Regenerate docs/README.skills.md for copilot-pr-autopilot (add 09-review-round.ps1) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
60 lines
2.1 KiB
Markdown
60 lines
2.1 KiB
Markdown
# Step 6: Build + test per repo conventions
|
||
|
||
Sub-agent type: `task` (may fan out to several `explore` sub-agents in
|
||
parallel for discovery); budget: 10 min (extension cap up to 2× for
|
||
slow suites).
|
||
|
||
## Inputs
|
||
|
||
- The set of files touched in step 5 (from each fix sub-agent's
|
||
`files_touched`).
|
||
- Whatever the parent has cached from prior rounds about the repo's
|
||
build / test / lint command set.
|
||
|
||
## Return contract
|
||
|
||
```
|
||
{ status, failures }
|
||
```
|
||
|
||
Where `status` ∈ `pass` | `fail` and `failures` is the relevant
|
||
excerpt from the failing tool's output (build errors, test failures,
|
||
lint diagnostics) — enough for the parent to decide whether to loop
|
||
back to step 5 for a follow-up fix or push as-is.
|
||
|
||
## Procedure
|
||
|
||
**Discovery first** — read and combine:
|
||
|
||
- `.github/instructions/*.md`,
|
||
- `AGENTS.md`,
|
||
- `CONTRIBUTING.md`,
|
||
- `README.md`,
|
||
- `package.json` scripts,
|
||
- `Makefile`,
|
||
- language-specific tooling configs,
|
||
- AND recent CI workflow runs (`gh run list`, `gh run view`) to learn
|
||
the *actual* command set in use.
|
||
|
||
THEN run those exact commands on the changed code. Independent
|
||
discovery axes (build tool / test runner / lint / spelling / format)
|
||
can be dispatched as separate `explore` sub-agents in parallel; cache
|
||
the discovered commands per round so re-runs don't re-discover.
|
||
|
||
## Gotchas
|
||
|
||
- **Never invent generic build commands.** A broken build wastes the
|
||
next full review cycle (3–10 min). If discovery turns up nothing,
|
||
surface the gap — don't guess.
|
||
- **Respect repo-specific spell-check / lint / format policies.**
|
||
Some repos prefer rewording over allowlist entries; some have a
|
||
patterns/regex file; some accept inline-ignore directives. Inspect
|
||
the repo's existing config and recent commits before applying a
|
||
generic fix.
|
||
- **Cache discovered commands per round, not per loop.** Repo configs
|
||
can change between rounds (a fix may add a new lint), so re-discover
|
||
at the start of each round, but reuse within the round.
|
||
- **Failures route back to step 5.** When `status: fail`, the parent
|
||
re-enters step 5 with the failure excerpts as a new finding — don't
|
||
push a broken build to satisfy step 7.
|