release-rust
Skill15 starsChanged 5 months agoMITView on GitHub
Create and publish a new release of the Rust project. Handles version bumping, changelog, tagging, and GitHub Release creation via CI. Use when preparing a release, tagging a version, or publishing to crates.io. Triggers: "release", "publish crate", "new version", "bump version".
- Commits and pushes
In this repository29 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- llms-full.txtllms.txt
- llms.txtllms.txt
- anti-ai-slopSkill
- architecture-diagramSkill
- atomic-commitSkill
- build-rustSkill
- codacySkill
- crates-io-name-checkSkill
- dora-reportSkill
- goap-agentSkill
- harnessSkill
- issue-triageSkill
- lint-rustSkill
- metrics-reporterSkill
- privacy-firstSkill
- reviewing-pull-requestsSkill
- secret-lintSkill
- self-fix-loopSkill
- skill-creatorSkill
- skill-evaluatorSkill
- stacked-prsSkill
- task-decompositionSkill
- test-rustSkill
- tokio-performanceSkill
- triz-analysisSkill
- triz-solverSkill
- verify-actionsSkill
The file
We split this skill into the rules it gives an agent
3 rules. About 0 are common, 3 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 21
Create and publish a new release of the Rust project.
- Distinctive: line 25
All CI checks pass on main
- Distinctive: line 33
Before the very first publish, confirm the crate name is not already taken:
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Skill: release-rust
Purpose
Create and publish a new release of the Rust project.
Prerequisites
- All CI checks pass on main
CHANGELOG.mdupdatedcargo-distinstalled
Steps
0. Verify crate name availability on crates.io (FIRST TIME PUBLISH ONLY)
Before the very first publish, confirm the crate name is not already taken:
# Check via cargo search
cargo search <your-crate-name>
# Or via API (404 = available, 200 = taken)
curl -s https://crates.io/api/v1/crates/<your-crate-name> | python3 -m json.tool | grep '"name"'
# Or open in browser: https://crates.io/crates/<your-crate-name>See
.agents/skills/crates-io-name-check/SKILL.mdfor full naming guidance and best practices.
Do not proceed with publishing if the name is taken — choose a unique name first.
1. Pre-release checks
cargo fmt --all -- --check
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo nextest run --all-features
cargo audit && cargo deny check2. Bump version in Cargo.toml
cargo update --workspace3. Commit and tag
git add Cargo.toml Cargo.lock CHANGELOG.md
git commit -m "chore: release vX.Y.Z"
git tag -a vX.Y.Z -m "Release vX.Y.Z"
git push origin main --tags4. GitHub Release via CI
Pushing a tag triggers .github/workflows/release.yml:
- Release Preflight: Verifies that the tag matches
v$(cat VERSION), checks that the release does not already exist, and asserts manifest consistency. - Release Gates: Runs release-tier quality checks.
- Changelog: Generated using
git-cliffas the canonical source of truth for release notes. - Dist Build: Builds binaries for all targets via cargo-dist with CycloneDX SBOM and cargo-auditable.
- Attestations: Generates signed GitHub build provenance attestations for all release artifacts.
- Creates GitHub Release: Publishes the release with assets.
- Optionally publishes to crates.io.
5. Verifying Release Attestations
Consumers can verify artifact integrity and build provenance using the GitHub CLI:
gh attestation verify <binary-archive-or-file> --owner d-oitVersion Scheme
MAJOR.MINOR.PATCH(Semantic Versioning)- Breaking = MAJOR, features = MINOR, fixes = PATCH
Success Criteria
- Tag on GitHub
- Release with binaries created
- CHANGELOG updated
- Crate name verified unique on crates.io (first publish)
Rationalizations
| Rationalization | Reality |
| "I'll skip the pre-release checks to save time." | Publishing broken code breaks downstream users. Always run the full check suite. |
| "The changelog can be updated after release." | Users read the changelog to understand what changed. Update it before tagging. |
| "I'll just push the tag directly." | Use git tag -a with a message. Tags without messages are unhelpful in history. |
Red Flags
- Pushing a tag without running pre-release checks
- Bumping the version without updating CHANGELOG.md
- Publishing to crates.io without verifying crate name availability
References
GH CLI Usage
Post-release failure tracking uses gh issue create directly:
# Create a DORA FDRT tracking issue on release failure
gh issue create \
--title "🚨 Release vX.Y.Z failed post-release health check" \
--label "hotfix,release-failure" \
--body-file .github/ISSUE_TEMPLATE/release-failure.mdThis is preferred over actions/github-script for single-purpose issue creation.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

