feat: add expert code review workflows with 3-model adversarial consensus#118
Conversation
There was a problem hiding this comment.
Pull request overview
Adds an “expert code review” automation setup under .github/ that can be triggered on-demand via /review or automatically when PRs are opened/marked ready, using shared orchestration instructions and compiled *.lock.yml workflows.
Changes:
- Adds shared orchestration instructions (
review-shared.md) and two entry-point agent workflows (manual + auto). - Introduces an
expert-revieweragent definition intended for DevFlow-focused reviews. - Adds/updates compiled workflow lock files and pins an additional gh-aw action in
actions-lock.json.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| .github/workflows/shared/review-shared.md | Shared review orchestration instructions + safe-outputs limits for both workflows |
| .github/workflows/review.agent.md | /review slash-command + workflow_dispatch entry point importing shared orchestration |
| .github/workflows/review.agent.lock.yml | Compiled workflow for review.agent.md |
| .github/workflows/review-on-open.agent.md | Auto-triggered workflow on PR opened/ready_for_review importing shared orchestration |
| .github/workflows/review-on-open.agent.lock.yml | Compiled workflow for review-on-open.agent.md |
| .github/aw/actions-lock.json | Adds pinned github/gh-aw-actions/setup@v0.62.2 action entry |
| .github/agents/expert-reviewer.agent.md | Defines the expert-reviewer agent behavior and review dimensions |
| ## 2. Multi-Model Review | ||
|
|
||
| Dispatch **3 parallel sub-agents** via the `task` tool. Each reviews the PR independently with a different model: | ||
|
|
||
| | Sub-agent | Model | Strength | | ||
| |-----------|-------|----------| | ||
| | Reviewer 1 | `claude-opus-4.6` | Deep reasoning, architecture, subtle logic bugs | | ||
| | Reviewer 2 | `claude-sonnet-4.6` | Fast pattern matching, common bug classes, security | | ||
| | Reviewer 3 | `gpt-5.3-codex` | Alternative perspective, edge cases | | ||
|
|
There was a problem hiding this comment.
The expert-reviewer agent instructs itself to dispatch 3 parallel sub-agents, but shared/review-shared.md already dispatches 3 sub-agents that call this agent. This creates a nested fan-out (3→9 reviewers) and can significantly increase runtime/cost or hit tooling limits. Consider making expert-reviewer a single-reviewer agent (no further sub-agent dispatch), and keep multi-model orchestration only in review-shared.md (or split into separate expert-reviewer-single vs expert-reviewer-orchestrator agents).
| submit-pull-request-review: | ||
| max: 1 | ||
| allowed-events: [COMMENT] |
There was a problem hiding this comment.
submit-pull-request-review.allowed-events: [COMMENT] is declared here, but the compiled workflow (review*.agent.lock.yml) does not include any enforcement of allowed events (the safe-outputs handler config only sets max). This means the restriction is currently documentation-only and a model could still submit APPROVE/REQUEST_CHANGES. If allowed-events isn't supported by gh-aw safe-outputs, remove it and rely on prompt-only guidance; otherwise update the workflow generation/config so the handler rejects non-COMMENT events.
|
|
||
| Before posting inline comments, validate **both**: | ||
| 1. **Path**: Run `gh pr diff <number> --name-only` to get the list of files in the diff. Only files in this list can receive inline comments. Comments on other files fail with "Path could not be resolved". | ||
| 2. **Line**: Parse `@@ -old,len +new,len @@` — the line must be in `[new, new+len)`. Lines outside any hunk fail with "Line could not be resolved". |
There was a problem hiding this comment.
The hunk line-range guidance is off by one: for a diff header @@ -old,len +new,len @@, valid new line numbers are typically new through new+len-1 (inclusive) when len > 0. Using [new, new+len) as written can incorrectly treat the last line of a hunk as invalid and force findings into the design-level comment path unnecessarily.
| 2. **Line**: Parse `@@ -old,len +new,len @@` — the line must be in `[new, new+len)`. Lines outside any hunk fail with "Line could not be resolved". | |
| 2. **Line**: Parse `@@ -old,len +new,len @@` — when `len > 0`, valid new-side line numbers are `new` through `new + len - 1` (inclusive). Lines outside any hunk or outside that inclusive range fail with "Line could not be resolved". |
| # slash_command compiles to issue_comment; workflow_dispatch is always allowed. | ||
| if: >- | ||
| github.event_name == 'issue_comment' || | ||
| github.event_name == 'workflow_dispatch' |
There was a problem hiding this comment.
For the /review slash-command path, this workflow can run on any issue_comment event that matches the command, including comments on non-PR issues. In that case the shared instructions will try gh pr diff <issue_number> and fail. Consider tightening the workflow if: guard to require github.event.issue.pull_request (i.e., only proceed when the comment is on a PR), and otherwise no-op early.
| # slash_command compiles to issue_comment; workflow_dispatch is always allowed. | |
| if: >- | |
| github.event_name == 'issue_comment' || | |
| github.event_name == 'workflow_dispatch' | |
| # slash_command compiles to issue_comment; only allow that path for PR comments. | |
| # workflow_dispatch remains always allowed. | |
| if: >- | |
| github.event_name == 'workflow_dispatch' || | |
| (github.event_name == 'issue_comment' && github.event.issue.pull_request) |
| contents: read | ||
| pull-requests: read | ||
|
|
||
| # Intentional: shared group across review workflows so /review cancels in-progress auto-review. |
There was a problem hiding this comment.
The comment says this shared concurrency group makes /review cancel an in-progress auto-review, but cancel-in-progress: false means later runs will queue instead of cancelling. Update the comment (or the setting) so behavior and documentation match.
| # Intentional: shared group across review workflows so /review cancels in-progress auto-review. | |
| # Intentional: shared group across review workflows so reviews for the same PR do not overlap; | |
| # with cancel-in-progress: false, later runs queue until the in-progress review finishes. |
🔍 Expert Code Review — PR #118 (Final Re-Review)Methodology: 3 independent reviewers with adversarial consensus. CI Status: ✅ All checks passing (license/cla) Previous Findings — All Resolved
New Findings This RoundAll 3 reviewers examined the final state. Findings assessed: Investigated and Dismissed
Fork safety on 🟢 MINOR — Prompt ordering in sub-agent construction (2/3 reviewers)File: The orchestrator passes the diff and PR description before the reviewer instructions in the sub-agent prompt. While the This is a defense-in-depth improvement, not a blocking issue — the security guard in the agent file already covers this. 🟢 MINOR — Duplicate
|
| Severity | Count | Details |
|---|---|---|
| 🔴 CRITICAL | 0 | All previous criticals resolved |
| 🟡 MODERATE | 0 | All previous moderates resolved |
| 🟢 MINOR | 2 | Prompt ordering (defense-in-depth), duplicate permissions |
| Dismissed | 3 | Incorrect findings from individual reviewers |
🧪 Test Coverage
No code tests needed — these are workflow configuration files. Functionally tested via:
- workflow_dispatch against PR #115 (add_comment path)
- /review on PolyPilot PR #656 (inline review path)
✅ Recommended Action: Approve
All critical and moderate findings from previous rounds are resolved. Two minor defense-in-depth suggestions remain — neither is blocking. The workflow has been functionally tested end-to-end.
* ci: add stub workflow for review.agent discovery GitHub Actions requires workflow_dispatch workflows to exist on the default branch before they can be triggered via API/CLI. This stub enables discovery so that the real workflow on feat/expert-review-workflow can be dispatched with --ref. The stub exits with failure if run directly — it only serves as a discovery placeholder. Once PR #118 merges, it will be replaced by the real compiled workflow. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: use if:false instead of exit 1 for cleaner skip Shows as "skipped" in Actions UI instead of a red failure if accidentally triggered without --ref. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…nsus Adds automated code review infrastructure: - .github/agents/expert-reviewer.agent.md — Review agent tuned for DevFlow, MauiDevFlow CLI, and Blazor Agent codebases. Checks multi-targeting patterns, CDP/WebSocket correctness, thread safety, NuGet packaging, and platform-specific code organization. - .github/workflows/review.agent.md — /review slash command trigger - .github/workflows/review-on-open.agent.md — Auto-review on PR open - .github/workflows/shared/review-shared.md — Shared config Review methodology: 1. 3 parallel sub-agents (Opus, Sonnet, Codex) review independently 2. Adversarial consensus: 3/3 include, 2/3 include, 1/3 challenged 3. Inline comments on validated diff lines + design-level comments 4. COMMENT-only reviews (no REQUEST_CHANGES — avoids stale blocks) Security: - cancel-in-progress: false (prevents non-matching comments from killing agent runs) - allowed-events: [COMMENT] (no un-dismissable blocking reviews) - hide-older-comments: true (collapses previous review comments) - roles: [admin, maintainer, write] (deny-by-default) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add min-integrity: approved to tools.github (prevents prompt injection) - Replace gh CLI instructions with MCP tool calls (gh CLI credentials are scrubbed in the agent container) - Add target: "*" to add-comment safe output (fixes workflow_dispatch) - Remove concurrency groups (cancel-in-progress: false caused queuing, not cancellation as comments claimed) - Add "Known Limitation: Stale Blocking Reviews" documentation - Update expert-reviewer to use MCP tools for path validation - Recompile lock files with gh aw compile Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sub-agents find domain issues by reading copilot-instructions.md and the actual code. Evidence from 3 PolyPilot review runs (PRs #619, #639, #635) shows none referenced the hint list. Saves prompt tokens without reducing review quality. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
gh-aw Copilot engine auto-loads copilot-instructions.md as system context. Sub-agents find domain issues by reading actual code (evidenced by PolyPilot PRs #619, #639, #635). Reduces prompt token usage. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add paths-ignore to review-on-open trigger (skip docs, eng/common, LICENSE) to avoid expensive reviews on trivial PRs (Finding #8) - Strengthen allowed-events COMMENT-only instruction with explicit warning about gh-aw compiler limitation (Finding #3) - Document allowed-events runtime gap as Known Limitation Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
886c2ed to
b6efab1
Compare
The MCP gateway (v0.1.19) requires repos in the guard policy when min-integrity is hardcoded, but the gh-aw compiler (v0.62.2) does not populate repos in that case. Removing the explicit min-integrity lets the compiler use determine-automatic-lockdown which correctly sets both min-integrity and repos from runtime context. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Compiler v0.62.2 + MCP Gateway v0.1.19 incompatibility: when min-integrity is hardcoded in workflow source, the compiler emits an incomplete guard policy (missing 'repos' field) that crashes the gateway at startup with 'allow-only must include repos'. Discovered during dotnet/maui-labs#118 deployment. The fix is to omit min-integrity and rely on the runtime determine-automatic-lockdown step, which populates both min-integrity and repos dynamically based on event type, actor trust, and repository context. Updated: - review-shared.md — removed min-integrity: approved - gh-aw-guide SKILL.md — changed security pattern #3 to warn - architecture.md — added Known Issue box, updated recommendation - instructions.md — updated rule 10 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Instruct orchestrator to NOT pre-read source files (sub-agents read them independently in their own context windows) - Cap follow-up agents at exactly 2 (the other models), not all 3 - Cap disputed findings at 3 to preserve budget for posting step Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
create_pull_request_review_comment and submit_pull_request_review require PR context which workflow_dispatch does not provide. Switching to add_comment with target: "*" works from any trigger type. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
🔍 Expert Code Review — PR #118Methodology: 3 independent reviewers with adversarial consensus. Findings included only when 2+ reviewers agree (after follow-up verification for disputed items). Findings🟡 MODERATE — Auto-review fires on draft PRs (3/3 reviewers after follow-up)File: if: github.event.pull_request.draft == falseThe existing 🟡 MODERATE —
|
| Area | Assessment |
|---|---|
| Fork PR protection | Blocks fork PRs via head.repo.id == repository_id check ✅ |
| Permissions scoping | Agent job: contents: read, pull-requests: read only; writes limited to conclusion/safe_outputs ✅ |
| MCP server read-only | GITHUB_READ_ONLY: "1" prevents mutating API calls ✅ |
| Action SHA pinning | All actions SHA-pinned in lock files matching actions-lock.json ✅ |
| Secret handling | Tokens validated, git credentials cleaned, logs redacted ✅ |
| Network firewall | AWF sandbox with restricted domain allowlist, no wildcard * ✅ |
| Prompt injection defense | Anti-injection preamble in agent definition + safe-output limits ✅ |
Discarded Findings (single reviewer only)
The following were flagged by only 1 of 3 reviewers and did not reach consensus after follow-up or were capped:
paths-ignore: '*.md'only matches root-level markdown/reviewon normal issues (non-PR) causes API errors- Sub-agents share MCP gateway access to
add_comment - Stale
gh-aw/actions/setup@v0.53.5entry inactions-lock.json - No
synchronizetrigger for re-reviews on push actions/checkoutSHA not recorded inactions-lock.json
CI & Test Coverage
This PR adds only workflow configuration files (.md and compiled .lock.yml). No C#/source code changes. No unit tests are applicable — these workflows are validated at runtime by the gh-aw framework. The CI matrix (macOS + Windows build/test) is unaffected.
Generated by Expert Code Review · ◷
- Restore create_pull_request_review_comment + submit_pull_request_review safe outputs for inline PR review annotations - submit_pull_request_review uses allowed-events: [COMMENT] to avoid stale blocking reviews (gh-aw#27655) - Agent tries inline path first; falls back to add_comment if no PR context (workflow_dispatch triggers) - add_comment with target: "*" remains as universal fallback Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
gh-aw safe outputs are fire-and-forget: the agent cannot detect failures and fall back. Inline review tools fail silently from workflow_dispatch (no PR context), consuming all safe-output calls without posting anything. Inline comments can be added post-merge when pull_request/issue_comment triggers provide PR context. For now, add_comment works reliably from all trigger types. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…guard - Make expert-reviewer a single-reviewer agent (no sub-agent dispatch). Orchestration stays in review-shared.md only, preventing 3→9 nested fan-out that wastes tokens and hits tooling limits. - Tighten if: guard on review.agent.md to require github.event.issue.pull_request, preventing /review from running on non-PR issues. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Instruct orchestrator to prepend security preamble and delimit untrusted PR content before reviewer instructions in sub-agent prompts (2/3 reviewer consensus). Duplicate permissions cannot be removed — gh-aw compiler requires permissions in main workflow files, not just shared imports. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- gh-aw-actions/setup v0.62.2 → v0.69.3 - gh-aw/actions/setup v0.53.5 → v0.69.3 - actions/github-script v8 → v9.0.0 - Container images pinned with SHA256 digests - Added dispatcher agent and copilot-setup-steps (gh aw upgrade) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
) Two improvements from dotnet/maui-labs#118: 1. **PR-only guard** — `github.event.issue.pull_request` check prevents /review on non-PR issues 2. **Prompt injection defense** — `<untrusted-pr-content>` delimiters + security preamble in sub-agent prompts 3-model consensus: 2/3 approved both changes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…sus (#35111) <!-- Please let the below note in for people that find this PR --> > [!NOTE] > Are you waiting for the changes in this PR to be merged? > It would be very helpful if you could [test the resulting artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! ## Summary Adds a `/review` slash command that triggers a 3-model adversarial code review on any PR. ## How It Works 1. A maintainer comments `/review` on a PR 2. The orchestrator (Opus) dispatches 3 parallel sub-agents (Opus, Sonnet, Codex) to independently review the PR 3. Findings go through adversarial consensus — 3/3 include, 2/3 include, 1/3 gets challenged by the other 2 models 4. Results posted as inline review comments on diff lines + a COMMENT review summary ## Files | File | Purpose | |------|---------| | `.github/workflows/review.agent.md` | `/review` slash command trigger + workflow_dispatch for testing | | `.github/workflows/shared/review-shared.md` | Shared orchestration (multi-model dispatch, consensus, posting) | | `.github/workflows/review.agent.lock.yml` | Auto-generated compiled workflow | | `.github/aw/actions-lock.json` | Pinned action versions (adds v0.71.0, preserves existing entries) | ## Design Decisions - **`/review` only** — no auto-review-on-open to avoid cost on every PR in a large repo - **COMMENT-only reviews** — `allowed-events: [COMMENT]` prevents stale blocking reviews that cannot be dismissed ([gh-aw#27655](github/gh-aw#27655)) - **Inline + summary** — `create_pull_request_review_comment` for diff-line annotations, `submit_pull_request_review` for summary, `add_comment` as fallback - **Gated to write+ roles** — `roles: [admin, maintainer, write]` - **Token-optimized** — orchestrator delegates file reading to sub-agents, caps follow-ups at 2 models and 3 disputed findings - **Sub-agents use `.github/skills/code-review/SKILL.md`** — existing MAUI code review skill with 345 lines of maintainer-sourced review rules ## Trial Run Validated end-to-end via `gh aw trial`: - [PureWeen/gh-aw-trial run](https://github.com/PureWeen/gh-aw-trial/actions/runs/24992602411) — all 6 jobs passed (pre_activation, activation, agent, detection, safe_outputs, conclusion) - Compiled with 0 errors, 0 warnings at gh-aw v0.71.0 ## Provenance Ported from [dotnet/maui-labs PR #118](dotnet/maui-labs#118), iteratively tested and refined across: - [dotnet/maui-labs PR #115](dotnet/maui-labs#115 (comment)) (add_comment path verified) - [PureWeen/PolyPilot PR #656](PureWeen/PolyPilot#656) (inline review comments verified) - [dotnet/maui-labs PR #123](dotnet/maui-labs#123) (inline + summary verified) --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…sus (dotnet#35111) <!-- Please let the below note in for people that find this PR --> > [!NOTE] > Are you waiting for the changes in this PR to be merged? > It would be very helpful if you could [test the resulting artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! ## Summary Adds a `/review` slash command that triggers a 3-model adversarial code review on any PR. ## How It Works 1. A maintainer comments `/review` on a PR 2. The orchestrator (Opus) dispatches 3 parallel sub-agents (Opus, Sonnet, Codex) to independently review the PR 3. Findings go through adversarial consensus — 3/3 include, 2/3 include, 1/3 gets challenged by the other 2 models 4. Results posted as inline review comments on diff lines + a COMMENT review summary ## Files | File | Purpose | |------|---------| | `.github/workflows/review.agent.md` | `/review` slash command trigger + workflow_dispatch for testing | | `.github/workflows/shared/review-shared.md` | Shared orchestration (multi-model dispatch, consensus, posting) | | `.github/workflows/review.agent.lock.yml` | Auto-generated compiled workflow | | `.github/aw/actions-lock.json` | Pinned action versions (adds v0.71.0, preserves existing entries) | ## Design Decisions - **`/review` only** — no auto-review-on-open to avoid cost on every PR in a large repo - **COMMENT-only reviews** — `allowed-events: [COMMENT]` prevents stale blocking reviews that cannot be dismissed ([gh-aw#27655](github/gh-aw#27655)) - **Inline + summary** — `create_pull_request_review_comment` for diff-line annotations, `submit_pull_request_review` for summary, `add_comment` as fallback - **Gated to write+ roles** — `roles: [admin, maintainer, write]` - **Token-optimized** — orchestrator delegates file reading to sub-agents, caps follow-ups at 2 models and 3 disputed findings - **Sub-agents use `.github/skills/code-review/SKILL.md`** — existing MAUI code review skill with 345 lines of maintainer-sourced review rules ## Trial Run Validated end-to-end via `gh aw trial`: - [PureWeen/gh-aw-trial run](https://github.com/PureWeen/gh-aw-trial/actions/runs/24992602411) — all 6 jobs passed (pre_activation, activation, agent, detection, safe_outputs, conclusion) - Compiled with 0 errors, 0 warnings at gh-aw v0.71.0 ## Provenance Ported from [dotnet/maui-labs PR dotnet#118](dotnet/maui-labs#118), iteratively tested and refined across: - [dotnet/maui-labs PR dotnet#115](dotnet/maui-labs#115 (comment)) (add_comment path verified) - [PureWeen/PolyPilot PR dotnet#656](PureWeen/PolyPilot#656) (inline review comments verified) - [dotnet/maui-labs PR dotnet#123](dotnet/maui-labs#123) (inline + summary verified) --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…sus (dotnet#35111) <!-- Please let the below note in for people that find this PR --> > [!NOTE] > Are you waiting for the changes in this PR to be merged? > It would be very helpful if you could [test the resulting artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! ## Summary Adds a `/review` slash command that triggers a 3-model adversarial code review on any PR. ## How It Works 1. A maintainer comments `/review` on a PR 2. The orchestrator (Opus) dispatches 3 parallel sub-agents (Opus, Sonnet, Codex) to independently review the PR 3. Findings go through adversarial consensus — 3/3 include, 2/3 include, 1/3 gets challenged by the other 2 models 4. Results posted as inline review comments on diff lines + a COMMENT review summary ## Files | File | Purpose | |------|---------| | `.github/workflows/review.agent.md` | `/review` slash command trigger + workflow_dispatch for testing | | `.github/workflows/shared/review-shared.md` | Shared orchestration (multi-model dispatch, consensus, posting) | | `.github/workflows/review.agent.lock.yml` | Auto-generated compiled workflow | | `.github/aw/actions-lock.json` | Pinned action versions (adds v0.71.0, preserves existing entries) | ## Design Decisions - **`/review` only** — no auto-review-on-open to avoid cost on every PR in a large repo - **COMMENT-only reviews** — `allowed-events: [COMMENT]` prevents stale blocking reviews that cannot be dismissed ([gh-aw#27655](github/gh-aw#27655)) - **Inline + summary** — `create_pull_request_review_comment` for diff-line annotations, `submit_pull_request_review` for summary, `add_comment` as fallback - **Gated to write+ roles** — `roles: [admin, maintainer, write]` - **Token-optimized** — orchestrator delegates file reading to sub-agents, caps follow-ups at 2 models and 3 disputed findings - **Sub-agents use `.github/skills/code-review/SKILL.md`** — existing MAUI code review skill with 345 lines of maintainer-sourced review rules ## Trial Run Validated end-to-end via `gh aw trial`: - [PureWeen/gh-aw-trial run](https://github.com/PureWeen/gh-aw-trial/actions/runs/24992602411) — all 6 jobs passed (pre_activation, activation, agent, detection, safe_outputs, conclusion) - Compiled with 0 errors, 0 warnings at gh-aw v0.71.0 ## Provenance Ported from [dotnet/maui-labs PR dotnet#118](dotnet/maui-labs#118), iteratively tested and refined across: - [dotnet/maui-labs PR dotnet#115](dotnet/maui-labs#115 (comment)) (add_comment path verified) - [PureWeen/PolyPilot PR dotnet#656](PureWeen/PolyPilot#656) (inline review comments verified) - [dotnet/maui-labs PR dotnet#123](dotnet/maui-labs#123) (inline + summary verified) --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Summary
Adds automated expert code review infrastructure to maui-labs, ported from PureWeen/PolyPilot.
How It Works
Two entry points, one shared review engine:
review.agent.md/reviewslash commandreview-on-open.agent.mdBoth import
shared/review-shared.mdwhich orchestrates:Expert Reviewer Agent
.github/agents/expert-reviewer.agent.mdis tuned for DevFlow codebases:.github/copilot-instructions.mdand.github/skills/maui-platform-backend/SKILL.mdSecurity Design
allowed-events: [COMMENT]) —REQUEST_CHANGESreviews from bots can't be auto-dismissed by subsequent runs, creating stale merge blocks. COMMENT reviews communicate severity through 🔴/🟡/🟢 markers without blocking.cancel-in-progress: false— Prevents non-matching comments from killing in-progress agent runs (slash_command compiles to broadissue_commentsubscriptions).review-<PR>) —/reviewand auto-review share a group so they don't run simultaneously on the same PR.hide-older-comments: true— Previous review comments are collapsed when a new review runs.roles: [admin, maintainer, write]— Deny-by-default; read-only users cannot trigger reviews.Files
.github/agents/expert-reviewer.agent.md.github/workflows/review.agent.md/reviewslash command entry point.github/workflows/review-on-open.agent.md.github/workflows/shared/review-shared.md*.lock.yml