projectbluefin/common/release-promotion
Claude Code and agent skill by projectbluefin/common
- community
- ext:[{"type":"hook","description":"Pre/post lifecycle hooks"}]
Checking that the SKILL.md file is still in the repository.
Promotion criteria, monthly release cadence, hotfix procedure, and artifact verification for projectbluefin/common. Use when cutting a release, understanding the promotion pipeline, or verifying release artifacts.
Install
npx vskill@latest install projectbluefin/common/release-promotionSemi-extensibleMentions customization, but needs skill-specific knowledge. Read the extensible skills standard
SKILL.md
Release and promotion — common
Load this when cutting a release, evaluating whether a monthly tag is safe to create, doing a hotfix, or verifying signed artifacts.
When to Use
- Cutting or evaluating a monthly release tag
- Doing a hotfix outside the monthly window
- Verifying cosign signatures, SBOM, or SLSA attestations on a published image
- Understanding how common changes propagate to downstream
:testingbuilds - Debugging the testing→main squash promotion pipeline
When NOT to Use
- CI workflow editing (SHA pinning, pre-commit, Renovate) → `ci-tooling.md`
- Debugging silent CI failures or
startup_failure→ `ci-pitfalls.md` - PR review or issue triage workflows
Promotion criteria
A common release is safe when all of the following are true:
| Criterion | How to verify | |
|---|---|---|
| Post-merge E2E is green | Check .github/workflows/e2e.yml run on latest main commit | |
No PRs on hold targeting main | gh pr list --repo projectbluefin/common --search "label:hold" --base main | |
| No open P0 issues | ~/src/hive-status — zero 🔴 blockers | |
| Promotion-candidate E2E passed this week | Check .github/workflows/promotion-candidate-e2e.yml (runs Tuesdays) — no open blocker issue from it |
If any criterion fails, do not tag a release. File or escalate the blocker issue and wait.
Planned gate (common#513): The monthlyrelease.ymlwill be updated to run the promotion-candidate E2E as a required prerequisite job before creating the GitHub Release. Until that ships, the check above is manual.
Monthly release cadence
- Schedule: 1st of every month at 00:00 UTC (
release.ymlcron) - Tag format:
v<YEAR>.<MONTH>— e.g.,v2026.06 - What it creates: A GitHub Release with a changelog since the previous tag, pointing at the current
mainHEAD - What it does NOT do: Promote or retag the OCI image —
:latestis always the most recent merge tomain
Emergency hotfix release
When a critical fix needs a versioned tag outside the monthly window:
- Merge the fix to
mainvia normal PR process - Verify all promotion criteria above are met
- Run
release.ymlmanually viaworkflow_dispatch— it will tag the currentmainwith the current month's tag (or create a patch tag manually withgh release create) - Notify downstream image repos if the fix affects their builds
Common Rationalizations
| Rationalization | Reality | |
|---|---|---|
| "E2E is green, so we can tag." | Check all four criteria — E2E alone is not sufficient. | |
| "The promotion PR will auto-merge once CI passes." | Merge queue enqueue can fail due to required status checks not completing; verify after squash branch rebuild. | |
| "The squash conflict is from someone else's PR." | You can still fix the squash branch — see troubleshooting. | |
"The ci(promote): PR title is what triggers execute-release." | execute-release.yml matches the commit message that lands on the target branch (chore: promote ...), not the PR title. |
Red Flags
- Promotion PR has
release/blockedwith no E2E evidence → checkpost-testing-e2e.ymlbranches:filter promote-testing-to-main.ymlfails withUDconflicts → file deletions on testing haven't reached mainPublishworkflow stuck in_progress > 30 min → zombie run holding concurrency queueexecute-release.ymlnot triggering after promotion PR merges → check commit subject match
Verification
- [ ] Confirm all four promotion criteria are met before tagging
- [ ] For artifact verification: run
gh attestation verify(keyless, post-2026-06-11), not just cosign verify - [ ] After a hotfix: notify downstream repos if the fix affects their builds
- [ ] After a squash branch rebuild: wait for
PR Validation — testsuiteto complete before enqueuing
References
| File | Description | |
|---|---|---|
| references/supply-chain.md | Supply chain current state (signing, SBOM, SLSA, CVE), required permissions, and artifact verification commands. | |
| references/downstream-propagation.md | How common updates reach bluefin, bluefin-lts, and dakota :testing builds (Renovate + BST). | |
| references/pr-based-release.md | PR-based squash promotion model, schedule, commit title rules, repo variants, E2E gate model, and reusable workflow patterns. | |
| references/troubleshooting.md | Troubleshooting the testing→main squash promotion: gate stuck, UD conflicts, merge queue blocked, branch divergence, zombie publish runs, actions branch policy. |
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingdocs/skills/release-promotion/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Extension points
hookPre/post lifecycle hooks
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/projectbluefin/common/release-promotion)