Release
Table of Contents
When to use
- You need to ship a new version using
just release X.Y.Z.
- The release must be semver-valid, greater than current, and performed from
main.
- The flow includes Cargo.toml version bumps, lockfile update, tag, and crates.io publish.
Required inputs
- Target version
X.Y.Z (prompt if missing).
- Repo root and current version (read from
Cargo.toml).
- Confirmation you are on
main with a clean working tree.
- Cargo credentials available (
cargo login or CARGO_REGISTRY_TOKEN).
Deliverables
- A completed release run (or a clear stop with error context).
- A new version commit + tag (created by
just release).
- Confirmation that publish/tag steps were invoked.
Failure mode
If any precondition fails, stop before the release command, report the exact blocker, and leave the repo unchanged rather than improvising around policy or credential problems.
Standards snapshot (March 2026)
- Releases are high-risk mutating operations: verify branch, cleanliness, credentials, and version ordering before any write.
- Prefer a single canonical release path over manual patchwork unless the user explicitly requests recovery from a failed release.
- Keep evidence explicit: current version, target version, branch state, tree state, and tag state should all be visible in the reasoning.
- Never retry a failed release command blindly; diagnose first, then resume with intent.
Principles
- Validate before action: semver and version ordering come first.
- Single-threaded, fail-fast: stop immediately on any error.
- Keep the release path minimal and reproducible.
Procedure
- Confirm branch and clean state.
git branch --show-current should be main.
git status -sb should be clean.
- Determine current version and validate the target.
- Read
Cargo.toml current version.
- Ensure target is valid semver and greater than current.
- Confirm credentials are present (do not print secrets).
cargo login is configured OR CARGO_REGISTRY_TOKEN is set.
- Run the release.
- If any step fails, stop and report the error without retrying blindly.
- After success, summarize the exact version shipped and the release artifacts created.
Examples
just release 1.4.2
Validation
- Fail fast: stop at the first failed check or command.
git status -sb shows clean tree and main before running.
git tag --list "vX.Y.Z" returns nothing before release.
just release X.Y.Z completes without errors.
- The final state includes the new tag and a clean post-release tree unless the repo's release process intentionally leaves generated changes.
Anti-patterns
- Releasing from a dirty working tree or non-
main branch.
- Skipping version validation or using a non-semver version.
- Re-running
just release after a failure without fixing the root cause.
Constraints
- Redact secrets/PII by default.
- Keep
name and description single-line YAML scalars (quote if needed).
- Do not add new dependencies without explicit user approval.
Philosophy and tradeoffs
- Use this skill when consistent decision-making matters more than one-off execution because project context should drive the approach.
- Principle and mindset: prioritize tradeoffs and constraints over rigid checklists; understand why each step exists.
- Ask this to keep outcomes robust: Why is this the right default, and what could change this outcome?
- How do we adapt if constraints shift?
- What evidence is needed before choosing one path over another?
Anti-patterns and caveats
- Avoid applying this playbook generically without checking repository-specific context.
- NEVER skip required validation gates when behavior changes.
- DO NOT use this skill as a rigid replacement for engineering judgment.
- DON'T ignore warnings or assume one pattern fits all repos.
- Common pitfall: treating anti-patterns as optional.
- Incorrect assumptions here can lead to fragile guidance.
- Warning: wrong sequencing can create avoidable regressions.
Variation and adaptation
- Vary the workflow by team size, risk, and deployment target.
- Use different strategies for small, medium, and large changes.
- Adapt recommendations to the specific environment and avoid repetitive templates.
- Avoid generic or cookie-cutter responses; craft context-specific alternatives.
- Keep outputs diverse and not repetitive.
- Converge on a custom path only after evidence review.
- Different constraints should produce different, non-generic recommendations.
Empowering execution style
- Be capable of exploring multiple options and enabling the team to make safe decisions.
- Unlock confidence by explaining options and tradeoffs clearly.
- Feel free to be creative while staying rigorous and precise.
- Push boundaries with practical alternatives when simple recipes fail.
- Enable outcomes-oriented problem solving.
Decision feedback protocol
See Also
| Skill |
When to use together |
| [[gh-workflow]] |
Manage the PR and merge lifecycle before cutting a release |
| [[verification-before-completion]] |
Validate all checks pass before tagging |
| [[ce-plan]] |
Plan the release checklist before executing |
Topic map: [[backend-platform]]
Decision feedback protocol (required):
- If post-run feedback capture is enabled for this runtime, emit a non-blocking
post_run_feedback event via request_user_input after result delivery.
- Capture:
decision (accepted|partial|rejected|deferred), outcome (good|neutral|bad|unknown), and confidence (high|medium|low).
- Persist with:
python3 utilities/skill-builder/scripts/record_skill_feedback.py --skill-path <path/to/SKILL.md> --decision <...> --outcome <...> --confidence <...> --notes "...".
- The recorder tags
subject (for example ui, code_review, backend, security) for cross-domain quality analytics.
Gotchas
- None yet. Capture recurring failures here as symptom -> cause -> do instead -> check.
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: release-493description: Cut a clean semver release from the main branch using the repo's release flow. Use when the user wants a tagged Cargo release, not generic deployment or changelog drafting. Use when this capability is needed.4---56# Release78## Table of Contents9- [Scope and triggers](#scope-and-triggers)10- [Required inputs](#required-inputs)11- [Deliverables](#deliverables)12- [Failure mode](#failure-mode)13- [Standards snapshot](#standards-snapshot-march-2026)14- [Procedure](#procedure)15- [Validation](#validation)16- [Anti-patterns](#anti-patterns)17- [Decision feedback protocol](#decision-feedback-protocol)1819## When to use20- You need to ship a new version using `just release X.Y.Z`.21- The release must be semver-valid, greater than current, and performed from `main`.22- The flow includes Cargo.toml version bumps, lockfile update, tag, and crates.io publish.2324## Required inputs25- Target version `X.Y.Z` (prompt if missing).26- Repo root and current version (read from `Cargo.toml`).27- Confirmation you are on `main` with a clean working tree.28- Cargo credentials available (`cargo login` or `CARGO_REGISTRY_TOKEN`).2930## Deliverables31- A completed release run (or a clear stop with error context).32- A new version commit + tag (created by `just release`).33- Confirmation that publish/tag steps were invoked.3435## Failure mode36If any precondition fails, stop before the release command, report the exact blocker, and leave the repo unchanged rather than improvising around policy or credential problems.3738## Standards snapshot (March 2026)39- Releases are high-risk mutating operations: verify branch, cleanliness, credentials, and version ordering before any write.40- Prefer a single canonical release path over manual patchwork unless the user explicitly requests recovery from a failed release.41- Keep evidence explicit: current version, target version, branch state, tree state, and tag state should all be visible in the reasoning.42- Never retry a failed release command blindly; diagnose first, then resume with intent.4344## Principles45- Validate before action: semver and version ordering come first.46- Single-threaded, fail-fast: stop immediately on any error.47- Keep the release path minimal and reproducible.4849## Procedure501) Confirm branch and clean state.51 - `git branch --show-current` should be `main`.52 - `git status -sb` should be clean.532) Determine current version and validate the target.54 - Read `Cargo.toml` current version.55 - Ensure target is valid semver and greater than current.563) Confirm credentials are present (do not print secrets).57 - `cargo login` is configured OR `CARGO_REGISTRY_TOKEN` is set.584) Run the release.59 - `just release X.Y.Z`605) If any step fails, stop and report the error without retrying blindly.616) After success, summarize the exact version shipped and the release artifacts created.6263## Examples64```bash65just release 1.4.266```6768## Validation69- Fail fast: stop at the first failed check or command.70- `git status -sb` shows clean tree and `main` before running.71- `git tag --list "vX.Y.Z"` returns nothing before release.72- `just release X.Y.Z` completes without errors.73- The final state includes the new tag and a clean post-release tree unless the repo's release process intentionally leaves generated changes.7475## Anti-patterns76- Releasing from a dirty working tree or non-`main` branch.77- Skipping version validation or using a non-semver version.78- Re-running `just release` after a failure without fixing the root cause.7980## Constraints81- Redact secrets/PII by default.82- Keep `name` and `description` single-line YAML scalars (quote if needed).83- Do not add new dependencies without explicit user approval.8485<!-- skill-score-boost-v1 -->86## Philosophy and tradeoffs87- Use this skill when consistent decision-making matters more than one-off execution because project context should drive the approach.88- Principle and mindset: prioritize tradeoffs and constraints over rigid checklists; understand why each step exists.89- Ask this to keep outcomes robust: Why is this the right default, and what could change this outcome?90- How do we adapt if constraints shift?91- What evidence is needed before choosing one path over another?9293## Anti-patterns and caveats94- Avoid applying this playbook generically without checking repository-specific context.95- **NEVER** skip required validation gates when behavior changes.96- **DO NOT** use this skill as a rigid replacement for engineering judgment.97- **DON'T** ignore warnings or assume one pattern fits all repos.98- Common pitfall: treating anti-patterns as optional.99- Incorrect assumptions here can lead to fragile guidance.100- Warning: wrong sequencing can create avoidable regressions.101102## Variation and adaptation103- Vary the workflow by team size, risk, and deployment target.104- Use different strategies for small, medium, and large changes.105- Adapt recommendations to the specific environment and avoid repetitive templates.106- Avoid generic or cookie-cutter responses; craft context-specific alternatives.107- Keep outputs diverse and not repetitive.108- Converge on a custom path only after evidence review.109- Different constraints should produce different, non-generic recommendations.110111## Empowering execution style112- Be capable of exploring multiple options and enabling the team to make safe decisions.113- Unlock confidence by explaining options and tradeoffs clearly.114- Feel free to be creative while staying rigorous and precise.115- Push boundaries with practical alternatives when simple recipes fail.116- Enable outcomes-oriented problem solving.117118## Decision feedback protocol119120## See Also121122| Skill | When to use together |123|---|---|124| [[gh-workflow]] | Manage the PR and merge lifecycle before cutting a release |125| [[verification-before-completion]] | Validate all checks pass before tagging |126| [[ce-plan]] | Plan the release checklist before executing |127128**Topic map:** [[backend-platform]]129130<!-- decision-feedback-protocol:v2 -->131**Decision feedback protocol (required):**132- If post-run feedback capture is enabled for this runtime, emit a non-blocking `post_run_feedback` event via `request_user_input` after result delivery.133- Capture: `decision` (`accepted|partial|rejected|deferred`), `outcome` (`good|neutral|bad|unknown`), and `confidence` (`high|medium|low`).134- Persist with: `python3 utilities/skill-builder/scripts/record_skill_feedback.py --skill-path <path/to/SKILL.md> --decision <...> --outcome <...> --confidence <...> --notes "..."`.135- The recorder tags `subject` (for example `ui`, `code_review`, `backend`, `security`) for cross-domain quality analytics.136<!-- /decision-feedback-protocol -->137138## Gotchas139- None yet. Capture recurring failures here as symptom -> cause -> do instead -> check.140141---142> Converted and distributed by [TomeVault](https://tomevault.io/claim/jscraik) — claim your Tome and manage your conversions.143<!-- tomevault:4.0:skill_md:2026-04-13 -->