Skip to main content

review-prs

Review recent BuilderIO/agent-native human pull requests, approve eligible internal PRs, and merge changes that are ready by Steve's bar. Use for scheduled or manual PR sweeps; flag external non-bug work and unresolved major product or UX decisions to Steve.

Informações da origem

Repositório
BuilderIO/agent-native
Última atividade na origem
2 de outubro de 2026 às 15:54
Idioma detectado do SKILL.md
inglês
Estrelas
7.065
Forks
640

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
review-prs
description
Review recent BuilderIO/agent-native human pull requests, approve eligible internal PRs, and merge changes that are ready by Steve's bar. Use for scheduled or manual PR sweeps; flag external non-bug work and unresolved major product or UX decisions to Steve.
user-invocable
true
scope
dev
metadata
{"internal":true}
# Review Pull Requests Review the newest relevant human pull requests in `BuilderIO/agent-native`. Approve safe fixes from verified BuilderIO organization members under the internal author policy below. Treat approval as a trust decision. Never approve an external or unverified author. Approval and merge readiness are separate. A **Ready to merge by Steve's bar** result means merge the PR under the guarded merge procedure below. For a confirmed external author, only a clear bug fix enters evidence review and the possible merge flow; external authors are never eligible for an approval review. Surface other external work for Steve's explicit approval before a full review or merge; a scheduled or manual sweep is not that approval. ## Selection and evidence List open PRs newest by creation or update time, then inspect the latest Agent-Native work first. Include recent PRs from internal team members even if their branch name does not contain a product name. Re-review a PR when it has a new commit, review, comment, or check result; otherwise do not create duplicate review noise. Before selecting a PR for review, read only enough metadata to determine its author and draft state: - Ignore every bot-authored PR, including Dependabot and `builder-io-integration[bot]`, and ignore every PR authored by the exact login `steve8708`. Do not inspect their diff, checks, reviews, membership, or source links; do not take any review or merge action; and do not add them to the end-of-run recap. - Ignore draft PRs completely. Do not inspect their diff, checks, reviews, membership, or source links; do not take any review action; and do not add them to the end-of-run recap. - Verify each remaining human author's current BuilderIO membership using the organization membership API below. For a confirmed nonmember, apply the external-contribution scope gate before reading review summaries or entering the evidence sweep. For all PRs that pass that gate, read the current review summary to determine whether the PR already has a current, non-dismissed `APPROVED` review. - Reuse that review as the code assessment only after verifying the reviewer is a different, current BuilderIO member and is eligible under the PR's author- and scope-specific rules, including any independent-review requirement. An unknown or ineligible reviewer never suppresses a full diff review. A valid approval suppresses duplicate code review only while no newer commit, comment, review, or check result exists; the PR still enters the merge-readiness pass and recap. All non-draft human PRs that pass the author and external-scope gates enter the evidence sweep below. For PRs with a verified eligible current-head approval and no newer event, skip duplicate code review but check merge readiness and merge when ready. Eligible Liam PRs with only older-head approvals enter the sweep so the current head can be reviewed. For every PR you inspect, read: - the title, body, linked issue, and source links; - for PRs requiring a new or repeat code review, the complete changed-file list and diff, including generated or migration files; a current-head approval from a verified eligible reviewer with no newer event is the existing code assessment, so check its merge evidence without repeating that review; - all current human and bot review summaries, inline comments, and replies; - every current check/status context and actual conclusion, marking pending, skipped, unknown, or failing separately; - the repository ownership and the affected app or framework boundary. Inspect repository rulesets as well as branch protection. List every page with `gh api --paginate 'repos/BuilderIO/agent-native/rulesets?includes_parents=true'` so organization and enterprise rulesets are included, then inspect each matching `/rulesets/<id>` definition's `conditions.ref_name` and all applicable rules for the PR base branch, including required status checks, deployments, and other non-status conditions. Only rulesets with `enforcement: active` impose requirements; disabled and evaluate-only rulesets do not. `gh pr checks --required` can omit ruleset requirements; never infer that no merge requirements exist from that command alone. Use the GitHub organization membership API to verify that the author and any reviewer whose approval you rely on are current members of `BuilderIO`. Do not infer membership from a display name, email, company claim, branch name, `authorAssociation`, or a familiar-looking bot. If author membership cannot be verified, do not approve. External authors are never auto-approved, even when the patch looks safe or the issue is obviously valid. ## External-contribution scope gate For an author the membership API confirms is not a current BuilderIO member, continue into the normal evidence sweep only for a clear bug fix: a change that corrects a specific reported or reproducible defect by restoring intended behavior. A feature, improvement, refactor, new or changed product behavior, or mixed bug-fix-and-enhancement scope is not a clear bug fix. If the title, issue, and initial diff do not establish a clear bug fix, treat it as non-bug work. For external non-bug work, stop before the full code review, approval or review action, merge-readiness disposition, author-facing draft, or merge. Report it to Steve as **Needs Steve's approval for scope**, with the PR link, author, stated scope, and why it is not a clear bug fix. Wait for Steve's explicit go-ahead on that PR before continuing. Invoking or scheduling `review-prs`, approving a different PR, or prior approval of another external contribution does not authorize it. If membership is unknown, use the existing unknown-membership policy; do not classify the author as external. The scope gate does not apply solely because membership could not be verified. Keep the no-approval outcome, report the missing membership check, and assess merge readiness under the existing unknown-membership policy. ## Liamdebeasi approval policy For a PR authored by the exact GitHub login `liamdebeasi` and immutable user ID `2721089`, always submit an approval when it is a current, non-draft PR in `BuilderIO/agent-native`, the membership API verifies current BuilderIO membership, and it does not already have a current-head, non-dismissed approval; never duplicate an existing approval. This exception overrides the ordinary check, ordinary review-feedback, scope, and UX-owner gates. It does not override membership verification, the ultra-scary safety gate, or the independent-review requirement for PRs changing review or approval policy, agent-safety instructions, membership verification, or CI/deployment security controls. Active credible safety findings remain approval-blocking. It does not authorize a merge. ## Internal-author approval policy The user has explicitly authorized a practical internal-author exception for this skill: - For a verified current BuilderIO member, failed, pending, skipped, or unknown CI/check evidence does not by itself block approval. Record the exact state in the recap and assume the author will resolve it before merge. - For a verified current BuilderIO member, ordinary unresolved review feedback, including bot findings, does not by itself block approval. Record the unresolved feedback and assume it will be handled before merge. - These exceptions do not waive the ultra-scary safety gate below. Do not approve when the current diff or review evidence indicates a credible auth bypass, permission or tenant-isolation failure, secret or credential leak, destructive data loss or migration, remote code execution, SSRF, payment compromise, deployment compromise, or similarly severe production risk. - Do not claim that ignored checks are green or that ignored feedback is resolved. The recap must distinguish approval under the internal exception from a clean merge state. When an exception requires independent review, it means a separate, attributable, non-dismissed `APPROVED` PR review from a different verified current BuilderIO member, submitted against the current PR head and remaining that reviewer’s latest non-dismissed review, with no active, non-dismissed `CHANGES_REQUESTED` review from any reviewer. Self-review, author-stated validation, bot-only review, a `COMMENTED`/`CHANGES_REQUESTED` review, an unverified reviewer, or unverifiable review state does not satisfy it; without that evidence, do not use the exception. ## Owner exceptions The verified owner exceptions are: - Alice (`3mdistal`) - Content - Nick (`NKoech123`) - Slides - Shomix (`shomix`, GitHub user ID `100691266`) - any app or framework area - Enzo (`enzoames`) - Factory, only when the PR is specific to the Factory app - Sid (`sidmohanty11`) - Design - Manu (`manucorporat`) - any app or framework area For a verified PR authored by Alice and limited to Content app or template behavior, including supporting shared framework or Desktop plumbing required by that Content feature, or authored by Nick and limited to Slides app behavior, including supporting shared framework plumbing, auto-approve by default. This includes that owner's UX changes, refactors, failed or pending checks, and ordinary unresolved human or bot feedback. These owner exceptions override the normal UX-owner, narrow-refactor, check, and review-resolution gates. They do not waive the ultra-scary safety gate or the external-author prohibition. Treat a PR as Factory-specific only when the changed behavior is limited to Factory app paths and Factory-owned actions, instructions, locales, or tests. Shared framework changes that materially affect other apps, Slack ingestion, core runtime, or deployment remain on the standard gate. For a verified PR authored by Shomix (`shomix`, GitHub user ID `100691266`), auto-approve by default regardless of app scope, UX implications, refactors, failed or pending checks, or ordinary unresolved human or bot feedback. Verify both the login and immutable GitHub user ID; do not rely on the mutable login alone. This exception does not waive the ultra-scary safety gate, the external-author prohibition, or the independent review requirement for PRs changing review or approval policy, agent-safety instructions, membership verification, or CI/deployment security controls. For a verified PR authored by Sid, or by Enzo (`enzoames`) when the PR is Factory-specific, auto-approve by default, including that owner's UX changes, refactors, failed or pending checks, and ordinary unresolved human or bot feedback. The owner exception overrides the normal UX-owner, narrow-refactor, check, and review-resolution gates. For a verified PR authored by Manu (`manucorporat`), auto-approve by default regardless of app scope, UX implications, refactors, failed or pending checks, or ordinary unresolved human or bot feedback. This exception does not waive the ultra-scary safety gate or the external-author prohibition. Changes to review or approval policy, agent safety instructions, membership verification, or CI/deployment security controls require independent review and are not eligible for this exception. For a verified PR authored by `shawnmcclelland`, auto-approve by default regardless of app scope, UX implications, refactors, failed or pending checks, or ordinary unresolved human or bot feedback. This exception does not waive the ultra-scary safety gate, the external-author prohibition, or the independent review requirement for changes to review or approval policy, agent safety instructions, membership verification, or CI/deployment security controls. For a verified PR authored by `kapunahelewong` or Wes (`bwreid`), auto-approve by default when the PR is docs-only. Docs-only means documentation content, localizations, docs navigation or redirects, and docs-specific tests, with no runtime app behavior, actions, database, credentials, workflows, deployment, or other production-code change. This docs exception also overrides the normal UX-owner, narrow-refactor, check, and review-resolution gates. All owner and docs exceptions still require current BuilderIO membership and do not waive the ultra-scary safety gate or the external-author prohibition. A PR involving preview execution, credential routing, tenant isolation, destructive data behavior, or another potentially severe security boundary needs an explicit ultra-scary assessment before approval. ## Standard approval gate For verified internal authors who do not qualify for a verified owner or docs exception, approve only when all of the following are true after applying the internal-author policy: 1. The PR is in `BuilderIO/agent-native` and the author is a verified current BuilderIO organization member. 2. It fixes a clear, repo-owned issue with a narrow root-cause change. The evidence supports the changed boundary, and the PR does not encode one chat report as a brittle global prompt or situation-specific rule. 3. There is no ultra-scary concern involving security, auth, permissions, secrets, data loss, destructive migrations, remote code execution, SSRF, payments, deployment safety, or an unexplained dependency/infrastructure change. 4. The scope and affected behavior are understood. Escalate unresolved major product or UX decisions as described below. Owner exceptions govern whether to submit an approval review; they do not block a ready merge. Do not approve external authors, unverified authors, or internal PRs whose remaining concern is ultra-scary. A clean-looking diff is not enough when the owner, runtime behavior, or release state is uncertain. ## Product and UX decisions Assess product and UX impact from the actual diff, not just filenames. This includes visible copy, layout, navigation, controls, settings, interaction, loading states, accessibility behavior, and user-facing defaults. A major decision changes a core workflow, navigation or information architecture, product defaults or permissions, or behavior across apps. If that decision is not already settled by Steve's written direction, flag it to Steve and do not merge until he decides. A routine bug fix or bounded improvement within an established workflow is not a major decision. The app-owner map is for approval exceptions only; an owner approval is not a merge requirement: - Alice (`3mdistal`) - Content - Shomix (`shomix`) - Clips - Nick (`NKoech123`) - Slides - Nicholas - Analytics - Enzo (`enzoames`) - Factory - Sid (`sidmohanty11`) - Design Verify the author's GitHub identity and affected app before applying an owner exception. An app owner's status does not waive the ultra-scary safety gate or the major product/UX decision above. ## Review actions For a PR that passes the applicable gate and lacks a current-head approval, submit one GitHub approval review and record the approval URL in the recap. Do not duplicate an existing current-head approval. Do not add a tag, assignment, mention, or explanatory comment unless the invocation explicitly asks for it. Bot-authored PRs, including Dependabot, are outside this skill's review and merge scope and must remain completely untouched. For a PR that fails an approval gate, do not submit an approval. Flag the exact concern and the evidence needed to resolve it. External or unverified authors never receive an approval review, but their PRs can still be merged when they meet the readiness gate below. Confirmed external bug fixes must also pass the external-contribution scope gate; confirmed external non-bug work remains stopped at Steve's approval gate. For unknown membership, do not apply the external scope gate solely because verification failed; preserve the no-approval outcome, assess readiness under the existing unknown-membership policy, and name the missing check. ## Merge-ready disposition and handoff For every human PR in the evidence sweep, assess readiness regardless of whether this skill can submit an approval. Use the BuilderIO membership API; a confirmed nonmember is external, while lookup or visibility failures leave membership unknown. Only prepare author-facing reply drafts for authors verified as external. Never draft a reply for a verified BuilderIO member, including a thank-you; report requested updates in the recap instead. If membership is unknown, do not treat the author as external or draft a reply. Classify the PR as **Ready to merge by Steve's bar**, **Needs updates**, **Needs Steve's product/UX decision**, or **Cannot assess**. Ready means the current head is sound, every required check and status context has passed, and actionable human or automated findings have a verified fix or evidence-backed terminal disposition. An active human `CHANGES_REQUESTED` review or unresolved actionable request blocks readiness; resolved, superseded, or non-actionable threads do not. Missing approval or `reviewDecision: REVIEW_REQUIRED` alone never blocks readiness or merge. Conflicts, pending or failed required checks, active actionable bot findings, credible safety concerns, or a material code issue mean **Needs updates** or **Cannot assess**. Report skipped, unknown, and non-required checks accurately; never describe them as passing. Independent-review requirements above govern approval actions and reuse of existing approvals; they do not create a second human-approval gate for merging. If no eligible current-head approval supplies the existing code assessment, inspect the complete diff and decide readiness from that evidence. A ready disposition is an instruction to merge, not a recommendation to hand off. Keep this review sweep in the foreground for a 10-minute merge gate. Once all the conditions hold, record the live `headRefOid`; they must remain true for 10 consecutive minutes on that same head: - every status context required by branch protection or an applicable repository ruleset is satisfied on the recorded head according to GitHub's merge rules. Record the actual conclusion; count `neutral` or `skipped` only when GitHub treats that result as satisfied. Pending, failed, and unknown contexts are not satisfied. Every other applicable merge requirement (such as a required deployment) must also be satisfied; - every actionable review finding has a verified fix or terminal disposition; - the PR is `MERGEABLE` with no conflicts; - the same recorded `headRefOid` remains unchanged for the entire 10-minute interval, and all checks and review dispositions apply to that head. Reset the 10-minute gate after a push, failed check, new actionable feedback, new commit, or merge conflict. This skill itself authorizes the guarded merge; do not hand off to standalone `babysit-pr` or wait for another approval. GitHub's `--admin` merge is a broad protection bypass, not one scoped to human approval. Use it only after verifying that missing human approval or `REVIEW_REQUIRED` is the sole unsatisfied requirement, all other applicable protections are satisfied, and no merge queue is required. Revalidate the exact live head and all requirements immediately before invoking it. If any non-review requirement is pending, failed, unknown, or unsatisfied, do not use `--admin`; wait for that requirement. When no queue is required and the gate holds, use the guarded admin merge: This revalidation is client-side, not atomic with GitHub's admin merge. `--match-head-commit` protects the PR head SHA but does not pin status conclusions or ruleset configuration. Re-read active protections and required contexts for the exact head in one final pass, then invoke the merge immediately. If that evidence changes or cannot be read, stop and restart the gate. This leaves a narrow time-of-check/time-of-use window inherent in the admin merge API; it never authorizes merging with a known failed, pending, or unknown non-review requirement. ```bash gh pr merge <number> --repo BuilderIO/agent-native --squash --admin \ --match-head-commit <verified-head-oid> ``` If an applicable ruleset requires a merge queue, do not use `--admin`. After the same readiness gate holds, enqueue the exact head through GitHub's queue: ```bash gh pr merge <number> --repo BuilderIO/agent-native --auto --squash \ --match-head-commit <verified-head-oid> ``` Verify the queue entry's PR head against the recorded head with `pullRequest { id headRefOid mergeQueueEntry { state position pullRequest { headRefOid } headCommit { oid } } }`. Keep `mergeQueueEntry.pullRequest.headRefOid` equal to the recorded PR head; track `mergeQueueEntry.headCommit.oid` separately as the merge-group candidate used for queue checks. `--match-head-commit` only gates the enqueue request; it does not pin a later auto-merge or queue entry to that SHA. Whenever a gate reset occurs after a queue entry or auto-merge request is active, immediately dequeue any active queue entry and disable any active auto-merge request, then verify both `mergeQueueEntry` and `autoMergeRequest` are absent. This applies to every reset cause, including a head change, failed check, new actionable feedback, new commit, or merge conflict. Re-review the changed head or feedback and enqueue again only after the full 10-minute gate passes. Never leave a stale readiness decision queued to merge. ```bash gh api graphql -F id='<pull-request-node-id>' -f query='mutation($id: ID!) { dequeuePullRequest(input: { id: $id }) { mergeQueueEntry { state } } }' gh pr merge <number> --repo BuilderIO/agent-native --disable-auto ``` Use the dequeue mutation only when a queue entry exists and `--disable-auto` only when auto-merge is enabled. Do not report the PR merged until its state is `MERGED`, then verify the merge commit is an ancestor of `origin/main`. If the queue cannot proceed solely because a human approval is required, report that queue/approval policy conflict to Steve; do not send the PR to another reviewer or bypass the queue. `REVIEW_REQUIRED` alone is not a reason to wait for another reviewer or ask Steve to click Merge. This skill's standing authorization covers that merge. After the command, re-query the PR for its merged state and merge commit, fetch `origin/main`, and verify that commit is an ancestor of `origin/main`. Report a merge only after that verification; otherwise report the actual pending or not-merged state. If the head or another gate changes, restart the gate. If no code or author action is needed and the PR is otherwise ready, merge it. For every verified external PR needing a code update or evidence necessary to assess a material behavior change, draft a concise reply that names the concrete change or evidence requested and links the relevant review thread or check when useful. Before drafting, inspect the PR timeline, commits, and review threads for all actionable requests from the exact login `steve8708`. If any request remains unaddressed, do not draft or post another author-facing comment. In particular, if the latest PR activity is Steve asking for an update and no later contributor reply or relevant commit addresses it, mark the PR as waiting and do not add another comment. A contributor commit or substantive reply clears only the requests it actually addresses; an unrelated commit or bare acknowledgment does not. Mark the PR as waiting on the contributor and link each outstanding request. Once all prior requests are addressed, reassess the current head and draft only the remaining code or screenshot requests. This also applies when another comment or bot event is newer than Steve's request; bot activity alone does not reopen the handoff. If no prior Steve request is awaiting an update and this would be Steve's first comment on that PR, begin the draft by thanking the contributor. Do not repeat a thank-you on a follow-up. Do not draft a duplicate request when an existing Steve comment already covers it; link or summarize that request instead. Drafts are for the user to review and are never posted by this skill unless the current invocation explicitly authorizes posting. For a material UX change, inspect the PR body and conversation for screenshots of the changed product UI and report which surface changed. A missing screenshot alone does not block a routine fix or bounded improvement; request visual evidence only when it is needed to assess a material behavior change. A recap graphic or demo clip is not a screenshot of the changed UI. If the PR has no user-facing UI change, say so. If GitHub is unavailable before the diff, body, and conversation can be inspected, report UX evidence as **Unknown / unable to inspect**; do not infer that the PR has no UI change. Do not apply author-reply or screenshot requests to PRs that were auto-approved under an explicit exception; keep their existing recap and approval behavior unchanged. This handoff is measured by `pr-review-handoff`; first-contact thanks also contribute to the existing `feedback-reply-tone` measure. ## Worktrees and PR provenance A worktree-created branch is a normal, valid PR source. Do not ask an agent to copy its changes into the shared checkout before reviewing or approving. Read the remote PR diff as the source of truth. If this skill needs to update a PR from a worktree, keep all GitHub and Git commands in that worktree's cwd and current branch, batch all currently known actionable fixes into one complete snapshot, and publish it with `corepack pnpm ship:push -m` plus a subject naming the actual fix (for example, `fix: deduplicate chat start checkpoints`). The helper refuses an omitted or generic subject. Update the existing PR instead of creating a second one. Never reset, rebase, stash, or overwrite local work without explicit authorization. Rebase or merge `origin/main` only when GitHub reports an actual conflict; for a shared branch, prefer a normal merge. Never sync just to clear a behind count or restart checks. ## End-of-run recap Every run ends with a succinct row for every human PR that entered the evidence sweep, including approved, flagged, external, duplicate, already handled, and unavailable cases. Include the PR link, author and membership result, review disposition, merge result, UX/screenshot status, relevant issue or source link, checks or review links, and the reason. For each non-auto-approved external PR that needs an update or screenshot, include its draft reply in a separate section, or mark it waiting on the contributor with a link to Steve's outstanding request. For internal PRs, report the needed update or screenshot without drafting an author-facing reply. Do not add rows for bots, `steve8708`, or drafts; those are ignored completely. Use this shape: ```md ## PR review | PR | Author / org status | Review disposition | Merge readiness | Merge result | UX / screenshot | Author-facing reply | Why and evidence | | --- | --- | --- | --- | --- | --- | --- | --- | | [#123](...) | `@name` - BuilderIO member / external / unverified | Approved / Not approved / Skipped | Ready by Steve's bar / Needs updates / Needs Steve's decision / Cannot assess | Merged (SHA) / Waiting on 10-minute gate / Held (reason) / Not merged | Unknown / unable to inspect; No UI; UI - screenshot present or needed | Draft / Waiting on contributor / Internal - no draft / Not needed | ... | Unavailable or unverified: ... ``` Keep the recap short, link every claim, and distinguish “not approved because external” from “not reviewed because GitHub was unavailable.” Record the actual merge result. Do not report a repository rule requiring human approval as a blocker when the PR is ready and the guarded admin merge is available. ## Related skills `concurrent-agents`, `verifying-changes`, `ship`, `babysit-pr`
Ver no GitHub