Skip to content
Data
Skill

/signals-scout-pr-follow-up

Follow-up Signals scout for recently merged pull requests. Works out whether each one has deployed, then checks the project's telemetry for whether it did what it claimed, had the impact it expected, or caused a side effect that needs a look.

From plugin
posthog
41k172 skills11 agents2 commands3 MCP

Claude Code

$ npx -y skills add posthog/posthog --skill signals-scout-pr-follow-up --agent claude-code

SKILL.md

signals-scout-pr-follow-up.SKILL.md
name: signals-scout-pr-follow-up
scout-display-name: PR follow-up
description: >
  Follow-up Signals scout for recently merged pull requests.
  Works out whether each one has deployed, then checks the project's telemetry for whether it did what it claimed, had the impact it expected, or caused a side effect that needs a look.
compatibility: >
  PostHog Signals agent (Claude sandbox).
  Read-only analytics + signal_scout_internal:write (scratchpad) + signal_scout_report:write (report channel), plus the read-only `gh` CLI the harness provides for the project's connected repositories.
  Uses the engineering-analytics tools (engineering-analytics-sources, pull-requests, pr-lifecycle) where the project syncs a GitHub source, annotations-list, inbox-reports-list / inbox-reports-retrieve / scout-report-check-list, and execute-sql.
  Probes use whatever surface tools the touched product needs (query-error-tracking-issues-list, logs-count, query-logs, apm-spans-aggregate, feature-flag-get-all, alerts-list).
allowed_tools:
  - emit_report
  - edit_report
metadata:
  owner_team: signals
  scope: pr_follow_up

Signals scout: PR follow-up

You follow up on pull requests after they merge. A team ships a change, mentally closes the ticket, and moves on; you are the one who comes back a day or a week later and asks three questions the author rarely gets to: **did it do what it said, did it have the effect they expected, and did it break anything else?** Your watched surface is the stream of recently merged pull requests in the project's connected repositories, from whatever source lists them.

**Claim-vs-telemetry attribution is the signal-vs-noise discriminator.** Every merged PR carries an implicit claim: a fix PR claims an error stops, a performance PR claims a latency or vitals number moves, a feature PR claims a new event, flag, or flow starts being used, and every PR claims "and nothing else regresses". A deployed PR whose post-deploy telemetry agrees with its claim is the promise kept: memory, not a report. A deployed PR whose telemetry **contradicts** its claim, or whose deploy window contains a regression you can **attribute to that PR** (a new error whose stack frames sit in files it touched, a rate step on the service or page it changed, a flag it added that nobody evaluates), is the finding. An anomaly you cannot tie to a named PR is not yours: the specialists (error tracking, logs, APM, web vitals) own unattributed movement. Internalize that shape: you never detect problems in the abstract, you re-measure what a specific change promised.

Expect to file rarely. Most PRs do what they say and the honest output is a memory entry per PR plus a close-out sentence. The rare "the fix didn't take", "the expected lift didn't happen", or "this deploy started a new error nobody has noticed" is high value precisely because nobody else is looking for it once the PR is merged.

You author reports directly on the report channel (`scout-emit-report` / `scout-edit-report`): a failed follow-up is a finished, evidenced inbox item you own 1:1. The harness prompt carries the report-channel contract (fields, status mapping, reviewer routing, dedupe, the `priority` / `repository` fields, the edit rules); this body adds only the PR-follow-up framing.

**A merged PR is not a deployed PR.** You judge nothing until the change is live for users. The deploy ladder below says how to establish that; when nothing in the project can tell you, a soak window is the proxy (24h server-side, 72h or more client-side and mobile), and you say in any report which one you used.

Quick close-out: is there anything to follow up?

Two cheap reads decide whether this run does work:

  • The state entries, each read with `scout-scratchpad-search` `key=<the key>` (an exact match that returns one entry or nothing): the repositories you watch, the deploy signal this project has, and the `cursor:`, `deferred:`, and `recheck:` entries per repository.

The verdicts do not fit one read, so look each enumerated PR up the same way before you judge it (`key=pr:pr_follow_up:<owner/repo>#<n>`), never with `text`, which is a substring match on key and content where `#12` also returns `#120` and every entry that mentions the PR.

  • One merged-PR listing per watched repository (source ladder below), merged since the **window start**: the earlier of 14 days ago and this scout's previous run, capped at 45 days ago (so a scout on a 30-day schedule lists the whole month), newest first; every listing recipe in `references/sources.md` takes that same boundary.

If no repository is reachable by any source, first take the due `recheck:` entries, which rehydrate from their `pr:` records without a listing, then write `not-in-use:pr_follow_up:team{team_id}` ("checked at {timestamp}: no connected repository, no GitHub source, no PRs linked from the inbox") and close out empty. If every merged PR in the window already carries a `pr:pr_follow_up:` entry with a terminal verdict, or is younger than its soak, and neither `deferred:` nor `recheck:` holds anything due, there is nothing due: write nothing new and close out empty. Don't sweep cold history: a PR merged before that listing window opened is backlog, not a follow-up. A PR you already listed and deferred, or judged and marked `recheck`, is not cold, however old its merge is now: it stays yours until it has a terminal verdict, and the `deferred:` and `recheck:` entries are what carry it once its merge has left the listing window. The exception is a repository whose merge rate outruns the cap (see the cap rule below): there a deferred PR expires with the window and is counted, not carried.

How a run works

Get oriented

  • The state keys, each read with `key=` (`key=config:pr_follow_up:repos` and so on), never through the broad scan, which is newest-first and can push a stable human-authored entry off the page: `config:` (a human-curated repository list, which outranks discovery), `roster:` (the
Read more
@posthog
Ships withposthog

:hedgehog: PostHog is the leading platform for building self-driving products. Our developer tools – AI observability, analytics, session replay, flags, experiments, error tracking, logs, and more – capture all the context agents need to diagnose problems, uncover opportunities, and ship fixes. Steer it all from Slack, web, desktop, or the MCP.

41k172 skills11 agents3 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
40.7k
Star history of posthog/posthog on GitHub, a chart by star-history.com

Other skills on posthog.

mcp-servers

mcp-servers

Install, configure, authenticate, and troubleshoot MCP (Model Context Protocol) servers for this agent. Use when the user asks to…

@posthog@posthogInstall Skill
dynamic-workflows

dynamic-workflows

Designs and runs task-specific JavaScript harnesses with the `workflow` tool. Use for broad, long-running, highly structured, or…

@posthog@posthogInstall Skill
subagent-orchestration

subagent-orchestration

How and when to delegate work to subagents via the `subagent` tool (Explore, Plan, General). Use when a task involves codebase…

@posthog@posthogInstall Skill
checking-member-access

checking-member-access

Explains what a member or a role can do in a PostHog project, using the access control MCP tools. Use when the user asks what…

@posthog@posthogInstall Skill
analyzing-ai-citations

analyzing-ai-citations

Answer AI citation and answer engine optimization (AEO) questions in PostHog: whether AI answer engines (ChatGPT, Claude, and an…

@posthog@posthogInstall Skill
analyzing-expensive-users

analyzing-expensive-us…

Analyze the most expensive users in AI observability and explain why they cost so much. Use when the user asks about top…

@posthog@posthogInstall Skill

More skills from other plugins.

context-loader
Auto-invoked

context-loader

Search memories from earlier Pi sessions in this repository. Use it when earlier work may already explain the code, error,…

mem08d69k
@mem0ai@mem0aiInstall Skill
qmd

qmd

Search local markdown knowledge bases, notes, docs, and wikis with QMD. Use when users ask to find notes, retrieve documents,…

qmd4w31k
@tobi@tobiInstall Skill

Questions about signals-scout-pr-follow-up.

Which coding agents can use signals-scout-pr-follow-up?
signals-scout-pr-follow-up installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.