mcpbeat

Verify Pr

azure/verify-pr

> Verify PR readiness before requesting review or merging. Checks title format, description compliance with the team template, risk label alignment, review thread resolution, CI status, coverage report, and screenshot requirements. Reasons about each review comment to help the engineer understand what's being asked and decide how to respond — rather than auto-fixing blindly.

2k tokens
context cost
the whole folder, loaded on every use
1
files
instructions only
0
copies elsewhere
how many repositories repackaged it
111
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/Azure/LogicAppsUX --skill verify-pr

The instruction itself

14 sections, as written by the author

Verify PR Skill

Use this skill when an engineer asks to "check my PR", "is this ready for review", "verify PR",

or before requesting reviewers. It provides a structured assessment that the engineer acts on.

Repository Context

LogicAppsUX is a pnpm + turbo monorepo with this structure:

  • libs/ — shared libraries (designer, designer-ui, data-mapper-v2, logic-apps-shared, etc.)
  • apps/ — applications (vs-code-designer, vs-code-react, Standalone, iframe-app)
  • e2e/ — end-to-end tests
  • .squad/ — agent squad configuration, playbooks, knowledge

Build and test commands use turbo:

  • pnpm turbo run build — full build
  • pnpm turbo run test:lib — unit tests
  • pnpm turbo run lint — linting

What This Skill Checks

1. Title Format

The PR title must start with one of: feat:, fix:, chore:, refactor:, perf:, docs:, test: — with an optional scope in parentheses.

Good: feat(designer): add conditional action branching

Good: fix(data-mapper): resolve schema loading for nested arrays

Good: chore(ci): update pnpm lock workflow

Good: fix: resolve token picker overflow in dark theme

Bad: Update API endpoint (too vague, no prefix)

Bad: [WIP] working on stuff (no prefix, not descriptive)

2. Description Template

The PR body must include these sections with real content (not just placeholders):

| Section | Required? | What to check |

|---------|-----------|---------------|

| Commit Type | Yes | At least one [x] selected (feat, fix, refactor, perf, docs, test, chore) |

| Risk Level | Yes | Exactly one [x] selected. Must match risk:* label. |

| What & Why | Yes | >50 chars of actual content explaining the change |

| Impact of Change | Yes | At least one of Users/Developers/System has content |

| Test Plan | For code PRs | At least one testing approach selected. If unit/e2e checked, verify tests exist in the diff. |

| Screenshots/Videos | For UI changes | Required when PR changes libs/designer-ui/src/ or libs/designer/src/ (non-test files) |

| Contributors | Optional | Nudge if blank — remind to credit PMs/designers |

3. Risk Label

  • PR must have exactly one label matching risk:low, risk:medium, or risk:high
  • The label must match what's selected in the Risk Level section
  • Estimate what the risk SHOULD be based on the diff:
  • High: security/auth changes, breaking API changes, credential handling, libs/logic-apps-shared core utilities that many packages depend on
  • Medium: libs/logic-apps-shared (shared across monorepo), apps/vs-code-designer (extension distribution), state management changes, new dependencies, CI/infra, multi-package changes
  • Low: docs, tests only, single-component UI fixes, config changes, generated files, libs/designer-ui cosmetic changes
  • If declared risk is lower than estimated, flag it clearly

4. Review Threads

For each unresolved review thread:

  • Read the comment carefully — understand what the reviewer is actually asking
  • Classify it:
  • Blocking bug — reviewer found a real issue that must be fixed
  • Design question — reviewer wants clarification on approach
  • Suggestion — reviewer proposes an improvement, not required
  • Nit — style/naming preference, non-blocking
  • Outdated — the code has changed since the comment was made
  • Explain to the engineer what the reviewer wants and why
  • Suggest a response — but let the engineer decide:
  • For bugs: "This needs a fix — here's what to change: ..."
  • For questions: "The reviewer is asking about X. You could respond with: ..."
  • For suggestions: "This is optional. The tradeoff is ... You can accept or explain why not."
  • For outdated: "This was about old code. Verify it's fixed, then resolve."

Do NOT auto-fix or auto-resolve. The engineer should understand each comment and make an informed decision.

5. CI Status

Check all CI check runs:

  • List any failures with the job name and a brief explanation of what likely failed
  • For passing checks, just confirm "all green"
  • If PR desc check failed, explain which sections need updating
  • Cross-reference with ci-sentinel: If CI failures are complex or flaky, recommend invoking @ci-sentinel for deeper diagnosis with log analysis

6. Coverage Report

  • Check if the pr-coverage.yml workflow has posted its comment (look for the coverage report comment)
  • If coverage decreased, flag it and identify which changed files lack test coverage
  • If coverage report is not yet posted, note it as pending
  • Do NOT duplicate what pr-coverage already reports — just reference it as part of readiness

7. Merge Readiness

After checking everything, give a clear verdict:

## PR Readiness: [READY / NOT READY / NEEDS ATTENTION]

Title: fix(designer): resolve token picker overflow
Description: all sections filled
Risk: medium (declared) matches medium (estimated — touches libs/designer/)
Label: risk:medium present
CI: 14/14 checks green
Coverage: pr-coverage reports 87% on changed files (above threshold)
Review threads: 3 unresolved (1 blocking, 1 question, 1 nit)
Screenshots: provided (before/after token picker)

### Unresolved Threads

#### Thread 1 — Blocking (libs/designer-ui/src/tokenPicker/index.tsx:147)
**Reviewer says:** "This overflow fix might clip the dropdown in narrow panels. Have you tested in the VS Code webview?"
**What this means:** The reviewer is concerned about a different host environment where the panel may be narrower.
**Suggested action:** Test in the VS Code extension (Standalone host may be wider). If confirmed working, reply with a screenshot from VS Code.

#### Thread 2 — Question (libs/designer/src/core/state/tokens/tokenSlice.ts:22)
**Reviewer says:** "Why not use the existing selectTokensByNodeId selector?"
**What this means:** The reviewer wants to understand the design choice.
**Suggested response:** "selectTokensByNodeId returns all token types. This PR needs only expression tokens for the overflow fix, so a new selector avoids re-renders from unrelated token updates."

#### Thread 3 — Nit (libs/designer-ui/src/tokenPicker/styles.ts:88)
**Reviewer says:** "Consider using tokens.spacingHorizontalM instead of 12px"
**What this means:** Minor style preference to use Fluent design tokens instead of hardcoded pixels.
**Suggested action:** Accept — using tokens is the project convention. Or respond "Kept as px because this needs to match a fixed-size icon."

Cross-References with Existing Agents

  • ci-sentinel: For complex CI failures, recommend the engineer invoke ci-sentinel for log-level diagnosis
  • customer-repro-tester: For bug-fix PRs, check if there's a linked customer issue. If so, recommend asking customer-repro-tester to validate the fix against the original repro steps
  • pr-orchestrator: This skill feeds INTO pr-orchestrator's lifecycle — verify-pr checks readiness, pr-orchestrator manages the full PR flow
  • release-scribe: If the PR body needs rewriting, reference release-scribe's conventions

How to Invoke

Engineers can use this skill in Copilot Chat:

  • "Load verify-pr and check my PR"
  • "Is PR #4521 ready for review?"
  • "What do I need to fix before merging?"

The skill works with the current branch's PR automatically, or with a specific PR number.

Continuous Monitoring

Once invoked, the skill should keep monitoring until the PR is fully green:

  • Run the initial verification (title, body, labels, threads, CI, coverage)
  • Report findings to the engineer
  • After the engineer makes changes (commits, edits description, responds to threads):
  • Re-check what's changed
  • Report updated status: "2 of 3 issues resolved. Remaining: ..."
  • Repeat until ALL of these are true:
  • Title matches prefix format
  • Description passes all template sections
  • Risk label present and matches body + estimated risk
  • All review threads resolved (or classified as non-blocking with response)
  • CI checks all green
  • pr-coverage report posted and above threshold
  • Screenshots present (if UI changes detected in libs/designer-ui or libs/designer)
  • Then report: "PR is ready for review/merge. All checks pass."

The monitoring loop should feel like a helpful co-pilot sitting next to the engineer, not a nagging bot. After each check:

  • Only report what CHANGED since last check
  • Celebrate progress ("Risk level fixed — 2 items remaining")
  • If the engineer asks to stop monitoring: stop immediately

Important

  • Never auto-fix code — explain what needs to change and let the engineer decide
  • Never auto-resolve threads — help the engineer understand what to respond
  • Always explain WHY a comment was made, not just WHAT to do
  • Distinguish blocking from non-blocking — engineers should know what MUST be fixed vs what's optional
  • Check the diff — verify review comments are still relevant to the current code
  • Respect pr-coverage — don't duplicate its analysis; reference its comment as authoritative for coverage data

How to use it

Copy the folder

Take azure/verify-pr from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.