Cut an Atmosphere release end to end — the only path to release-4x.yml. Use whenever a release, a version cut, "ship it" or publishing to Maven Central/npm/Homebrew/SDKMAN is requested. Runs the preflight in order (open carnet, compatibility review, CI green on HEAD, sample sweep covering HEAD), triggers the workflow, verifies every distribution channel, labels the carnet, and cleans up. Stops at the first failed check.
80
100%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Low
Low-risk findings worth noting
release-4x.yml publishes to five channels that cannot be taken back:
This skill is the checklist in front of it. Run every step in order and stop at the first one that fails. A failed check is reported to the maintainer with the evidence. It is never worked around, and never answered with "CI is green, so it is probably fine": that reasoning shipped 4.0.75 without a sweep of its last three user-facing changes.
gh issue list -R "$(.agents/skills/carnet/carnet.sh tracker)" --state open \
--json number,title -q '.[] | "#\(.number) \(.title)"'
.agents/skills/carnet/carnet.sh status --shortEvery open entry is either fixed or explicitly excluded by the maintainer for this release. An exclusion from a previous release does not carry over: ask again. An entry another session holds in progress blocks the release.
PREV=$(git tag --list 'atmosphere-4.*' --sort=-v:refname | head -1)
git log --oneline "$PREV..origin/main" -- ':(glob)modules/**/src/main/**' atmosphere.js/srcList every change to a public API, wire format, default, configuration key or dependency version. Name each one to the maintainer and get a yes before continuing. Silence is not a yes.
git fetch origin && SHA=$(git rev-parse origin/main)
gh run list --commit "$SHA" -L 100 --json name,status,conclusion \
-q '.[] | "\(.status)\t\(.conclusion)\t\(.name)"'--commit with a short SHA silently matches nothing.completed + success. A failure is fixed and the
check starts again from Step 1, because the fix is a new commit.git checkout --detach origin/main && ./scripts/validate-sweep-attestation.shThis is the same gate release-4x.yml runs first.
release-sample-sweep skill: the full sweep, or its
Step 4 re-test for the surfaces the gate lists..harness/sweep-attestation.json, then start again from
Step 3.skip_sweep_gate is for an emergency the maintainer declares in words. It is
never the agent's call.gh workflow run release-4x.yml --ref main \
-f release_version=X.Y.Z -f next_dev_version=X.Y.(Z+1)-SNAPSHOT \
-f publish_js=true -f js_only=false -f dry_run=falseWatch the run until it completes. A failed job is diagnosed from its log before anything else is triggered:
gh run rerun <id> --failed retries only the jobs that failed;| Channel | Check |
|---|---|
| Maven Central | curl -s -o /dev/null -w '%{http_code}' https://repo1.maven.org/maven2/org/atmosphere/atmosphere-runtime/X.Y.Z/atmosphere-runtime-X.Y.Z.pom returns 200 (also check atmosphere-ai) |
| npm | npm view atmosphere.js version and the latest dist-tag |
| GitHub release | gh release view atmosphere-X.Y.Z shows not draft, with the zip and .sha256 |
| Homebrew | the tap formula Formula/atmosphere.rb is at X.Y.Z |
| SDKMAN | the Publish CLI to SDKMAN job is green, and https://api.sdkman.io/2/broker/download/atmosphere/X.Y.Z/darwinarm64 returns 302 (the default and list endpoints lag behind) |
| main | the pom is X.Y.(Z+1)-SNAPSHOT and atmosphere.js is bumped |
Then wait for CI on the bump commit. The chore(js) bump is pushed by the
bot and triggers no workflows, so watch the prepare for next development iteration commit before it.
carnet.sh label <n> +X.Y.Z for every carnet entry the release fixed.--force; check first that it is clean and has no unpushed commits.Atmosphere/atmosphere
4f29b17
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.