with one click
release-ultrainit
"
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.
Menu
"
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.
Based on SOC occupation classification
"
"
"
"
"
"
| name | release-ultrainit |
| description | " |
.github/workflows/release.yml — the release pipeline (validates tag, builds bundle, publishes)bundle.sh — what gets bundled and the __EOF_LIB_<name>__ delimiter strategyMakefile — bundle and test-all targetsCLAUDE.md section on Security-Critical Areas — bundle.sh ships broken releases if wronggit tag --sort=-v:refname | head -5
Decide the next semver: v<MAJOR>.<MINOR>.<PATCH>. Pre-release format: v1.2.3-beta.1 (the .digit after the label is required — v1.2.3-beta alone fails release.yml's regex check).
git status
git log --oneline main..HEAD
All changes must be merged to main before tagging. Releases are always cut from main.
make check # syntax + schema validation
make test-all # full bats suite inside Docker
Do not proceed if any test fails. Integration tests: check raw output — CI shows green even when they fail.
grep '__EOF_LIB_' lib/*.sh prompts/*.md scripts/*.sh
If any file contains a line matching __EOF_LIB_<name>__, the heredoc in bundle.sh terminates early, shipping a broken bundle silently.
mkdir -p dist
bash bundle.sh > dist/ultrainit.sh
chmod +x dist/ultrainit.sh
bash -n dist/ultrainit.sh && echo "syntax OK"
du -sh dist/ultrainit.sh
If bash -n fails, bundle.sh has a syntax error or delimiter conflict. Do not tag.
Show the user:
git log --oneline $(git tag --sort=-v:refname | head -1)..HEAD (commits since last tag)Wait for explicit approval before proceeding. The developer answers explicitly state: never release new tags without consulting the user first.
git tag v<VERSION>
git push origin v<VERSION>
This triggers .github/workflows/release.yml automatically.
gh run list --workflow=release.yml
gh run watch # follow the live output
gh release view v<VERSION>
Verify dist/ultrainit.sh is attached as a release asset. Check the download URL in the release body matches the curl-pipe-bash install command in README.md.
bash -n dist/ultrainit.sh # bundle syntax
gh release view v<VERSION> --json assets --jq '.assets[].name' # asset attached
Tagging without consulting the user — the project rule is explicit. Always show the planned tag and commit range before tagging.
v1.2.3-beta without .digit — release.yml validates against ^v[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9.]+)?$. The suffix must be beta.1 not beta.
Skipping make test-all before tagging — release.yml runs bash -n but does NOT run the bats test suite. A broken release can ship even with failing tests if you skip step 3.
bundle.sh stdout contamination — any echo or log_* call added to bundle.sh corrupts the bundle output because release.yml does bash bundle.sh > dist/ultrainit.sh.