| name | release |
| description | Cut a new dwarf2cpp release end-to-end — set the version, curate and stamp CHANGELOG, commit, tag, push, then watch the Build workflow publish to PyPI and create the GitHub release. Use when the user asks to release/ship a new version (e.g. "release 0.2.0", "cut a release", "ship v0.1.1"). |
Release dwarf2cpp
Drive the release from a local checkout. Execute the steps in order; do not
skip. Stop only at points flagged STOP.
Pipeline (what happens after the tag is pushed)
build.yml is the only workflow. It builds wheels on every push/PR and, on a
v* tag push, additionally builds the sdist, publishes to PyPI (via OIDC),
and creates the GitHub release with notes extracted from CHANGELOG.md.
git push --follow-tags origin main
|
v
build.yml (on tag)
build_wheels (ubuntu / windows / macos, cp312-abi3)
|
+-- make_sdist
+-- publish (needs build_wheels + make_sdist: PyPI + GitHub release)
The tag push must be authored by the user (not GITHUB_TOKEN) or build.yml
won't trigger — that's why this skill pushes the tag from the local checkout,
never from a workflow.
The version lives in pyproject.toml (version = "X.Y.Z"). The tag is
vX.Y.Z and must equal it (the wheels carry the pyproject version; a mismatch
publishes the wrong version under the tag).
Step 0 — determine the target version
grep '^version' pyproject.toml # current version
git tag --sort=-version:refname | head -n5 # recent tags
git rev-parse --abbrev-ref HEAD # must be main
Compute the next version: default = previous tag's patch + 1; a minor/major
bump only if the user said so. If pyproject.toml's is not already
the target, edit it with . If a bump is needed and the user hasn't
confirmed the target, to confirm.