New to Claude Skills? Learn how to install them →

posthog on GitHub

Checking Deploy Timing

Free

Quickly determine when code changes were deployed in PostHog.

by posthog37.6k stars on posthog/posthog
1 views
Updated Aug 11, 2026
Get this skill

Free · Opens the source repo

What Checking Deploy Timing does

The Checking Deploy Timing skill is designed for developers and team members working with PostHog who need accurate information regarding when specific code changes were deployed to various environments. This skill leverages hidden GIT deploy annotations that are created every time a commit is shipped, providing a reliable source for determining deployment times. By using this skill, users can avoid confusion that arises from relying solely on event or data volume changes, which do not indicate when code was actually deployed.

When a team member inquires about the deployment status of a feature or fix, this skill guides users through a structured workflow. It begins by identifying the merge commit associated with the change in question. Users can utilize GitHub's CLI commands to search for the relevant pull request and retrieve its merge commit SHA and merge timestamp. Following this, the skill helps users list the deploy annotations for the specified environment, ensuring that they consider the correct chronological order of deployments around the time of the merge.

Once the relevant deploy annotations are identified, the skill provides a method to confirm whether the deployed commit includes the changes from the merge commit. This is done by checking the ancestry of the commits to ensure that the correct version was deployed. The skill also allows users to report the deployment time accurately and mention the status of deployments in other regions if necessary, providing a comprehensive overview of the deployment landscape.

This skill is particularly useful for PostHog staff and developers who need to provide precise answers to deployment timing questions, ensuring that they can confidently communicate the status of code changes to stakeholders.

When to use it

Use this skill when you need to determine the deployment timing of code changes in PostHog, especially when responding to inquiries from team members.

When not to use it

This skill is not suitable for scenarios where deployment timing is not relevant, or when working with environments outside of PostHog's deployment system.

What you can build with it

Check Deployment Timing for a Feature

A developer needs to confirm when a new feature was deployed to the production environment to answer a stakeholder's question.

Verify Fix Deployment

A team member wants to know if a bug fix has been deployed to the EU region after merging the pull request.

Audit Deployment History

A project manager requires a detailed report of deployment timings for recent changes across different environments for compliance purposes.

How to install Checking Deploy Timing

View source

1. Install with the skills CLI

npx skills add posthog/posthog/checking-deploy-timing --agent claude-code

2. Or install it manually

Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.

Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs

Inside SKILL.md

Written 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.

Frequently asked questions about Checking Deploy Timing

Similar skills