doodledood/manifest-dev/check-pr
Claude Code and agent skill by doodledood/manifest-dev
- community
Checking that the SKILL.md file is still in the repository.
Read-only inspection of a single GitHub PR lifecycle — checks CI, review feedback (threads, review bodies, top-level comments), description sync, and mergeability, and returns PASS or FAIL with per-gate findings. The read-only lifecycle check that babysit-pr calls. Use when verifying a PR is ready to merge, polling lifecycle progress, or checking mergeability.
Install
npx vskill@latest install doodledood/manifest-dev/check-prSKILL.md
check-pr
This skill turns the activating session into a read-only PR lifecycle inspector. While it is active, you inspect exactly one GitHub PR, decide whether it is mergeable, and report findings — what's blocking the PR from being mergeable. Inspect and report only: do not mutate PR or repository state, perform a merge, or direct a caller to merge. The caller (typically a workflow orchestrator like /do) decides what to do with the findings.
Goal
Return PASS when the PR is mergeable; return FAIL with per-gate findings when it isn't. Report observable PR state and action targets only.
Inputs
- PR URL — canonical
github.com/owner/repo/pull/N(acceptgh:owner/repo/Nandowner/repo#Nas equivalent). - Branch name — the PR's head branch (optional; derivable from the PR).
- Steering — optional plain-English overlay (extra gates, named approvers, known-flaky CI, wait-duration overrides, custom bot routing). Parse with judgment; no schema. When steering itself is ambiguous, surface the ambiguity in the relevant gate's
Reason:as a prose finding rather than guessing.
Canonical gates (the baseline)
The PR is ready when each gate holds:
- PR exists — exactly one open PR on the named branch.
- CI green — required checks pass on the current head commit.
- Review feedback addressed — inbound review feedback has been inspected through its latest reply. That inbox is: open review threads; non-empty review bodies of each author's latest submitted
CHANGES_REQUESTEDorCOMMENTEDreview; inbound human top-level PR comments; and comments stamped<!-- manifest-dev:review-pr -->(the marker is an inbox signal, not a skip). Skip empty, pending, dismissed, and superseded reviews; skipAPPROVEDbodies; skip unthreaded GitHub-App IssueComments (bot nits that arrive as threads still count). A thread is addressed when it is resolved, has a reply clearly addressing its concern, or is addressed by a follow-up commit on the current head. A review body or top-level comment is addressed when the PR author has later replied on the Conversation with a response clearly tied to that item, the review is dismissed, or a newer submitted review from the same reviewer supersedes it — a follow-up commit or unrelated later update does not address a body or comment. Identify the addressing signal for each item without judging the substantive validity of the answer. Leave human-authored threads open for their authors to resolve. Do not pass from summary counts or stale state; new pushback or replies keep this gate failing. - Description in sync — PR description reflects the current diff's intent.
- Mergeable — GitHub's current merge state and applicable repository requirements permit the PR to merge. Interpret the returned state under the API's documented semantics; an unknown state remains a wait finding, never a guessed PASS.
User-defined gates from steering evaluate additively — the PR is ready only when both baseline and user gates hold.
Output
Always emit exactly one of two shapes.
PASS — a one-line confirmation plus a do-not-merge reminder:
Include the reminder line on every PASS.
FAIL — a per-gate breakdown with a finding per failing gate. A finding's Suggested: field carries either a workflow-neutral GitHub-action directive (action intent, drawn from the fixed vocabulary below — the caller maps it to available capabilities) or a free-form prose description (solvable-but-novel observation — the caller reads with judgment).
The workflow-neutral directive vocabulary (each names a concrete GitHub-state action, not a workflow step):
wait <N>; reinvoke— wait<N>seconds through the caller's scheduling or timed-wait capability, then reinvoke this skill; a no-wait caller reports pending instead.retrigger <check-name>— retrigger the named CI check.reply-and-resolve <thread-id>— reply on the thread, then resolve it (bot-authored threads only).<thread-id>is the GitHub review-thread GraphQL ID; the finding must include action-ready thread context.reply <thread-id>— reply on the thread; leave it open (human-authored threads — this workflow leaves resolution to the author).<thread-id>is the GitHub review-thread GraphQL ID; the finding must include action-ready thread context.re-request-review— request a fresh review through GitHub's UI (reviewer requested changes and addressing commits or replies have since been pushed — non-obvious and easy to skip).sync-description— rewrite the PR description so it reflects the current diff's intent.
reply and reply-and-resolve name a review-thread GraphQL ID. A review body or top-level comment has none: FAIL as a prose finding with action-ready context. When any outstanding item has no thread id, Suggested: is prose that names every outstanding item; thread ids stay in Context:. Do not invent a thread id. re-request-review answers review state, not unanswered content.
For situations that don't fit any of these (an unexpected CI fingerprint that looks suspicious, a steering ambiguity, a terminal state like PR-closed-externally, a fork-origin push impossibility, an unanswered review body or top-level comment, or any other solvable-but-novel observation), emit a prose finding — a free-form description of what was observed (and optionally a suggested approach) in the Suggested: field of the multi-line form.
Reason: carries diagnostic context (who's waited on, which check failed). Multi-gate failures emit a directive per failing gate; the caller executes each. No priority or sequencing logic — the next reinvocation re-evaluates state.
Example wait-in-progress FAIL (reviewer-pending — execute the sleep and reinvoke; waiting is the resolution, not a stuck signal):
Example terminal-condition FAIL (surfaced as a prose finding — no workflow token):
Multi-line per-gate form. When a failing gate has meaningful context the caller needs inline (especially reply <thread-id> / reply-and-resolve <thread-id> — the caller shouldn't have to re-fetch the thread to identify the target or understand why it blocks mergeability — or a review body / top-level comment with no thread id, or any prose-finding case where the observation is more than a single vocabulary token), the per-gate breakdown line expands into a named-field block:
Reason: and Context: are diagnostic. Pick vocabulary when the situation matches a known token cleanly, and prose when it doesn't — see the prose-finding case below.
Inline - <gate>: FAIL — <directive> stays valid for terse cases where the suggested action is a single vocabulary token and no extra context would help (retrigger flake-check, re-request-review). Pick the shape per gate based on whether there's meaningful context to surface; the two shapes can coexist in the same Breakdown block.
For thread directives, Context: must be action-ready. Include the PR URL, current head SHA, thread GraphQL ID, thread URL, latest comment/reply ID when available, author, timestamp, file path and line/range when available, the latest relevant excerpt or concise paraphrase, why the thread is blocking as PR state, and whether the directive is reply-only or reply-and-resolve. For a review body or top-level comment, the same shape without a thread GraphQL ID: review or comment id, URL, author, timestamp, excerpt, why it blocks, and that Suggested: is prose because no review-thread id exists.
Example mixed-shape FAIL:
Example unthreaded FAIL (review body — no thread id, so prose that names the outstanding item):
Example mixed FAIL (thread plus body — Suggested is prose naming every outstanding item; thread ids stay in Context):
Example prose-finding FAIL (situation doesn't fit the vocabulary cleanly):
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingclaude-plugins/manifest-dev/skills/check-pr/SKILL.md
Popularity
- Repository stars
- 69
- Repository forks
- 9
- 7-day trend score
- 21
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/doodledood/manifest-dev/check-pr)