Skip to main content

who-blocks-this-pr

Analyze a PR to determine which files still need approval and from whom, based on CODEOWNERS and website/config/custom.js. Use when the user asks "who needs to approve", "why is the PR blocked", "who blocks this PR", or similar.

Jump to install

Source facts

Repository
fleetdm/fleet
Last source activity
May 18, 2026 at 17:46
Detected SKILL.md language
English
Stars
6,865
Forks
1,019

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
who-blocks-this-pr
description
Analyze a PR to determine which files still need approval and from whom, based on CODEOWNERS and website/config/custom.js. Use when the user asks "who needs to approve", "why is the PR blocked", "who blocks this PR", or similar.
# PR Approvals Quickly determine which reviewers are still needed for a PR and which files they own. ## Step 1: Get the blocking info from GitHub Run these in parallel: - `gh pr view <number> --json mergeStateStatus,mergeable,reviewDecision` to check if it's actually blocked - `gh api repos/<owner>/<repo>/pulls/<number> --jq '.requested_reviewers[].login'` to get **who GitHub is still waiting on** - `gh pr view <number> --json reviews --jq '.reviews[] | select(.state == "APPROVED") | .author.login'` to see who already approved - `gh pr view <number> --json files --jq '.files[].path'` to get changed files If the PR is not blocked, just report that and stop. ## Step 2: Map requested reviewers to files **IMPORTANT: Distinguish between blocking and non-blocking reviewers.** - **CODEOWNERS** (repo root) creates **required/blocking** reviews. GitHub's branch protection enforces these. Last matching pattern wins. - **website/config/custom.js** `githubRepoDRIByPath` and `githubRepoMaintainersByPath` auto-request reviewers but do **NOT** block merges. These are courtesy requests. For each still-requested reviewer, check whether they are required by a CODEOWNERS pattern that matches a changed file. If they only appear in custom.js, they are requested but not blocking. ## Step 3: Report concisely Output two sections: **Blocking (CODEOWNERS-required):** - Who is still needed, and which files/patterns require their approval **Requested but not blocking (custom.js DRI):** - Who was auto-requested, and for which files -- note these don't block the merge Also note who has already approved and what they covered. Do NOT give a full breakdown of every file's ownership. Only show what's relevant to the still-requested reviewers.
View on GitHub