check-pr
無料Check an externally created PR for coding rule violations against memory/INDEX.md atoms and docs/architecture/code-review-rules.md.
日本語の概要は準備中です。原文の説明を表示しています。
Adversarial triage of open review findings on a PR. Every finding (Codex, Claude bot, Gemini) is a hostile hypothesis to REFUTE — fix only what is proven real, reachable, in the PR's scope, and above the round's severity bar. The bar rises every review round. Everything else is declined or filed as an issue. Use for 'fix the PR findings', '/fix', '/fix 123', or before any fix commit in a review loop.
インストールする前に、エージェントに与えられる指示の中身を確認できます。
The default verdict is REFUTED. A finding earns a fix only by surviving every gate below. Reviewer bots are wrong more often than right on this codebase; treat their output as borderline hostile. Blind-fixing has been piling guards for impossible states on top of each other and turning clean PRs into a mess — that stops here.
Mechanics (fetch from both repos, per-thread reply, resolve, 👍/👎, no @codex review): memory/process/pr-review-feedback-handling.md. Posture: memory/process/review-finding-triage.md. This skill is the judgment step those atoms defer to.
$ARGUMENTS → PR number / current branch / URL via gh pr view. Record owner, repo, base, head SHA.
Round = number of bot review submissions on the PR so far (both repos):
gh api repos/<owner>/Humans/pulls/<N>/reviews --paginate \
--jq '[.[] | select(.user.type=="Bot" or (.user.login|test("codex|claude|gemini";"i")))] | length'
Zero bot reviews but inline comments exist → round 1. The round is stated in the triage table and drives the severity bar in §4.
Per the feedback-handling atom: three endpoints + GraphQL reviewThreads, both repos, skip isResolved / isOutdated. Also gh pr diff <N> --repo <owner>/Humans and gh pr view <N> --repo <owner>/Humans --json body,title (owner from §1 — fork and upstream reuse PR numbers) — the diff hunks define "in scope", the body defines the PR's intent.
For each finding, write the verdict before touching code. Burden of proof is on the finding, not on you.
| # | Gate | Fails when | Verdict |
|---|---|---|---|
| 1 | True? Read the actual code at the cited lines, not the diff context. | The claim about what the code does is false. | INVALID 👎 |
| 2 | Reachable? Write the concrete path: entry point → inputs → state → wrong outcome, using the app's real UI/routes/jobs. | The path needs a state the app never produces: violates an invariant enforced elsewhere, emailless user, concurrent writers on a small single-server deployment, malformed rows the app never writes, a null the constructor/EF/[Required] already excludes, a rollback path that never runs. | IMPOSSIBLE 👎 |
| 3 | Posture? Cross-check memory/INDEX.md HARD RULE / false-positive atoms. | It asks for pagination, concurrency tokens, check constraints, startup guards, defensive nulls, emailless handling, perf guards, or anything a hard-rule atom already rejects. | WONTFIX 👍 |
| 4 | Non-trivial? | Style, naming, "consider", "might be clearer", log wording, comment text, a null-check on a value that can't be null, micro-perf, "add a test for X" where X is already covered by behaviour. | WONTFIX 👍 — no issue |
| 5 | In scope? The cited lines are in this PR's diff hunks, or the behaviour was introduced by this PR. | Pre-existing code the PR only sits next to, moved, or renamed; a different section; a "while you're here". | OUT-OF-SCOPE 👍 → §5 unless P0/P1 |
| 6 | Above the round's bar? (§4) | Severity is below the bar for this round. | DEFER 👍 → §5 |
| 7 | Clean fix? The fix removes or corrects logic; it does not add a guard, branch, try/catch, fallback, or new type for a state the app can't reach. | The only fix you can see is a new defensive branch. That is evidence the finding failed gate 2 — go back and decline it. | IMPOSSIBLE 👎 |
Only a finding that passes all seven is FIX.
Severity, for gates 5–6 (assign once, from the reachable path in gate 2):
| Round | Fix only if | Everything else |
|---|---|---|
| 1–2 | P0, P1, or an in-scope P2 with a one-file clean fix | decline / file |
| 3–5 | P0 or P1 | file if P2, decline if P3 |
| 6–9 | P0 | file if P1–P2, decline the rest |
| 10+ | P0 that would hurt a real person or lose real data | file P0/P1 for a separate PR; decline the rest; state in the summary that the PR is done being reviewed |
A re-flag of a finding already declined in an earlier round is not new evidence — repeat the disposition, resolve, move on. A finding whose fix would touch more than one file or add a new public surface is one severity level lower for bar purposes: at round ≥3 that means it doesn't get fixed.
OUT-OF-SCOPE and DEFER findings become issues only if all hold: real (passed gates 1–2), P2 or higher, and not already tracked (gh issue list --repo nobodies-collective/Humans --search "<keywords>" --state all). Otherwise decline with a one-line reason and no issue.
Issues live on nobodies-collective/Humans (search and create with --repo); the thread reply cites the owner-qualified ref (nobodies-collective/Humans#N, per issue-refs-qualified). Issue body: section label/line (**Section:** X), the reachable path from gate 2, link to the PR thread. Title states the bug, not the finding ("Camp roster export drops members without a ticket", not "Codex finding on PR 1234"). Never file P3s. Never file "consider refactoring".
Print the table before any edit, one row per finding. In unattended runs this table is the audit trail; a run that fixes without having printed it is wrong.
Round 4 · PR #1234 · bar: P0/P1
| # | file:line | claim (≤12 words) | gate failed | sev | verdict | action |
|---|-----------|-------------------|-------------|-----|---------|--------|
| 1 | Foo.cs:88 | null ref if team has no lead | 2 impossible | — | IMPOSSIBLE | reply + resolve + 👎 |
| 2 | Bar.cs:12 | export skips ticketless members | — | P2 | DEFER | issue #N + reply + resolve + 👍 |
| 3 | Baz.cs:40 | wrong role checked on POST | — | P0 | FIX | fix + reply + resolve + 👍 |
Then:
Review-round: <n> trailer — that trailer is what the five-round commit budget counts, so a round commit without one is a round spent invisibly (memory/process/review-round-budget.md). <n> is this commit's budget round (spent + 1, from the steward count), which is not §1's round: §1 counts bot review submissions to set the severity bar, the budget counts round commits. Build: dotnet build Humans.slnx -v quiet. Push (no force).INVALID — line 88 is inside the if (lead != null) block; IMPOSSIBLE — a team without a lead can't be saved, see TeamService.ValidateAsync; DEFER — P2, out of round-4 bar, opened #N), react, resolve. Nothing left open unless a live disagreement with Peter is pending.@codex review or ask for a re-review.WONTFIX with the reason stated.まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Check an externally created PR for coding rule violations against memory/INDEX.md atoms and docs/architecture/code-review-rules.md.
日本語の概要は準備中です。原文の説明を表示しています。
Two-phase memory hygiene. Phase 1: scan external Claude Code memory (~/.claude/projects/<slug>/memory/) for durable rules to migrate into the repo and entries already duplicated by repo atoms. Phase 2: audit in-repo memory/, CLAUDE.md, docs/architecture/, and docs/sections/ for dead links, duplication, drift, and bloat.
日本語の概要は準備中です。原文の説明を表示しています。
Review, repair and steward the nightly Codex debt-sweep PR (branch codex/daily-debt/<date>). Judges every commit GOOD / REPAIR / REVERT, triages the bot review findings through /fix, lands one round-1 commit, files follow-up issues, then stewards the PR itself with a 3-round ceiling. Run by the 08:00 UTC cloud routine; also '/debt-review', '/debt-review 1789'.
日本語の概要は準備中です。原文の説明を表示しています。
Autonomous themed tech-debt cleanup. Reads docs/architecture/debt-ledger.yml, rotates to the least-recently-served debt theme, works it for a time budget (default 2h) or until drained, opens one PR, and asks judgment questions inline at the end. Use for daily debt burndown without Peter pointing at a target: grandfathered analyzer rules, architecture-test baselines, obsolete-field reads, cross-section stitching.
日本語の概要は準備中です。原文の説明を表示しています。
Scrap and regenerate the in-flight EF migrations on the current branch as one consolidated migration. Use when migrations have accumulated mid-development cruft (added/removed columns, stacked add-column-to-existing-table fixes, hand-edited SQL that needs to come out, schema changes that should have been one migration but ended up as five), or when the branch has merged main and its migrations are now stuck mid-chain so `dotnet ef migrations remove` is unsafe. Triggers on phrases like 'regen the migrations', 'redo these migrations', 'scrap and regen migrations', 'consolidate the in-flight migrations', 'redo the migration stack', or any time an agent hits the mid-chain situation in `memory/architecture/migration-regen-after-rebase.md`.
日本語の概要は準備中です。原文の説明を表示しています。
Use when a sprint tracking issue (label `sprint`) on peterdrier/Humans needs working — routine-fired cloud runs, or any unattended session told to execute the sprint queue.
日本語の概要は準備中です。原文の説明を表示しています。