Agent skill

Promote Release

by imbue-ai in imbue-ai/sculptor

Promote a QA'd Sculptor release candidate to a full production release: verify the RC build is green and has been QA'd, then from the release branch run just promote-release (which strips the rcN…

MITAuto-check passedDevOps & Cloud

Install Promote Release

skills CLI
$ npx skills add imbue-ai/sculptor --skill promote-release -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install imbue-ai/sculptor promote-release --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/imbue-ai/sculptor.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/promote-release .claude/skills/promote-release && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
promote-release
GitHub stars
238
Token cost
~2.1k tokens
SKILL.md length
898 words
Files
1
Skills in repo
29
Repo updated
First seen
Licence
MIT

At a glance

Promote a QA'd Sculptor release candidate to a full production release: verify the RC build is green and has been QA'd, then from the release branch run just promote-release (which strips the rcN…

  • Works in 6 steps: Work out what to promote → Get onto the release branch, clean → Promote → …
  • The production build) and babysit that build up to its manual approval gate
  • SKILL.md covers Step 0 — Work out what to…, Step 1 — Get onto the release…, Step 2 — Promote and Step 3 — Babysit the…, plus 3 more sections
  • Calls gh, git and just; reaches imbue-sculptor-releases.s3.amazonaws.com

What it does

Promote Release is an agent skill from imbue-ai/sculptor. Promote a QA'd Sculptor release candidate to a full production release: verify the RC build is green and has been QA'd, then from the release branch run just promote-release (which strips the rcN suffix, commits X.Y.0, and pushes the sculptor-vX.Y.0 tag that triggers the production build) and babysit that build up to its manual approval gate. Handles the colocated jj + git working copy and the CI flake/outage/zombie recovery playbook. Stops AT the approval gate — never approves it for you. Use when asked to…

Its SKILL.md is about 2.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in DevOps & Cloud, covering Incident response and Git workflow. It works with Git. The repository describes itself as: Build product with grounded, parallel coding agents. The licence is MIT.

When your agent uses it

  • The production build) and babysit that build up to its manual approval gate
  • Asked to promote a release
  • Ship the release
  • Turn an RC into the real release

Example prompts

  • “promote a release”
  • “ship the release”
  • “/promote-release”

Requirements

  • Python 3

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Work out what to promote
  2. Get onto the release branch, clean
  3. Promote
  4. Babysit the production build to the approval gate
  5. Verify at the gate, then hand off
  6. After they approve

What it can do on your machine

Read from SKILL.md and the folder at commit f847102. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • gh
    • git
    • just
    • python3
    • curl

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • imbue-sculptor-releases.s3.amazonaws.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Promote Release loads about 2.1k tokens when it runs. Until then it costs about 152 tokens; SKILL.md has 898 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~152
When it runs · the whole SKILL.md, loaded when a task matches
~2.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from imbue-ai/sculptor at commit f847102, republished under its MIT licence (© imbue-ai). 898 words, ~2,058 tokens.

Download SKILL.mdSave it as .claude/skills/promote-release/SKILL.md (or your agent's skills folder).
name
promote-release
description
Promote a QA'd Sculptor release candidate to a full production release: verify the RC build is green and has been QA'd, then from the release branch run `just promote-release` (which strips the rcN suffix, commits X.Y.0, and pushes the sculptor-vX.Y.0 tag that triggers the production build) and babysit that build up to its manual approval gate. Handles the colocated jj + git working copy and the CI flake/outage/zombie recovery playbook. Stops AT the approval gate — never approves it for you. Use when asked to "promote a release", "ship the release", or turn an RC into the real release.
argument-hint
[release-version, e.g. 0.44] (optional; inferred from the release branch)

Promote a Sculptor Release

Turn a release candidate on release/sculptor-vX.Y.0 into the promoted X.Y.0 release. Read docs/development/release_ci_playbook.md first — the version model, approval-gate policy, flake-vs-outage triage, zombie recovery, and jj working-copy rules all live there and this skill depends on them. That playbook is a living document: anything new you learn promoting a release goes back into it in the same change.

Gate before you start: promotion publishes the real thing. Confirm the RC build for the current rcN went green and was actually QA'd before running anything here. If it wasn't QA'd, stop and get that done first.

Step 0 — Work out what to promote

Don't assume the newest release branch is the one to ship. Branches get cut and abandoned: 0.41 and 0.43 were both cut and never promoted, so production went 0.42.0 → 0.44.0 directly.

bash
git fetch origin --tags --prune
git branch -r --list 'origin/release/*' | sort -V | tail -5    # candidate branches
git tag -l 'sculptor-v*' --sort=-v:refname | head              # rcN tags
gh release list --limit 10                                     # what actually shipped

Read those together:

  • The branch to promote is the one whose rcN prerelease appears in gh release list. That publication is proof the RC build went green and a human approved its gate — stronger evidence than "the build was green".
  • The newest non-prerelease (Latest) entry is what production runs today.
  • A release branch with no published prerelease was abandoned; leave it alone.

Step 1 — Get onto the release branch, clean

promote-release runs git checkout-based checks and needs a real git branch (release/sculptor-vX.Y.0) with a clean tree — not the usual jj detached HEAD.

bash
jj st                                   # working copy clean/empty?
git fetch origin release/sculptor-vX.Y.0
git checkout release/sculptor-vX.Y.0
cd sculptor && python3 -c "import tomllib; print(tomllib.load(open('pyproject.toml','rb'))['project']['version'])"; cd ..   # expect X.Y.0rcN

If jj st shows unrelated working-copy work, preserve it first (bookmark + jj new, per the playbook) before the checkout — never discard it.

Sanity checks the recipe also enforces, worth confirming yourself:

  • You're on release/sculptor-vX.Y.0 and the version is an rcN pre-release.
  • The branch is not behind its upstream:
    bash
    git fetch --prune && git status --porcelain=2 --branch | grep '^# branch.ab'
    If behind, pull/rebase before promoting.

Step 2 — Promote

bash
just promote-release

This strips the pre-release suffix (X.Y.0rcN → X.Y.0), commits the version on the release branch, and pushes tag sculptor-vX.Y.0 — which triggers the production release build. Capture the release version and tag from the output.

Two outputs look wrong but are normal (playbook field notes, 2026-08-14):

  • Releasing Sculptor <old rcN version> from git sha ... — a stale pyproject_version() echo. The version actually released is the stripped one.
  • Bypassed rule violations for refs/tags/... creations being restricted on the tag push. Expected — but it means you need tag-creation bypass on the repo ruleset; without it the promotion fails right here.

Step 3 — Babysit the production build to the approval gate

Same polling and recovery as an RC build (playbook: "Polling a build", "Flake vs. outage", "Zombie runs"):

bash
gh run list --workflow=build-desktop.yml --limit 5    # find the sculptor-vX.Y.0 run
gh run view <run_id> --json status,conclusion -q '.status + " / " + (.conclusion // "running")'
gh api repos/imbue-ai/sculptor/actions/runs/<run_id>/pending_deployments -q 'length'
  • Infra flake / cancellation → retry (gh run rerun <run_id> --failed, or a full rerun after a cancellation).
  • A red linux-arm64 is survivable: it is allow-failure: true, and the publisher skips a non-blocking target whose artifacts are missing. The release ships without that architecture — rerun the job if you want arm64 included.
  • Outage → check githubstatus.com, back off, don't retry into it.
  • Never admin-merge / force a bad required check. Refuse and hand back.
  • Gate reached (pending_deployments ≥ 1, run status = waiting, release desktop (S3 publish + gh release) = waiting) → verify, then stop.

Note: if the production build is unrecoverable but the RC was fine, promotion isn't the place to cut a new RC — that's fixup-release on the RC side. A promoted release that later needs patching uses just hotfix-release (see the playbook's version model).

Show full SKILL.md (363 more words)Show less

Step 4 — Verify at the gate, then hand off

Check what will actually ship before handing it over — allow-failure jobs report success to needs, so the gate can open with a red linux-arm64:

bash
gh run view <run_id> --json jobs -q '.jobs[] | .name + " -> " + (.conclusion // "—")'

Then report that the build is parked at the release environment approval gate, and do not approve it. Per the playbook: surface it, give the user the run URL plus the env id, show them how to approve themselves (UI Review deployments, or the gh api ... pending_deployments ... state=approved command), and if asked to approve, push back gently once, then comply if they insist.

If arm64 is red, rerun it first when you want that architecture in the release — and either way, tell the user which architectures this release will contain.

Step 5 — After they approve

Confirm the publish actually landed; don't trust the job status alone:

bash
gh run view <run_id> --json conclusion -q .conclusion             # success
gh release view sculptor-vX.Y.0 --json isPrerelease,isDraft       # false / false
curl -s https://imbue-sculptor-releases.s3.amazonaws.com/slim/AppImage/x64/latest-linux.yml | grep '^version:'

That last one matters most — the auto-update manifests are the channel that actually reaches users. (A release with 0 assets is normal: artifacts live in S3 and the release body just links them.)

Follow-ups this skill does not do:

  • Release notes (write-release-notes). The range starts at the prior promoted tag, which may be several minors back — 0.44.0's notes had to cover 0.42.0 → 0.44.0 because 0.43 never shipped. Scoping to the previous release branch silently drops half of what users are receiving. The release body is pipeline boilerplate (title + ## Assets); splice notes in above ## Assets and preserve that block verbatim, via gh release edit <tag> --notes-file <file>. Do not sign a published product changelog (Sent by Claude) — CLAUDE.md's transparency rule targets PR, issue, and chat messages, not user-facing release copy.
  • update-help-docs — optional / deprecated. The help docs (docs/help/) are no longer actively maintained, so refreshing them is no longer part of the promotion follow-up. Skip it by default; only run it (from the release branch) if you specifically want to update a page.
  • Linear hygiene for the tickets that shipped.
  • Slack needs nothing: the pipeline posts to #sculptor-release automatically on a successful publish.

Before you finish

Learned something the playbook doesn't cover? Add it to docs/development/release_ci_playbook.md (Field notes) and commit it in the same change. You have write access — write it down for the next promoter.

© imbue-ai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/promote-release of imbue-ai/sculptor.

Open the folder on GitHubat commit f847102

Compare with similar skills

Promote Release next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Promote Release compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Promote Release this skillimbue-ai/sculptor238—~2.1kAutomated safety check: PassMIT
Ssh Skillbadseal/ssh-skill538—~2.4kAutomated safety check: NotesNone
GreptimeDB Release RunbookGreptimeTeam/greptimedb6.7k—~1.4kAutomated safety check: PassApache-2.0
Rtk Skillsopaco/deepwiki-rs3.1k—~1.4kAutomated safety check: PassMIT
GitLab ExplorerWide-Moat/open-computer-use126—~891Automated safety check: PassCustom licence
Secrets GitleaksAgentSecOps/SecOpsAgentKit2202 repos~4.1kAutomated safety check: PassCustom licence

Similar skills

  • Ssh Skill

    badseal/ssh-skill

    A skill your agent uses when a task requires SSH or SCP/SFTP behavior, a remote server, server alias/IP/hostname/user@host, bastion or jump-host access, remote command execution, upload/download…

    538 GitHub stars~2.4k tokensUpdated 1 mo ago
    DevOps & CloudAuto-check: notes
  • GreptimeDB Release Runbook

    GreptimeTeam/greptimedb

    Runbook for publishing a GreptimeDB version: pick the release branch, verify the Cargo version, then tag, create the GitHub release and open the docs note PR.

    6.7k GitHub stars~1.4k tokensUpdated today
    DevOps & CloudAuto-check passed
  • Rtk Skill

    sopaco/deepwiki-rs

    A skill your agent uses when running shell commands that produce verbose output (git, test, build, lint, package managers, docker).

    3.1k GitHub stars~1.4k tokensUpdated 26 days ago
    DevOps & CloudAuto-check passed
  • GitLab Explorer

    Wide-Moat/open-computer-use

    Explore GitLab repositories using glab CLI and git commands.

    126 GitHub stars~891 tokensUpdated 5 days ago
    DevOps & CloudAuto-check passed
  • Secrets Gitleaks

    AgentSecOps/SecOpsAgentKit

    Hardcoded secret detection and prevention in git repositories and codebases using Gitleaks.

    220 GitHub starsUsed in 2 repos~4.1k tokens
    DevOps & CloudAuto-check passed
  • Pluggedin Stack Ops

    VeriTeknik/pluggedin-app

    A skill your agent uses when deploying, restarting, verifying or rolling back the containerised plugged.in production stack, when the site returns 404 or 5xx after a deploy or git operation, or when…

    103 GitHub stars~1.3k tokensUpdated 4 days ago
    DevOps & CloudAuto-check: notes

More from imbue-ai/sculptor

All 29 skills in this repo
  • Auto QA Iphone

    imbue-ai/sculptor

    QA the Sculptor mobile web UI on a real iOS Simulator, driven headlessly from a Mac.

    238 GitHub stars~3.1k tokensUpdated yesterday
    Auto-check passed
  • Measure React Renders

    imbue-ai/sculptor

    Compare React component render counts between origin/main and the current branch during a user-defined UI scenario (e.g.

    238 GitHub stars~603 tokensUpdated yesterday
    Auto-check passed
  • Post PR To Slack

    imbue-ai/sculptor

    Post a one-line PR announcement to a Slack channel, and mark it :merged: when the PR merges.

    238 GitHub stars~1.6k tokensUpdated yesterday
    Auto-check passed
  • Batch Claude Runner

    imbue-ai/sculptor

    Run Claude programmatically against collections of files in the codebase.

    238 GitHub stars~308 tokensUpdated yesterday
    Auto-check passed
  • Build Sculptor Extension

    imbue-ai/sculptor

    Build or modify a Sculptor extension — a runtime ESM module loaded into the Sculptor UI.

    238 GitHub stars~3.4k tokensUpdated yesterday
    Auto-check passed
  • Code Review Checklist

    imbue-ai/sculptor

    Review a set of code changes against Sculptor's review categories and produce a markdown findings table.

    238 GitHub stars~3.6k tokensUpdated yesterday
    Auto-check passed

Works with

Categories

Questions about Promote Release

What does Promote Release do?

Promote a QA'd Sculptor release candidate to a full production release: verify the RC build is green and has been QA'd, then from the release branch run just promote-release (which strips the rcN…. Promote Release is an agent skill from imbue-ai/sculptor.0 tag that triggers the production build) and babysit that build up to its manual approval gate.

When should I use Promote Release?

Promote Release fits situations like: the production build) and babysit that build up to its manual approval gate; asked to promote a release; ship the release; turn an RC into the real release.

How do I install Promote Release in Claude Code?

Run `npx skills add imbue-ai/sculptor --skill promote-release -a claude-code`. Or copy the skill folder (.claude/skills/promote-release in imbue-ai/sculptor) into .claude/skills/promote-release in your project. Claude Code loads it when a task matches its description.

How do I install Promote Release in Codex?

Run `npx skills add imbue-ai/sculptor --skill promote-release -a codex`. Or copy the skill folder (.claude/skills/promote-release in imbue-ai/sculptor) into .agents/skills/promote-release in your project. Codex loads it when a task matches its description.

Can I use Promote Release in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add imbue-ai/sculptor --skill promote-release -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/promote-release, .gemini/skills/promote-release, .github/skills/promote-release and .opencode/skills/promote-release in your project.

What does Promote Release need to run?

Going by SKILL.md and its folder, Promote Release needs the command-line tools its instructions call (gh, git, just, python3 and curl). Our summary lists: Python 3.

Does Promote Release access the network?

SKILL.md names 1 domain. In commands or code: imbue-sculptor-releases.s3.amazonaws.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Promote Release safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Promote Release use?

Promote Release is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Promote Release use?

About 2.1k tokens (SKILL.md is roughly 8.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Promote Release?

Skills that share tags, products or a category with Promote Release: Ssh Skill (badseal/ssh-skill, 538 stars), GreptimeDB Release Runbook (GreptimeTeam/greptimedb, 6.7k stars), Rtk Skill (sopaco/deepwiki-rs, 3.1k stars) and GitLab Explorer (Wide-Moat/open-computer-use, 126 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Promote Release?

imbue-ai (a GitHub organization) maintains it in imbue-ai/sculptor, which has 238 GitHub stars. The repository holds 29 skills in this directory. The repository was last updated on October 9, 2026.

Source: imbue-ai/sculptor on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.