Release
xin2017338/lynx-proxy
Publish a new release version of Lynx Proxy. An agent skill from xin2017338/lynx-proxy.
Cut, tag, and publish an alef release end-to-end. An agent skill from xberg-io/alef.
$ npx skills add xberg-io/alef --skill release-procedure -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install xberg-io/alef release-procedure --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/xberg-io/alef.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.ai-rulez/skills/release-procedure .claude/skills/release-procedure && rm -rf skills-srcUse ~/.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/
Install the "release-procedure" agent skill from https://github.com/xberg-io/alef/tree/main/.ai-rulez/skills/release-procedure into .claude/skills/release-procedure/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release-procedure", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/xberg-io/alef/tree/main/.ai-rulez/skills/release-procedureType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add xberg-io/alef --skill release-procedure -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install xberg-io/alef release-procedure --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/xberg-io/alef.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.ai-rulez/skills/release-procedure .agents/skills/release-procedure && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "release-procedure" agent skill from https://github.com/xberg-io/alef/tree/main/.ai-rulez/skills/release-procedure into .agents/skills/release-procedure/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release-procedure", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add xberg-io/alef --skill release-procedure -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install xberg-io/alef release-procedure --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/xberg-io/alef.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.ai-rulez/skills/release-procedure .cursor/skills/release-procedure && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "release-procedure" agent skill from https://github.com/xberg-io/alef/tree/main/.ai-rulez/skills/release-procedure into .cursor/skills/release-procedure/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release-procedure", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/xberg-io/alef.git --path .ai-rulez/skills/release-procedure--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add xberg-io/alef --skill release-procedure -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install xberg-io/alef release-procedure --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/xberg-io/alef.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.ai-rulez/skills/release-procedure .gemini/skills/release-procedure && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "release-procedure" agent skill from https://github.com/xberg-io/alef/tree/main/.ai-rulez/skills/release-procedure into .gemini/skills/release-procedure/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release-procedure", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install xberg-io/alef release-procedureInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add xberg-io/alef --skill release-procedure -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/xberg-io/alef.git skills-src && mkdir -p .github/skills && cp -r skills-src/.ai-rulez/skills/release-procedure .github/skills/release-procedure && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "release-procedure" agent skill from https://github.com/xberg-io/alef/tree/main/.ai-rulez/skills/release-procedure into .github/skills/release-procedure/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release-procedure", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add xberg-io/alef --skill release-procedure -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install xberg-io/alef release-procedure --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/xberg-io/alef.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.ai-rulez/skills/release-procedure .opencode/skills/release-procedure && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "release-procedure" agent skill from https://github.com/xberg-io/alef/tree/main/.ai-rulez/skills/release-procedure into .opencode/skills/release-procedure/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release-procedure", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
release-procedureCut, tag, and publish an alef release end-to-end. An agent skill from xberg-io/alef.
Release Procedure is an agent skill from xberg-io/alef. Cut, tag, and publish an alef release end-to-end. Use this skill any time the user asks for a release, a version bump, a hotfix tag, or a CHANGELOG roll-up in this repo. Covers the full pipeline: changelog, version sync via Taskfile, Cargo.toml verification, poly lint pass, atomic commit (no AI signatures, no --no-verify when avoidable), git tag, and gh release create (not just a tag).
Its SKILL.md is about 3k 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 Development, covering Changelog and release notes and Linting and formatting. It works with Rust and Git. The repository describes itself as: Generate fully-typed, lint-clean language bindings for Rust libraries across 16 languages. The licence is MIT.
10 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit fc04366. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
gitghcargocurlFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
index.crates.ioFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Release Procedure loads about 3k tokens when it runs. Until then it costs about 102 tokens; SKILL.md has 1,434 words of instructions outside code blocks.
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.
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.
The full file from xberg-io/alef at commit fc04366, republished under its MIT licence (© xberg-io). 1,434 words, ~3,032 tokens.
.claude/skills/release-procedure/SKILL.md (or your agent's skills folder).Cut a new alef version with a verifiable, reproducible procedure. Skip no step. Every release step has a concrete verification — never assume; always check.
CHANGELOG.md — every release has a dated heading and one
bullet per user-visible change. Move entries from [Unreleased] into the new
version section. Group under ### Added, ### Changed (BREAKING),
### Fixed, ### Removed. Never tag a version with an empty section.poly fmt --fix . then poly lint . to fix lint/format issues before
publishing. Re-stage anything the formatter rewrites. Only commit with
--no-verify if a hook is genuinely broken in a way unrelated to the change
— and then file an issue.Co-Authored-By: Claude, no Generated by .... Never.chore(release): X.Y.Z carries only the version bump
and changelog roll. Code fixes live in their own commits, merged before the
release commit.Cargo.toml,
alef.toml, src/core/template_versions.rs, or schemas/alef.schema.json.
task set-version rewrites all four in lockstep.gh release create — a bare git tag is not a release.
The Publish workflow triggers on release: types: [published], so the
GitHub release is literally what runs cargo publish; a tag push alone
runs nothing at all. This is not theoretical: v0.55.2 and v0.55.3 were
tagged and pushed with no release created, and neither ever reached
crates.io. Alef ships as a single crate, so one release means exactly one
cargo publish — no multi-crate sequencing, no index propagation race.git status # working tree clean (or only release-prep diffs)
git fetch origin # inspect freshness without rewriting local commitsIf the release branch has diverged from its upstream, stop and ask how to reconcile it. Do not rebase or merge after committing unless the user explicitly asks for it.
CHANGELOG.md.## [Unreleased] into a new section
## [X.Y.Z] - YYYY-MM-DD (today's date, ISO format).## [Unreleased] heading at the top.! (breaking) in commit messages,
surface it under ### Changed (BREAKING) with explicit migration guidance.git diff CHANGELOG.md should show only adds
in the new section + the moved bullets.#/## lines. A stray heading from a pasted source reparents everything
below it under the wrong version. Before and after any CHANGELOG edit,
grep -c '^## \[' must be unchanged and grep -c '^# ' must be exactly 1
(the file's single top-level title).poly fmt --fix CHANGELOG.md has previously demoted every heading below the
first (rumdl's autofix for a second level-1 heading treats it as a title and
reparents everything that follows). poly.toml's
[fmt.markdown.rumdl] disable already includes "MD025" as the guard — do
not remove it. Re-run the grep -c '^## \[' / grep -c '^# ' check after
any poly fmt pass over this file regardless.task set-version -- X.Y.Z # bumps Cargo.toml, alef.toml, ALEF_REV; regenerates
# schemas/alef.schema.json; runs cargo updateThe set-version task is the only sanctioned way to bump versions in this
repo. It rewrites Cargo.toml (package.version), alef.toml
(alef_version), and src/core/template_versions.rs::ALEF_REV, regenerates
schemas/alef.schema.json (cargo run -- schema --schema-version), then runs
cargo update — all in one shot. Never hand-edit any of these — they must stay
in lockstep. The regenerated schema shows up in the release diff (its $id and
version both carry the new version); that is expected output, not drift.
After the task finishes, verify:
grep -E '^version' Cargo.toml # package version
grep -E '^alef_version' alef.toml # alef.toml mirror
grep ALEF_REV src/core/template_versions.rs # template version pin
grep '"version"' schemas/alef.schema.json # regenerated schemaAll four must match X.Y.Z (the ALEF_REV line and the schema $id both
include a leading v).
poly fmt --fix .
poly lint .Re-stage any files the formatter rewrote. If a lint fails for a real reason, fix
that reason — never bypass with --no-verify to push past a lint failure.
For every fix: or feat: rolled into this release, confirm there is a test
that would have caught the bug or covers the new surface. Add the test now if
missing — release commit goes on top.
git add -A
git commit -m "chore(release): X.Y.Z"The commit subject is exactly chore(release): X.Y.Z. No body unless the
release is large enough to warrant a summary; never add AI attribution.
If gitfluff or another commit-msg hook rewrites the subject in an unhelpful
way, prefer fixing the hook config over --no-verify. When the user has
explicitly authorized --no-verify for this run, document which hooks were
skipped in the release notes.
Push main before tagging. Tagging first and pushing second means a
rebase or a rejected push after the tag exists leaves the tag pointing at a
commit origin/main never contains — --force-with-lease does not work on
tags, so recovering means deleting and recreating the tag. Push main, confirm
it landed, then tag against the now-confirmed commit:
git push origin main
git tag -a vX.Y.Z -m "vX.Y.Z"
git push origin vX.Y.ZThen create the GitHub release — this is the part most likely to be skipped and the most important:
gh release create vX.Y.Z \
--title "vX.Y.Z" \
--notes-from-tag \
--verify-tagIf the changelog entry is rich enough to use as release notes, replace
--notes-from-tag with --notes-file <(awk '/^## \[X.Y.Z\]/,/^## \[/' CHANGELOG.md | head -n -1)
or build a small notes file from the new CHANGELOG section.
For pre-releases (RC, beta), add --prerelease.
The release object existing is not proof the crate shipped — verify the registry, not just the GitHub release:
gh release view vX.Y.Z # release exists with notes
git ls-remote --tags origin vX.Y.Z # tag pushed
gh run list --workflow=publish.yaml --json databaseId,status,conclusion -L 5
gh run view <run-id> --json jobs \
--jq '.jobs[] | select(.name | test("crates")) | {name, conclusion}'
curl -sI -H 'User-Agent: alef-release (contact: <maintainer email>)' \
https://index.crates.io/al/ef/alef | head -1 # 200 if the version is on the indexNotes:
cargo publish already succeeded) — check the crates.io index
before assuming a red run means nothing shipped, and before re-running.gh run rerun --failed <run-id> re-runs only the
failed jobs; confirm which ones actually need it first.For any consumer repo that pins this version, open a follow-up PR that bumps the pin. Don't bundle that into the release commit.
To pick up the release locally, cargo install --path . --force from the repo
root (see the local-alef-install rule — never cargo install alef from
crates.io for testing a pre-release change). Then task clean (cargo clean +
rm -rf .alef/) to reclaim space once the release artifacts are no longer
needed.
gh release create — the crate is never published at all.
Publish fires on release: published, not on the tag. This silently lost
v0.55.2 and v0.55.3; both are tagged on origin and absent from crates.io.## [Unreleased] rolled forward to a new version section.version = "..." in Cargo.toml, alef_version in
alef.toml, or ALEF_REV in src/core/template_versions.rs instead of
using task set-version.--no-verify to skip a real lint failure.chore(release): X.Y.Z atomic.cargo publish for the same version fails loudly, but
the confusion it causes is avoidable.main (see step 6) — recovering from a stranded tag
means delete-and-recreate, not --force-with-lease.Publish run stuck in queued as a code bug — this is commonly
account-wide runner capacity, not this repo. Report it once with the run
link; if it is genuinely wedged rather than merely slow,
gh run cancel --force-cancel <run-id> before retrying (cancel alone can
leave a queued run deadlocked).| Step | Command | What it verifies |
|---|---|---|
| Pre-flight | git status && git fetch origin | Clean tree + remote state |
| Changelog | manual edit of CHANGELOG.md | Every change is documented |
| Version | task set-version -- X.Y.Z then grep -E '^version' Cargo.toml | Crate version updated |
| Lint | poly fmt --fix . && poly lint . | Lint clean |
| Commit | git commit -m "chore(release): X.Y.Z" | Atomic release commit |
| Push main | git push origin main | Tag will land on a commit origin/main actually has |
| Tag | git tag -a vX.Y.Z -m "vX.Y.Z" && git push origin vX.Y.Z | Tag exists remotely |
| Publish | gh release create vX.Y.Z --notes-from-tag --verify-tag | GitHub release exists |
| Verify | gh run view <run-id> --json jobs --jq '...test("crates")...' + crates.io index curl | Crate actually shipped, not just the release object |
© xberg-io, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .ai-rulez/skills/release-procedure of xberg-io/alef.
Open the folder on GitHubat commit fc04366
Release Procedure 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Release Procedure this skillxberg-io/alef | 100 | — | ~3k | Automated safety check: Pass | MIT | |
| Releasexin2017338/lynx-proxy | 502 | — | ~1.1k | Automated safety check: Pass | MIT | |
| Worktrunk Release Workflowmax-sixty/worktrunk | 9.1k | — | ~6.9k | Automated safety check: Pass | Custom licence | |
| PR Pushicebear0828/codex-proxy | 1.8k | — | ~2.2k | Automated safety check: Notes | Custom licence | |
| PR Pushicebear0828/codex-proxy | 1.8k | — | ~2.3k | Automated safety check: Notes | Custom licence | |
| Prepare Releasefrozenlib/parse-display | 193 | — | ~1.3k | Automated safety check: Pass | Apache-2.0 |
xin2017338/lynx-proxy
Publish a new release version of Lynx Proxy. An agent skill from xin2017338/lynx-proxy.
max-sixty/worktrunk
Walks a maintainer through cutting a Worktrunk release: sync the release branch, pass two test gates, review the changes, then publish.
icebear0828/codex-proxy
Package the current working changes into a standards-compliant codex-proxy pull request: branch hygiene, commit message linting, CHANGELOG prompt, conventional commit, push, and gh pr create against…
icebear0828/codex-proxy
Package the current working changes into a standards-compliant codex-proxy pull request: branch hygiene, commit message linting, CHANGELOG prompt, conventional commit, push, and gh pr create against…
frozenlib/parse-display
Prepare parse-display release changes before publishing with a Rust Cargo script when nightly Cargo is available.
codervisor/leanspec
Development workflows, commands, publishing, CI/CD, changelog management, and contribution guidelines for LeanSpec.
xberg-io/alef
Use Alef correctly for Rust-to-polyglot binding generation. An agent skill from xberg-io/alef.
xberg-io/alef
Audit bindings for coverage gaps — verify every public Rust item is exposed across all generated language bindings.
xberg-io/alef
Mechanics of alef's Minijinja template system: which templateenv module to call, how to register a template, inline-template rules, and engine settings.
xberg-io/alef
Treat running alef generate/alef all/alef verify in a consumer repo as an audit, not a build step.
xberg-io/alef
Alef's dominant defect shape: two components read the same config or IR and act on it differently.
Categories
Cut, tag, and publish an alef release end-to-end. An agent skill from xberg-io/alef. Release Procedure is an agent skill from xberg-io/alef. Cut, tag, and publish an alef release end-to-end.
Release Procedure fits situations like: tasks that involve Changelog and release notes; tasks that involve Linting and formatting.
Run `npx skills add xberg-io/alef --skill release-procedure -a claude-code`. Or copy the skill folder (.ai-rulez/skills/release-procedure in xberg-io/alef) into .claude/skills/release-procedure in your project. Claude Code loads it when a task matches its description.
Run `npx skills add xberg-io/alef --skill release-procedure -a codex`. Or copy the skill folder (.ai-rulez/skills/release-procedure in xberg-io/alef) into .agents/skills/release-procedure in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add xberg-io/alef --skill release-procedure -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/release-procedure, .gemini/skills/release-procedure, .github/skills/release-procedure and .opencode/skills/release-procedure in your project.
Going by SKILL.md and its folder, Release Procedure needs the command-line tools its instructions call (git, gh, cargo and curl).
SKILL.md names 1 domain. In commands or code: index.crates.io; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
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.
Release Procedure is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 3k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Release Procedure: Release (xin2017338/lynx-proxy, 502 stars), Worktrunk Release Workflow (max-sixty/worktrunk, 9.1k stars), PR Push (icebear0828/codex-proxy, 1.8k stars) and PR Push (icebear0828/codex-proxy, 1.8k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
xberg-io (a GitHub organization) maintains it in xberg-io/alef, which has 100 GitHub stars. The repository holds 6 skills in this directory. The repository was last updated on October 9, 2026.
Source: xberg-io/alef on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.