Files
awesome-copilot/.github/extensions/external-plugin-review-board
Aaron PowellandCopilot App 4796642f48 fix(external-plugins): prevent false fast-track approvals
Exclude manually overridden submissions from first-party fast-track until a fresh intake pass clears the override label. Disable individual approval controls while intake is pending.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 821f4796-505e-4fb8-96cf-0b5bbf80a636
2026-10-13 14:24:47 +11:00
..

External Plugin Review Board

A maintainer-only Copilot canvas extension for triaging active external-plugin submissions in github/awesome-copilot.

Open it by asking Copilot to "open the plugin review board" (canvas id external-plugin-review-board).

Features

  • Kanban board with buckets: Unreviewed → Reviewing → Straight reject / Probably reject / Needs review / Accept → Actioned. Drag cards between buckets (or use the Bucket dropdown in the details panel). Dragging a card back to Unreviewed clears its AI review so it's picked up by the next review.
  • Perform review asks the agent to review every item without an AI review, using review-guidance.md and the decisions you've made from the board. Results are recorded with the record_review canvas action and move cards into their recommended bucket.
  • Re-review (in the details panel) takes optional guidance on what to focus on, then has the agent spin up a separate sub-session to re-assess that one submission. The sub-session reports its result back and it's recorded on the card along with your guidance.
  • Refresh fetches open external-plugin issues in ready-for-review, awaiting-review, or requires-submitter-fixes states. Pending intake cards stay on the board so their AI reviews, manual buckets, queued re-reviews, and fast-track dismissal state are preserved. Approval and first-party fast-track are unavailable until intake is ready.
  • First-party fast-track: cards labelled first party (repository owned by a Microsoft/GitHub organization) skip AI review and go straight to Accept with a suggested /approve. Only submissions that passed automated intake can use fast-track or be approved; pending submissions remain visible on the board. Fast-track never overrides an existing review or a bucket you chose; drag a card to Unreviewed to opt it out and have it reviewed normally. Cards show First party / Third party pills from the intake labels.
  • Details panel shows the AI review, the rendered issue body, and all comments.
  • Quick actions post /approve (with an optional note) or /reject <reason> straight to the issue after a confirm click. The reject reason is prefilled from the AI's suggested comment.
  • Column actions approve, reject, or re-review every eligible item in a column, including cards hidden by search. Confirmation previews each staged comment; rejection requires a reason for every item. Drawer edits remain staged when switching cards in the current browser session. Queued reviews, pending decisions, and completed actions are excluded. Failures are reported per item without automatically retrying posted commands.

State

Board state lives in <session.workspacePath>/extensions/external-plugin-review-board/state/board.json. This is Copilot's session-state workspace, not the repository checkout. It stores the synced issue metadata, AI reviews, manual bucket overrides, and a history of decisions made from the board. 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. State previously stored in the extension folder is not imported; boards start fresh.

Requirements

  • The GitHub CLI (gh) on PATH, authenticated as a maintainer with write access (needed for /approve and /reject to be honoured by the command router workflow).

Agent actions

get_board, refresh, start_review, start_rereview, record_review, move_item, get_issue.

Regression tests

Run node --experimental-vm-modules --test eng/board-state-storage.test.mjs from the repository root to check both canvases' session-scoped persistence without accessing GitHub. Run node --test eng/board-bulk-actions.test.mjs to check column confirmation, staged feedback, queue exclusions, and partial failures using in-process fakes.