Files
awesome-copilot/.github/extensions/open-pr-board/README.md
T
Aaron PowellandCopilot App f4319559ab fix(canvas): persist board state in the session workspace
Keep runtime writes outside extension folders to avoid invalidating their safety fingerprints. Import legacy board state without modifying it and document session isolation.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 545df520-6557-4211-a110-53c60f4b9f3a
2026-10-12 12:19:43 +11:00

5.3 KiB

Open PR Board

A canvas for triaging the repository's open pull requests, modelled on the External Plugin Review Board. It pulls open PRs with the gh CLI, lets the agent review them against this repo's own review rules, sorts them into recommendation buckets, and applies confirmed review, close, and merge actions through the authenticated gh CLI.

What it does

  • Buckets — Unreviewed, Reviewing, Close, Request changes, Needs insight, Approve, Actioned. The AI recommendation picks the bucket; dragging a card overrides it.
  • AI reviews — "Review pending" asks the agent to review every PR that has never been reviewed or whose review is stale. The agent records structured results (rationale, repo fit, compliance, differentiation, risks, validation, confidence, suggested comment) through a canvas action.
  • State tracking — each PR remembers whether it has been reviewed, when, what the agent concluded, any manual move, and any decision you recorded. A PR updated after its review is flagged PR changed and is picked up by the next review pass. PRs with submitted feedback or requested changes return to Unreviewed after new commits; the previous action remains in history.
  • Re-review — ask for a fresh pass on one PR with optional focus guidance.
  • Labels — GitHub labels render on every card in their own colours, blended toward the app theme so they stay readable in both light and dark mode.
  • Detail drawer — AI review, description, conversation, changed files, and checks. Keyboard focus stays inside the modal drawer and returns to its card on close. Use Left/Right arrows or Home/End to switch detail tabs.
  • GitHub actions — submit feedback, request changes, close a PR, or approve it and enable auto-merge with a merge commit. Each action needs two clicks to confirm and is also recorded in local board history. Approval is pinned to the board's commit SHA, and auto-merge requires that same head commit. If the head changes, refresh and review the new commit before approving again. Only one GitHub action can run per PR at a time.
  • Reset board — after a second click to confirm, clear every local AI review, queued review, manual move, recorded action, and history entry, then reload open PRs. Reset never undoes or changes anything on GitHub.

Requirements

The gh CLI must be installed and authenticated with access to the repository. Everything the board reads — listing, detail, checks — goes through gh. Confirmed drawer actions use the same authenticated account to submit reviews, close pull requests, and enable auto-merge. Your GitHub permissions and repository branch-protection rules still apply.

State

Board state lives in <session.workspacePath>/extensions/open-pr-board/state/<owner>__<repo>.json, one file per repository. This is Copilot's session-state workspace, not the repository checkout. State survives extension reloads and resuming the same session; a new session has its own board. Infinite sessions must be enabled to provide the workspace. Keeping writes outside the extension folder avoids invalidating its safety fingerprint.

If no session state exists, the board imports the legacy .github/extensions/open-pr-board/state/<owner>__<repo>.json file when present, without modifying it. Existing session state always takes precedence. Use Reset board (or the reset_board action) to clear reviews and history without touching GitHub.

Agent actions

Action Purpose
get_board Current buckets, counts, and per-PR state.
refresh Re-fetch open pull requests from GitHub.
start_review Queue a review pass and return the review instructions.
start_rereview Queue a re-review of one PR with optional guidance.
record_review Record structured review results (used by the agent, not by hand).
move_item Move a PR to a different bucket.
reset_board Clear local reviews, actions, and history, then reload open PRs.
get_pr Full detail for one PR: body, comments, reviews, files.

Review rules

The agent reads review-guidance.md, which layers PR-specific procedure on top of .github/skills/code-review/SKILL.md and .github/copilot-instructions.md. AI evidence gathering is read-only: the agent never edits files or runs write commands against the PR. Only an explicitly confirmed drawer action writes to GitHub.

Review results require the exact queue token from the current review request. Results arriving after a manual move, reset, or replacement review are rejected.

Regression tests

Run node --test eng/open-pr-board.test.mjs from the repository root. GitHub writes are tested with injected in-process fakes, never the authenticated CLI. Run node --experimental-vm-modules --test eng/board-state-storage.test.mjs to check both canvases' session-scoped persistence and legacy imports without accessing GitHub.