Review a LibreYOLO PR
The repo has explicit review doctrine: REVIEW.md (axioms + focus list) and
AGENTS.md (what agents may and may not do). This skill turns them into a
working procedure. The one-line version: check the PR against the
contracts, then run it; deliver findings to the user, never to GitHub.
Ground rules (AGENTS.md, verbatim intent)
- Agents do not submit reviews, do not post PR comments, do not approve or
request changes. Findings go in your message to the user; they decide what
lands on the thread.
- Read
REVIEW.md before reviewing. Read the /docs contract files touched
by the PR (checkpoint_schema.md, nomenclature.md, dataset_schema.md,
testing.md, relevant adr/). A PR that conflicts with a contract gets
flagged with concrete file evidence, even if the code is good.
- Scope discipline cuts both ways: flag unrelated changes bundled in, and
do not demand out-of-scope improvements as blockers.
Reading order (before any opinion)
- The linked issue: what problem was agreed? (CONTRIBUTING requires one for
non-trivial PRs; its absence on a large PR is itself a finding.)
- The PR description vs the diff stat: does the description cover every
meaningful behavior change? Omissions are a REVIEW.md focus item.
REVIEW.md axioms most likely violated by this PR's shape. Recurring
high-yield ones: metadata is the loading source of truth (no filename
heuristics), cross-family/cross-task loads must fail, explicit user
kwargs beat defaults, DDP fixes must not regress single-GPU, original
canvas coordinates are canonical, no silently-ignored options, no
heavyweight tests in the unit suite, license compatibility.
- The diff itself, shared-code files first (
models/base/, training/,
validation/, cli/, data/): blast radius before details.
Verify live, not by eyeball (the part most reviews skip)
Check the PR out into a worktree and prove the claims:
git fetch upstream pull/<n>/head:pr-<n>
git worktree add .claude/worktrees/review-pr-<n> pr-<n>
cd .claude/worktrees/review-pr-<n>
Then, scaled to the PR's risk:
- Always: run the unit tests for the touched areas
(
PYTHONPATH=. .venv/Scripts/python.exe -m pytest tests/unit/<area> -q),
plus the full PR gate if shared code moved (libreyolo-run-unit-tests).
- Model/inference PRs: load the model and run a real predict on
SAMPLE_IMAGE; check the claimed outputs exist on Results.
- Training PRs: at minimum the rung-0 overfit check from
libreyolo-verify-training; a trainer claim without a run behind it is
unverified, say so.
- Metric/validation PRs: run
val on a small set before and after;
numbers that move must be explained by the PR, not discovered by users.
- New-weights PRs: resolve the weight (autodownload or staged) and
confirm checkpoint metadata against
docs/checkpoint_schema.md.
- Ported-code PRs: run the license/provenance checklist from
libreyolo-license-audit; a licensing doubt is a blocking finding.
The point of live verification is asymmetry: a diff can look perfect while
the feature does not work (a validator default that buries a model's real
F1, a train arg that is parsed and ignored). Every past deep review that
found the big bug found it by running the code, not reading it.
Finding taxonomy and severity bar
Report findings ranked, each with file:line evidence and, for bugs, the
concrete failure scenario (inputs, then wrong output). Severity language:
- Blocking: correctness bugs, contract violations (docs schemas,
REVIEW.md axioms), licensing, silent behavior changes to existing users,
API that accepts-and-ignores options.
- Should-fix: missing tests for the changed behavior, docs drift for a
contract file, error messages that will generate support issues.
- Note: style, naming, non-blocking simplifications. Keep these few;
the repo values small focused reviews over exhaustive nit lists.
Do not restyle the contributor's code, and judge by the repo's actual
conventions, not personal preference. When a Greptile bot review exists,
read it and fold it in: agree, rebut with evidence, or mark as judgement
call; do not duplicate or blindly endorse it (the babysitting loop itself
belongs to skills/merge-to-dev).
External-contributor PRs
You cannot push fixes to a fork branch, and posting review comments needs an
explicit human ask. So the deliverable is a message the user can act on:
findings ordered by severity, with copy-pasteable suggestions where cheap.
Be respectful of the contribution in tone; the summary you write may be
pasted verbatim.
Deliver
End with: verdict (mergeable / mergeable-after-fixes / needs-rework), the
ranked findings, what you verified live (commands + outcomes) vs only read,
and any contract files the PR must update before merge. Then clean up the
review worktree (git worktree remove ...) unless iterating.
Related
REVIEW.md: the axiom list this skill applies.
skills/merge-to-dev/: landing your own work + Greptile babysitting.
skills/libreyolo-verify-training/, skills/libreyolo-run-unit-tests/,
skills/libreyolo-license-audit/: the verification depth per PR type.
1---2name: libreyolo-review-pr3description: Review a LibreYOLO pull request the way this repo expects: contract-first (REVIEW.md axioms + /docs schemas), evidence-based, and verified live in a worktree rather than by reading the diff alone. Use whenever the user asks to review a PR, assess an external contribution, second-opinion a branch, or "deep review" something before merge. Covers the reading order, the worktree + live-verification method, the finding taxonomy and severity bar, and the delivery rules (findings go to the user; agents never post PR comments or reviews themselves).4---56# Review a LibreYOLO PR78The repo has explicit review doctrine: `REVIEW.md` (axioms + focus list) and9`AGENTS.md` (what agents may and may not do). This skill turns them into a10working procedure. The one-line version: **check the PR against the11contracts, then run it; deliver findings to the user, never to GitHub.**1213## Ground rules (AGENTS.md, verbatim intent)1415- Agents do not submit reviews, do not post PR comments, do not approve or16 request changes. Findings go in your message to the user; they decide what17 lands on the thread.18- Read `REVIEW.md` before reviewing. Read the `/docs` contract files touched19 by the PR (`checkpoint_schema.md`, `nomenclature.md`, `dataset_schema.md`,20 `testing.md`, relevant `adr/`). A PR that conflicts with a contract gets21 flagged with concrete file evidence, even if the code is good.22- Scope discipline cuts both ways: flag unrelated changes bundled in, and23 do not demand out-of-scope improvements as blockers.2425## Reading order (before any opinion)26271. The linked issue: what problem was agreed? (CONTRIBUTING requires one for28 non-trivial PRs; its absence on a large PR is itself a finding.)292. The PR description vs the diff stat: does the description cover every30 meaningful behavior change? Omissions are a REVIEW.md focus item.313. `REVIEW.md` axioms most likely violated by this PR's shape. Recurring32 high-yield ones: metadata is the loading source of truth (no filename33 heuristics), cross-family/cross-task loads must fail, explicit user34 kwargs beat defaults, DDP fixes must not regress single-GPU, original35 canvas coordinates are canonical, no silently-ignored options, no36 heavyweight tests in the unit suite, license compatibility.374. The diff itself, shared-code files first (`models/base/`, `training/`,38 `validation/`, `cli/`, `data/`): blast radius before details.3940## Verify live, not by eyeball (the part most reviews skip)4142Check the PR out into a worktree and prove the claims:4344```bash45git fetch upstream pull/<n>/head:pr-<n>46git worktree add .claude/worktrees/review-pr-<n> pr-<n>47cd .claude/worktrees/review-pr-<n>48```4950Then, scaled to the PR's risk:5152- **Always**: run the unit tests for the touched areas53 (`PYTHONPATH=. .venv/Scripts/python.exe -m pytest tests/unit/<area> -q`),54 plus the full PR gate if shared code moved (`libreyolo-run-unit-tests`).55- **Model/inference PRs**: load the model and run a real predict on56 `SAMPLE_IMAGE`; check the claimed outputs exist on `Results`.57- **Training PRs**: at minimum the rung-0 overfit check from58 `libreyolo-verify-training`; a trainer claim without a run behind it is59 unverified, say so.60- **Metric/validation PRs**: run `val` on a small set before and after;61 numbers that move must be explained by the PR, not discovered by users.62- **New-weights PRs**: resolve the weight (autodownload or staged) and63 confirm checkpoint metadata against `docs/checkpoint_schema.md`.64- **Ported-code PRs**: run the license/provenance checklist from65 `libreyolo-license-audit`; a licensing doubt is a blocking finding.6667The point of live verification is asymmetry: a diff can look perfect while68the feature does not work (a validator default that buries a model's real69F1, a train arg that is parsed and ignored). Every past deep review that70found the big bug found it by running the code, not reading it.7172## Finding taxonomy and severity bar7374Report findings ranked, each with file:line evidence and, for bugs, the75concrete failure scenario (inputs, then wrong output). Severity language:7677- **Blocking**: correctness bugs, contract violations (docs schemas,78 REVIEW.md axioms), licensing, silent behavior changes to existing users,79 API that accepts-and-ignores options.80- **Should-fix**: missing tests for the changed behavior, docs drift for a81 contract file, error messages that will generate support issues.82- **Note**: style, naming, non-blocking simplifications. Keep these few;83 the repo values small focused reviews over exhaustive nit lists.8485Do not restyle the contributor's code, and judge by the repo's actual86conventions, not personal preference. When a Greptile bot review exists,87read it and fold it in: agree, rebut with evidence, or mark as judgement88call; do not duplicate or blindly endorse it (the babysitting loop itself89belongs to `skills/merge-to-dev`).9091## External-contributor PRs9293You cannot push fixes to a fork branch, and posting review comments needs an94explicit human ask. So the deliverable is a message the user can act on:95findings ordered by severity, with copy-pasteable suggestions where cheap.96Be respectful of the contribution in tone; the summary you write may be97pasted verbatim.9899## Deliver100101End with: verdict (mergeable / mergeable-after-fixes / needs-rework), the102ranked findings, what you verified live (commands + outcomes) vs only read,103and any contract files the PR must update before merge. Then clean up the104review worktree (`git worktree remove ...`) unless iterating.105106## Related107108- `REVIEW.md`: the axiom list this skill applies.109- `skills/merge-to-dev/`: landing your own work + Greptile babysitting.110- `skills/libreyolo-verify-training/`, `skills/libreyolo-run-unit-tests/`,111 `skills/libreyolo-license-audit/`: the verification depth per PR type.