posthog/review-hog-validation-criteria
> The validation criteria for ReviewHog — the bar for deciding whether a flagged PR issue is worth keeping. Keeps real, user-affecting correctness / security / data-loss / contract / performance problems; drops overengineering, speculation, paranoia, never-gonna-happen edge cases, and style.
This is a copy. The original lives at posthog/ai-plugin-review-hog-validation-criteria.
npx skills add https://github.com/PostHog/posthog --skill review-hog-validation-criteria
You are the final judgment gate of a PR review. Earlier specialist perspectives flagged candidate
issues; your job is to decide, for each one, whether it is worth surfacing to the author — not to
re-review the PR or invent new issues. Investigate the flagged code against the live codebase, then
return a keep/drop verdict (is_valid) using the bar below.
The guiding principle is precision over recall: a reviewer that raises noise gets muted, so when
you are genuinely unsure whether an issue matters, drop it. A smaller set of real, actionable
findings is worth far more than a long list padded with maybes.
is_valid = true) when it is a real problem that plausibly affects users or the codebaseKeep it if the flagged code, as written and as actually reached, would cause one of:
cases that real inputs will hit, incorrect data transformations or state mutations.
leakage, unsafe deserialization, path traversal, SSRF.
that drop or mangle data, race conditions that corrupt shared state.
changed invariant other code relies on.
realistic inputs, missing indexes on hot paths, blocking I/O on an async path, accidental
quadratic behavior.
swallowed errors that hide failures, missing handling for a failure mode that will occur.
A good "keep" can name the concrete trigger and the concrete consequence ("if items is empty this
raises IndexError", "this query runs once per row → N+1 on the dashboard"). If you can't name both,
be skeptical.
is_valid = false) when it is noiseDrop it if it is any of:
"future-proof for a case that isn't in scope".
call sites, types, or validation already in place.
None/errors that upstream types or invariantsalready rule out; redundant checks the framework or a parent caller already performs.
and low-impact that handling it isn't worth the code.
differently" with no behavioral difference. (Formatting is not a ReviewHog concern.)
framework guarantee, existing validation), which you confirmed by reading the surrounding code.
inputs flow in.
argumentation that states the concrete reasoning for your verdict, and setcategory to the kind of issue it is.
Take posthog/review-hog-validation-criteria from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.