release-rust-crates-iolisted
Install: claude install-skill glslang/windbg-mcp
# Release Rust Crate to crates.io
End-to-end release: confirm version → mandatory preflight checks → user-confirmed tag → `cargo publish` → GitHub tag/release → smoke test against the published crate on crates.io.
**Every step and every check is mandatory.** Do not skip, defer, or proceed on failure. Stop and ask the user only when a gate fails or a decision is required.
## 0. Detect repo and crate
From the repo root (or the path the user gave):
```bash
git rev-parse --show-toplevel
cargo metadata --no-deps --format-version 1
```
Determine:
- **Package name** and **current version** from the target crate's `Cargo.toml` (`[package].name`, `[package].version`).
- **Workspace?** If multiple publishable crates, list them and confirm which to release (or release in dependency order — dependencies before dependents).
- **Default branch** (`main` / `master`).
If `[package].publish = false`, stop — crate is not publishable.
If the working tree has uncommitted changes, ask whether to commit them first or stash. Do not tag or publish on a dirty tree unless the user explicitly approves.
## 1. Confirm release version (required — do not proceed without approval)
Before any checks or version edits, present the release target and **wait for explicit confirmation**.
Gather context:
```bash
# Current version (workspace: add -p <crate>)
cargo pkgid 2>/dev/null | sed 's/.*#//' || grep '^version' Cargo.toml
# Latest published on crates.io (may 404 for first release)
curl -s "https: