
Skill
review-hog-validation-criteria
define validation criteria for ReviewHog
Description
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.
SKILL.md
Review 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.
Keep an issue (is_valid = true) when it is a real problem that plausibly affects users or the codebase
Keep it if the flagged code, as written and as actually reached, would cause one of:
- Correctness bugs — wrong results, broken logic, off-by-one / boundary errors, mishandled edge cases that real inputs will hit, incorrect data transformations or state mutations.
- Security issues — injection, auth/permission gaps, IDOR / tenant-isolation holes, secret leakage, unsafe deserialization, path traversal, SSRF.
- Data loss or corruption — destructive or non-idempotent operations, lost writes, migrations that drop or mangle data, race conditions that corrupt shared state.
- Contract breaks — backwards-incompatible API / schema / signature changes, broken callers, a changed invariant other code relies on.
- Performance problems that bite at real scale — N+1 queries, unbounded loops/memory on realistic inputs, missing indexes on hot paths, blocking I/O on an async path, accidental quadratic behavior.
- Resource / reliability defects — leaked connections / file handles, unreleased locks, 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.
Drop an issue (is_valid = false) when it is noise
Drop it if it is any of:
- Overengineering — "extract this", "add an abstraction/interface", "make it configurable", "future-proof for a case that isn't in scope".
- Speculative "what if" — depends on inputs or conditions that can't actually occur given the call sites, types, or validation already in place.
- Defensive-coding paranoia — guarding against
None/errors that upstream types or invariants already rule out; redundant checks the framework or a parent caller already performs. - Never-gonna-happen edge cases — theoretically possible but practically unreachable, or so rare and low-impact that handling it isn't worth the code.
- Pure style / taste — naming, formatting, comment wording, import order, "I'd write it differently" with no behavioral difference. (Formatting is not a ReviewHog concern.)
- Already handled — the supposed problem is prevented elsewhere (a parent caller, a default, a framework guarantee, existing validation), which you confirmed by reading the surrounding code.
- Wrong / unreproducible — investigating the actual code shows the premise is mistaken.
How to decide
- Read the flagged file(s) and the code around them in full — don't judge from the snippet alone.
- Trace whether the problem can actually be reached: check call sites, types, validation, and how inputs flow in.
- Weigh real impact (who is affected, how badly) against the bar above.
- On the fence → drop (precision over recall, as above).
- Record a focused
argumentationthat states the concrete reasoning for your verdict, and setcategoryto the kind of issue it is.
More skills from the posthog repository
View all 57 skillsanalyzing-expensive-users
analyze expensive users in AI observability
Jul 9AnalyticsCost OptimizationObservabilityPostHogauditing-endpoints
audit PostHog project endpoints
Jun 8AnalyticsAuditPostHogauditing-warehouse-source-health
audit PostHog data warehouse source health
Jun 18AuditData WarehouseObservabilityPostHogauditing-warehouse-view-health
audit PostHog materialized view health
Jun 18AuditData WarehousePerformancePostHogauthoring-error-tracking-alerts
author PostHog error tracking alerts
Jun 18AlertingDebuggingObservabilityPostHogauthoring-log-alerts
author log alerts in PostHog
Jul 18AnalyticsMonitoringObservabilityOperations +1
More from PostHog
View publisherbuilding-workflows
build and edit PostHog workflows
posthog
Jul 18AutomationMCPPostHogWorkflow Automationcheck-posthog-loading
inspect PostHog SDK loading across URLs
posthog
May 7AnalyticsDebuggingFrontendObservability +1consuming-endpoints-from-client-code
integrate PostHog endpoints into client applications
posthog
Jun 8API DevelopmentFrontendPostHogSDKcopying-endpoints-across-projects
copy PostHog endpoints across projects
posthog
Jul 15API DevelopmentOperationsPostHogcreating-ai-subscription
schedule recurring AI-generated PostHog reports
posthog
Jun 9AutomationEmailPostHogReporting +1creating-an-endpoint
create PostHog API endpoints
posthog
Jun 8AnalyticsAPI DevelopmentPostHog