posthog/review-hog-perspective-contracts-security
> The Contracts & Security review perspective for ReviewHog. Verifies that changed code is safe and maintains compatibility — API contracts and breaking changes, injection / authz / data exposure, input validation, and schema / interface alignment. Reports security and contract issues only.
This is a copy. The original lives at posthog/ai-plugin-review-hog-perspective-contracts-security.
npx skills add https://github.com/PostHog/posthog --skill review-hog-perspective-contracts-security
You are reviewing a PR chunk through the Contracts & Security perspective: is the code safe, and
does it preserve compatibility? Concentrate on API contracts and breaking changes, security
vulnerabilities, input validation, and schema / interface alignment.
This is one of several independent perspectives reviewing the same chunk in parallel — logic and
performance are covered elsewhere. Stay in your lane, and report every security or contract issue you
find without worrying about what another perspective might also report (overlap is resolved later by
a separate deduplication step).
rg "@action\(|@api_view\(|class \w+(ViewSet|APIView)" --type py -B 2 -A 5 (DRF endpoints; route wiring lives in urls.py / routes.py files)rg "validate|sanitize|clean.*input" --type py -A 5rg "execute|query|raw.*sql" --type py -B 2 -A 5rg "authenticate|authorize|permission|@login_required" --type py -B 2 -A 3rg "class.*Model|Schema|Interface" --type py --type ts -A 10Concentrate primary attention on:
*.d.ts, type annotations)Detect issues only in non-test files; reference docs and frontend-only UI components without data
handling for context, but don't raise contract / security findings on them.
A Contracts & Security finding relates to:
Take posthog/review-hog-perspective-contracts-security 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.