Post or update a release status message in Slack tracking cherry-picked PRs and their current status. Use when the user asks to post, update, or check cherry-pick status for a release.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
A direct command skips the review prompt. Inspect the source before running it.
Post or update a release status message in Slack tracking cherry-picked PRs and their current status. Use when the user asks to post, update, or check cherry-pick status for a release.
post-release-status
Post or update a top-level Slack message that tracks the status of all cherry-picked PRs for a release branch.
Configuration
This skill reads environment-specific values from environment variables (see the repo README.md):
SLACK_BOT_TOKEN — Slack bot token with channels:history, channels:read, chat:write, and chat:update OAuth scopes.
INTERNAL_REPO — owner/repo that holds your release branches and cherry-pick PRs.
REPO_DIR — absolute path to your local checkout of INTERNAL_REPO.
RELEASE_SLACK_CHANNEL — Slack channel name (or ID) to post the status in.
RELEASE_CHANNELS — space-separated release channels used to derive the channel label from a branch (default preview stable).
STATUS_EMOJI_IN_REVIEW / STATUS_EMOJI_MERGED / STATUS_EMOJI_VERIFIED — Slack emoji for each PR status (defaults :large_yellow_square: / :merged: / :verified:).
All git/gh operations run inside INTERNAL_REPO. Run cd "$REPO_DIR" before executing any git or gh commands.
Step 1: Clarify inputs
Before proceeding, ensure you have:
: The full release branch name (e.g. ). This can be provided in one of three ways:
Release branch
stable_release/v0.YYYY.MM.DD.HH.MM.stable_NN
The user gives it directly.
The user gives a cherry-pick PR URL — deduce the branch from the PR's base branch:
If neither is provided, ask the user for the release branch or a PR URL.
Slack channel ID: The Slack channel to post in (defaults to $RELEASE_SLACK_CHANNEL; a channel ID looks like C0123456789). If you only have a channel name, resolve it:
Preserve $STATUS_EMOJI_VERIFIED status — do not downgrade a verified PR back to merged.
If no matching message is found: proceed with current GitHub state only.
Step 4: Determine final PR statuses
For each cherry-pick PR, determine the display status:
If the PR was $STATUS_EMOJI_VERIFIED in the previous message → keep as $STATUS_EMOJI_VERIFIED
Else if the PR state is MERGED on GitHub → $STATUS_EMOJI_MERGED
Else if the PR state is OPEN on GitHub → $STATUS_EMOJI_IN_REVIEW
Step 5: Format the message
Use Slack Block Kit so the release name renders as a true header (larger text). Build a blocks JSON array and a plain-text text fallback (used for notifications and for searching in Step 3):
Also set TEXT_FALLBACK to the plain version of the title (e.g. "v0.YYYY.MM.DD stable release") — this is used for notifications and for the search pattern in Step 3.
Use Slack mrkdwn hyperlink format in the section block: <URL|display text>.
Step 6: Post or update the message
If updating an existing message (message ts found in Step 3):