Generated banner for Checking Deploy Timing
Generated logo for Checking Deploy Timing

Checking Deploy Timing

PostHogOfficialPublished by PostHog

  • Skill
  • Workflow
  • Data and AI
  • MIT
  • No issues found

From the author

Determine when a PostHog code change reached a given environment by reading the hidden GIT deploy annotations in the project and correlating them with the merge commit on GitHub. Use when PostHog staff ask "when was X deployed", "is my change live in the US/EU yet", "has my PR shipped", "did the fix roll out to prod-us", or otherwise want to know whether/when a commit, PR, or feature went out to a region. Do not answer deploy-timing questions from event/data volume alone — that only shows when data changed, not when code shipped.
— the description by PostHog

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

This skill provides a reliable methodology for determining the precise deployment time of code changes in the PostHog environment. By correlating GitHub merge commits with hidden Git-based deploy annotations, it avoids the common pitfall of inferring deployment status from fluctuating event data or metric volumes. The process involves identifying the relevant merge commit, locating the corresponding environment-specific deploy markers, and verifying the inclusion of the commit via ancestry checks.

What it does

  • Identifies the merge commit SHA and timestamp for a specific pull request.
  • Retrieves hidden deployment annotations for target environments like prod-us or prod-eu.
  • Performs chronological analysis of deployment markers relative to merge times.
  • Validates that a specific deployed commit contains the target merge commit using ancestry comparison.
  • Distinguishes between internal staging environments and customer-facing production regions.
  • Provides authoritative confirmation of when a fix or feature reached a specific region.

When to use it

  • When staff inquire about the deployment status of a specific PR or commit.
  • When verifying if a fix has successfully rolled out to a specific region like prod-us or prod-eu.
  • When you need to distinguish between code deployment times and changes in data event volume.
  • When investigating whether a read-path change has been applied to the production environment.

Advantages

  • Relies on authoritative Git-based markers rather than potentially misleading event data.
  • Provides a clear, step-by-step verification process for cross-referencing commits.
  • Ensures accuracy by confirming commit ancestry rather than just relying on timestamps.
  • Standardizes the response process for common deployment-related queries.

Usage examples

“Has my PR #12345 shipped to prod-us yet?”
The agent will identify the merge commit for PR #12345, locate the relevant prod-us deploy annotations, and verify if the deployed commit includes the merge, confirming the exact time it went live.
“When was the fix for the query-runner issue deployed to the EU?”
The agent will search for the merge commit associated with the fix and check the prod-eu deploy markers to report the precise UTC time the change reached the EU environment.

Install

  1. Download the skill as a ZIP:

    https://autogineer.com/agent-skills/posthog/checking-deploy-timing/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip checking-deploy-timing.zip -d .agents/skills

Documentation by PostHog

Checking when something was deployed

PostHog's CI writes a deploy marker into the project as an annotation every time a commit ships to an environment. These annotations are hidden_in_user_interface: true, so they don't show in the UI and are easy to forget — but they are the source of truth for "when did this go out". Always check them when staff ask about deploy timing, rather than inferring from when a metric or event volume changed (that conflates a capture change with a query/code change).

The deploy annotations

List them with posthog:annotations-list using {"search": "deploy"}. Each deploy marker looks like:

  • content: Deployed PostHog/posthog@<sha> to <env> — env is prod-us, prod-eu, or dev

  • creation_type: GIT

  • scope: organization

  • hidden_in_user_interface: true

  • date_marker: the deploy time (UTC)

They're returned newest-first; paginate with offset if you need to go further back.

Workflow

  1. Find the change's merge commit. Identify the PR (e.g. gh search prs --repo PostHog/posthog --author <user> "<keywords>"), then gh pr view <n> --repo PostHog/posthog --json number,title,mergedAt,mergeCommit,state. Note the merge commit SHA and mergedAt.

  2. List the target environment's deploys around the merge, oldest-first. Match the region the user asked about (prod-us for "the US", prod-eu for "the EU"). The annotations come back newest-first, so don't just take the first ... to <env> match on page 1 — that's the most recent deploy. Paginate (with offset) until you reach markers around mergedAt, then consider that environment's deploys in chronological order, starting with the first whose date_marker is after mergedAt. Check them earliest-first in step 3.

  3. Confirm the deployed commit actually contains the merge commit. A later date_marker is necessary but not sufficient — a deploy can fire just after the merge yet build a slightly older commit. Verify ancestry:

    gh api repos/PostHog/posthog/compare/<merge_sha>...<deployed_sha> --jq '{status,ahead_by,behind_by}'

    behind_by: 0 with status ahead or identical means the deployed commit includes the merge — that's your answer. If behind_by > 0, this deploy predates the change; move to the next newer deploy of that environment (the next one chronologically) and re-check. The first deploy that passes is the one that shipped the change.

  4. Report the deploy time (and PR/commit) for the region asked about. Mention other regions if relevant — prod-us and prod-eu usually deploy minutes apart but not simultaneously.

Notes

  • "Live in the US" = prod-us; "the EU" = prod-eu. dev is the internal staging environment, not customer-facing.

  • For a query-runner / read-path change, the new behaviour applies retroactively to all data once deployed — so you can't time it from event volume, only from the deploy annotation. For a capture change, event volume for the new property is a secondary cross-check, but the annotation is still the authoritative deploy time.

Files

Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Needs: Needs a command-line tool

Security

No issues found by our static scan· No issues found

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Published by
PostHog
Publisher
PostHog (Official)
Source
PostHog/skills · skills/omnibus/checking-deploy-timing · commit a5d30e7
Licence
MIT License (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by PostHog or PostHog.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download checking-deploy-timing.zip