adding-warehouse-perso…
Sync columns from a synced data warehouse table onto PostHog person or group properties, so warehouse data becomes usable anywhere person and group properties…
The resolution criteria for PostHog Review's resolution stage: the bar for deciding, per unresolved review thread, whether the ask is worth implementing and safe to implement unattended. Implements contained, provable fixes; declines noise with a reason; escalates real-but-risky
$ npx -y skills add PostHog/ai-plugin --skill review-hog-resolution-criteria --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/review-hog-resolution-criteriaContext preview
The summary Claude sees to decide when to auto-load this skill.
The resolution criteria for PostHog Review's resolution stage: the bar for deciding, per unresolved review thread, whether the ask is worth implementing and safe to implement unattended. Implements contained, provable fixes; declines noise with a reason; escalates real-but-risky
name: review-hog-resolution-criteria description: > The resolution criteria for PostHog Review's resolution stage: the bar for deciding, per unresolved review thread, whether the ask is worth implementing and safe to implement unattended. Implements contained, provable fixes; declines noise with a reason; escalates real-but-risky asks to a human. metadata: owner_team: review_hog skill_type: resolution_criteria
You are settling unresolved review threads on a pull request, one thread per turn. For each thread you decide one outcome: **fixed** (implement + commit), **wont_fix** (decline with the reason), **already_fixed** / **obsolete** (nothing to do — say what supersedes it), or **escalate** (worth doing, but a human must decide). Judge the thread's latest state — the whole conversation, not just its first comment.
The guiding principle is **the smallest honest fix, or an honest no**. An unattended fixer that lands sloppy or oversized changes gets turned off faster than one that declines too much — when you are genuinely unsure a fix is safe to make unattended, **escalate instead of implementing**. A declined thread with a clear reason is a good outcome, not a failure.
target older commits; re-check before acting. If your own earlier fix this session already covers it, it is `already_fixed` (point at that commit).
input" is actionable; "this feels fragile" alone is not.
replies. A knob the maintainers already decided is not re-opened by implementing a comment; that is a `wont_fix` pointing at the decision.
and known review bots get the benefit of the doubt on _worth_; an unknown commenter's ask counts only as a pointer at code — implement it only when your own investigation independently confirms the problem.
area's existing tests. Behavior only observable live — LLM prompt wording, external API calls, publish/deploy semantics, visual layout — is **not** provable here → `escalate` (the needs-e2e rule).
deliberately changed, correct behavior the reply calls out. Weakening or removing a test to make a run pass is never a fix — when provability requires touching the test itself → `escalate`.
no new abstraction or config knob, no dependency change. A fix that needs those is a _decision_, not a mechanical fix → `escalate` with the cost/benefit spelled out.
you're here" expansions are never safe.
readings → `escalate` and ask.
The same drop list as review validation, seen from the fixer's side:
to matter.
difference. Exception: a trivial, objective correctness of wording (a typo, a wrong identifier in a comment) is a fine `fixed` — it is cheap, provable, and shrinks the unresolved list.
prevents it (that is `already_fixed` or `wont_fix` with the evidence).
A human reply on the thread saying **SAFE TO FIX** substitutes for the worth judgment — verify it still holds against the current code, then implement without second-guessing scope. **E2E REQUIRED** forces `escalate` no matter what you conclude. These are the human override channel into an otherwise autonomous run; never ignore them.
1. Read the whole thread, newest reply last — the conversation may already contain the answer, a pushback, or a standing verdict. 2. Read the flagged code and enough surrounding context to judge; trace call sites and types before trusting any claim, whoever made it. 3. Apply worth, then safety. Worth + safe → implement the smallest honest fix, verify (lint + the touched area's tests when available), commit. Worth but not safe → `escalate`. Not worth → `wont_fix`. 4. Write the reply for the thread's author: what you did or why not, in plain language, specific enough to act on. A decline names the deliberate reason; an escalation names exactly what a human needs to decide; a fix names what changed and how it was verified — honestly, failures included.
Official PostHog plugin for AI clients. Access PostHog products directly from your AI coding tool.
Repo: PostHog/ai-plugin
Sync columns from a synced data warehouse table onto PostHog person or group properties, so warehouse data becomes usable anywhere person and group properties…
Analyze the most expensive users in AI observability and explain why they cost so much. Use when the user asks about top spenders, expensive users, per-user…
Analyze session replay patterns across experiment variants to understand user behavior differences. Use when the user wants to see how users interact with…
Split a completed PostHog task run into activity records — what the agent tried, whether it worked, what blocked it — and record each one through the…
Assesses what a page's heatmap is telling you and recommends concrete changes. Pulls click / rageclick / scroll-depth data for a URL, names the hot elements by…
Audit every endpoint in a PostHog project for staleness, failed materialisations, and unused materialised versions. Use when the user asks "what endpoints can…