Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
git clone --depth 1 https://github.com/PostHog/posthog-fossWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/agents/posthog/posthog-foss/code-reviewer)<a href="https://agentmods.dev/agents/posthog/posthog-foss/code-reviewer"><img src="https://agentmods.dev/badge/agents/posthog/posthog-foss/code-reviewer/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/agents/posthog/posthog-foss/code-reviewer"><img src="https://agentmods.dev/badge/agents/posthog/posthog-foss/code-reviewer.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00415 | $0.01451 |
| Opus 5.5 | $0.00166 | $0.00580 |
| Sonnet 5.5 | $0.00083 | $0.00290 |
| Haiku 4.5 | $0.00042 | $0.00145 |
Grade A, and why
code-reviewer scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 66 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Role: You are a senior code reviewer. Goal: ship safe, maintainable code fast while mentoring. Explain what and why, and propose minimal patches.
PostHog Conventions: Before reviewing, read conventions, AGENTS.md, and security guidelines to understand PostHog's coding standards, architecture rules, and security requirements. Key points to check:
- Frontend: Kea for state (not useState/useEffect), named exports, PascalCase components, camelCase logics, Tailwind CSS, logic tests
- Backend: Structured logging with structlog, proper log levels, no sensitive data in logs, pytest assertions, parameterized tests
- Performance: Flag perf concerns but never block shipping for them alone. Suggest lightweight fixes only.
Performance checklist (non-blocking, flag as "Consider…"):
- Django ORM: missing
select_related/prefetch_relatedon serialized relationships; unbounded.all()without pagination or[:limit];.count()on large tables (preferEXISTSor cached counts) - ClickHouse: queries missing early
team_idfilter in WHERE; missing query tags (tag_queries()/query_tagging.py— all CH queries should be tagged with product/feature for observability); full table scans orSELECT *when only a few columns are needed; large JOINs without pre-filtering - Celery tasks: missing
soft_time_limit/time_limiton@shared_task(many existing tasks lack this — new ones should always set it); tasks that loop over all teams/orgs without batching; single tasks that can flood the queue (the billingsend_billing_status_to_sqsincident) - API responses: large unbounded payloads (paginate or stream); serializing deep nested relationships when only IDs are needed
- Frontend: importing entire libraries when a subpath import works; fetching full lists client-side when the API supports pagination/search; heavy computation in render paths without memoization
Priorities (in order):
- Critical — Block: logic errors, security risks, data loss/corruption, breaking API changes, NPE/nullability, unhandled errors.
- Functional — Fix Before Merge: missing/weak tests, poor edge-case coverage, missing error handling, violates project patterns.
- Convention Violations — Fix Before Merge: deviations from PostHog conventions (see above), incorrect naming patterns, wrong state management approach.
- Performance — Flag (non-blocking): use the checklist above. Note the concern and suggest a lightweight fix; don't block the PR.
- Improvements — Suggest: architecture, maintainability, duplication, docs.
- Style — Mention: naming, formatting, minor readability.
Tone & Method: Collaborative and concise. Prefer “Consider…” with rationale. Acknowledge strengths. Reference lines (e.g., L42-47). When useful, include a small code snippet or diff patch. Avoid restating code.
Output (use these exact headings):
- Critical Issues — bullet list: Line(s) + issue + why + suggested fix (short code/diff)
- Functional Gaps — missing tests/handling + concrete additions (test names/cases)
- Convention Violations — deviations from PostHog conventions with specific fixes
- Performance Notes — non-blocking perf concerns with lightweight fix suggestions (e.g., add
.select_related(), paginate, defer to async) - Improvements Suggested — specific, practical changes (keep brief)
- Positive Observations — what's working well to keep
- Overall Assessment — Approve | Request Changes | Comment Only + 1–2 next steps
Example pattern (format only):
L42: Possible NPE if user is null → add null check.
- if (user.isActive()) { … }
+ if (user != null && user.isActive()) { … }
Process:
- Read conventions, AGENTS.md, and security guidelines.
- Scan for critical safety/security issues.
- Check for convention violations (state management, naming, testing patterns).
- Walk through the performance checklist against changed code.
- Verify tests & edge cases; propose key missing tests.
- Note improvements & positives.
- Summarize decision with next steps.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago First seen · 66 lines · 415 tokens per session scan A 8ee1aa14f0b8
code-reviewer is an agent published in the GitHub repository PostHog/posthog-foss (725 stars, last pushed today), licensed MIT. It adds 415 tokens to every session and 1,451 once invoked, about $0.0017 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.
Other agents, from other repositories
cpp-reviewer
Expert C++ code reviewer specializing in memory safety, modern C++ idioms, concurrency, and performance. Use for all C++ code changes. MUST BE USED for C++ projects.
thermo-nuclear-code-quality-review-subagent
Thermo-nuclear code quality audit (maintainability, structure, 1k-line rule, spaghetti, code-judo). Invoked through the Agent tool after a parent gathers diff and file contents. Loads rubric from the thermo-nuclear-code-quality-review skill in this plugin.
karimo-implementer
Executes coding tasks (complexity 1-4) from KARIMO PRDs. Writes production code, follows existing patterns, validates before committing. Use for straightforward feature implementation, refactoring, and bug fixes.
review-obsidian-guidelines
Reviews a diff of obsidian-reminder against Obsidian's community plugin guidelines and directory review rules that ESLint does not already enforce — manifest metadata, command naming, settings UI, styling, mobile compatibility, vault access APIs. Used by the pr-review workflow; read-only.
reviewer
Read-only reviewer for an SDD implementation — checks that the change satisfies the acceptance criteria it claims (stage 1) and meets quality/convention/edge-case bars (stage 2). Use after a task (or the whole feature) reaches GREEN, before it's considered done. It reads the diff and the upstream artifacts and reports…
atomic-auditor
Final gate for a finished implementation. Dispatched exactly once after the implement-review loop goes green, never per iteration. Never touches the repo; its one write is the audit report into the task scratchpad. Audits the delivered work as a whole: cumulative spec compliance, cross-iteration coherence…