agentsclimarketplace

Release prep

Skill rolling-codes/dev-workflow-pack/skills/release-prep

Use this to validate a release before it ships — detect version drift across all sources, verify the changelog, confirm tests pass, and produce a go/no-go checklist — when the user is about to tag or publish: "ready to release", "pre-release check", "can I ship this", "version drift", "about to tag"; NOT for writing the changelog itself (changelog), NOT for the tag and publish operations (dev-workflow), and NOT for authoring tests (test-strategy).From its SKILL.md

Install
npx -y skills add rolling-codes/dev-workflow-pack --skill release-prep

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

6.3 KB, as published. Nobody here has run it

Release Prep

Catch the things that break releases — version drift, stale changelogs, missing assets — before they land in a tag. Works for Python packages and .NET projects; handles both in the same repo if needed.

For other stacks (Go, Node, Rust, etc.): check for the canonical version file (go.mod, package.json, Cargo.toml) and adapt the drift checks — the principles are the same even if the file paths differ.

Iron Law

No "Ready to tag" verdict while any checklist item is failing or unchecked — because a tag is the point of no return, and a checklist that rounds ❌ up to ✅ is worse than no checklist: it converts a known risk into a certified one.

Red Flags — Rationalizations to Refuse

Excuse the agent might generateWhy it's wrongWhat to do instead
"Tests passed earlier this session — rerunning for the checklist is redundant."The checklist certifies the current tree, not a memory. Any commit since the last run invalidates the result.Run the test step fresh against the tree being tagged.
"The drift is just a README badge — cosmetic, I'll mark it ✅ with a note."Drift sources are how wrong-version releases ship. The checklist has no 'mostly consistent' state.Report it as ❌ with file and value. The user decides whether to ship anyway.
"The user is in a hurry — tests pass, so I'll skip the build/packaging step."Passing tests don't prove the artifact builds. A broken sdist or exe discovered after tagging costs a release redo.Run the build check. It's one command per stack.

1. Detect the project type

ls pyproject.toml setup.py setup.cfg 2>/dev/null   # Python
find . -name "*.csproj" -not -path "*/obj/*" | head -5  # .NET
ls package.json go.mod Cargo.toml 2>/dev/null       # Node / Go / Rust

2. Extract the canonical version

Python

grep -E '^version\s*=' pyproject.toml | head -1
grep -rE '__version__\s*=' src/ easycord/ | head -3

.NET

grep -E '<(Version|AssemblyVersion|FileVersion)>' **/*.csproj

Node

node -p "require('./package.json').version"

Go

grep '^module\|^go ' go.mod | head -2
# Version typically lives in a VERSION file or git tag — check both:
cat VERSION 2>/dev/null || git describe --tags --abbrev=0

Rust

grep '^version' Cargo.toml | head -1

If multiple sources already disagree, report Drift Finding #1 before continuing.


3. Check for version drift

Python drift sources

SourceHow to check
README badgesgrep -oE 'badge/v[^-]+-' README.md
CHANGELOG.md headingFirst ## [x.y.z] entry
__init__.py / _version.pygrep __version__
GitHub Actions asset names.github/workflows/*.yml — hardcoded version strings
docs/conf.pygrep ^release
check_release_metadata.pyRun it if present: python scripts/check_release_metadata.py

.NET drift sources

SourceHow to check
All .csproj filesgrep -rE '<Version>' --include="*.csproj"
AssemblyInfo.csgrep AssemblyVersion
README / docsGrep for version string
GitHub Actions workflowsGrep for hardcoded version strings

Report every mismatch with the file and the value found.


4. Verify the changelog

head -60 CHANGELOG.md

Check:

  • Entry for the release version exists (not just [Unreleased])
  • Entry has at least one item under Added / Changed / Fixed
  • Date is present and correct: ## [1.2.3] - YYYY-MM-DD
  • [Unreleased] is still present above for future work

If the changelog only has [Unreleased] and no dated entry, the changelog skill needs to run first. Say so and stop.


5. Confirm tests pass

Python

pytest --tb=short -q 2>&1 | tail -20

.NET

dotnet test --no-build --verbosity minimal 2>&1 | tail -20

If tests fail: stop here. A release with failing tests is not ready.

Report the failure count and the first failing test name. Suggest next steps:

  • Fix the failures, then re-run release-prep
  • Open a GitHub issue to track each failure: gh issue create --title "test: [test name] failing on release branch" --label "bug"
  • Or, if failures are known/pre-existing and intentionally deferred: ask the user to confirm before proceeding

6. Check build / packaging

Python

python -m build --sdist --wheel 2>&1 | tail -10
ls dist/

.NET

dotnet publish -c Release -r win-x64 --self-contained true \
  -p:PublishSingleFile=true -o publish_check 2>&1 | tail -10

7. Output the release checklist

Pre-fill each item as ✅ or ❌ based on findings:

Release checklist — vX.Y.Z

Version consistency
  ✅ pyproject.toml: 5.43.0
  ✅ README badge: 5.43.0
  ❌ docs/conf.py: 5.42.0  ← NEEDS FIX
  ✅ CHANGELOG.md heading: 5.43.0

Changelog
  ✅ Entry for v5.43.0 present
  ✅ At least one item documented
  ✅ Date present

Tests
  ✅ 534 passed, 0 failed

Build
  ✅ Wheel and sdist built cleanly

Ready to tag: NO — fix 1 drift item above first.

If everything passes: "Ready to tag." Provide the git tag + git push commands.


8. Offer next steps

Fix the drift items above, or should I draft the git tag and GitHub release notes?


If this fails

  • Build fails: check for missing dependencies or environment issues; don't tag until the build is clean
  • No CHANGELOG entry: run the changelog skill first, then return here
  • Version drift: fix the drifted file(s), commit with chore: sync version to X.Y.Z, then re-run

Next Step

After a clean checklist → use commit-message to write the tag commit message, then:

git tag -a vX.Y.Z -m "Release vX.Y.Z"
git push origin vX.Y.Z

Then use dev-workflow (gh release create) to publish the GitHub release.

Keep looking

Skills are one crate of 627,801. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.