Push release
Cut a new release - bump the version in pyproject.toml, tag, and push to trigger PyPI publish and MCP Registry publish via GitHub Actions. Use when the user asks to release, ship a version, bump and tag, cut a hotfix, or publish to PyPI.From its SKILL.md
npx -y skills add Miyamura80/MCP-Template --skill push-releaseAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 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
4.4 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it
Push Release
This project ships one wheel to PyPI containing all three console scripts (mymcp, mymcp-api, mymcp-mcp) at a single version. One tag push, one PyPI publish - there is no separate PyPI step for the API or MCP. Downstream users pip install the package and run whichever entry point they want; the API and MCP server aren't deployed by this repo. The MCP Registry entry refreshes automatically on the same tag (mcp-registry-publish.yml), so it's discovery metadata, not a second distribution.
Workflow
Execute these steps in order. Confirm with the user before running make bump_version and before pushing - tags are public and a published version cannot be unpublished from PyPI.
1. Pre-flight
Make sure main is clean and CI passes locally:
git status # working tree must be clean
git rev-parse --abbrev-ref HEAD # must be on main
make ci && make test
If anything fails, stop and report. Do not proceed with a broken main.
2. Pick the bump level
Ask the user which bump if not specified:
BUMP=patch(default) - bug fixes, no API change.0.1.1 -> 0.1.2BUMP=minor- additive features, backwards compatible.0.1.1 -> 0.2.0BUMP=major- breaking changes.0.1.1 -> 1.0.0
3. Bump the version
make bump_version BUMP=patch # or minor / major
This:
- updates
pyproject.tomlversion = "x.y.z" - creates a
Release vX.Y.Zcommit - creates an annotated tag
vX.Y.Z
The Makefile target refuses to run if the working tree or staging area is dirty.
4. Push with tags
git push origin main --follow-tags
The tag push is what triggers the release - without --follow-tags only the commit is pushed and nothing publishes.
5. Verify
Two GitHub Actions workflows fire on the v* tag:
- Release (
.github/workflows/release.yml)- Runs
make ciandmake test - Builds the package with
uv build - Publishes to PyPI via OIDC trusted publishing
- Creates a GitHub Release with auto-generated notes, wheel, and sdist
- Runs
- MCP Registry Publish (
.github/workflows/mcp-registry-publish.yml)- Authenticates via GitHub OIDC
- Publishes the MCP server to the MCP Registry
Check:
- GitHub Actions tab - both workflows green
- GitHub Releases - new
vX.Y.Zentry with assets - MCP Registry - updated server entry
Hotfix release
For an urgent fix on top of an existing release without picking up unrelated main changes:
git checkout -b hotfix/<description> v0.1.1
# apply the fix
make ci && make test
# open a PR to main, squash-merge it
git checkout main && git pull
make bump_version BUMP=patch
git push origin main --follow-tags
Version is single-sourced
The version lives in one place: pyproject.toml -> version = "x.y.z". All three interfaces read it at runtime via importlib.metadata.version(). Never hand-edit version strings in source files.
PyPI trusted publishing (one-time setup)
Only relevant if PyPI publishing has never been configured for this repo. The release workflow uses PyPI trusted publishing, so no API tokens are needed:
- Create the package on pypi.org.
- Add a trusted publisher under the package settings:
- Owner: GitHub username or org
- Repository: GitHub repository name
- Workflow:
release.yml - Environment:
release
- Create a
releaseenvironment in GitHub (Settings -> Environments).
After this is done once, every tag push auto-publishes.
What can go wrong
- Working tree not clean -
make bump_versionaborts. Commit or stash first. - Pushed commit without tag - nothing publishes. Push the tag separately:
git push origin vX.Y.Z. - CI fails inside
release.yml- the PyPI publish step never runs, but the tag exists. Fix the cause onmain, then either bump again to a new patch or delete the tag (git push --delete origin vX.Y.Z) and re-run after fixing - delete only if no one has pulled it. - PyPI publish succeeds but MCP Registry fails - the version is live on PyPI; fix the registry workflow and re-run it via workflow dispatch.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.
Gives 0 of the 12 instructions most ship operate skills give in ~1.1k tokens
Counted across 779 of the 1,178 authors here whose files we hold, read 2026-08-07
- Document a rollback plan before deploymentin 41 of 779, across 22 files
- Update the changelogin 21 of 779, across 19 files
- Run the test suitein 20 of 779
- Create an annotated git tagin 20 of 779
- Clean up feature flags after full rolloutin 18 of 779, across 10 files
- Verify deployment health after launchin 18 of 779, across 10 files
- Test both feature flag statesin 17 of 779, across 9 files
- Verify the working tree is cleanin 17 of 779
- Make database migrations backward-compatiblein 16 of 779, across 8 files
- Set up error monitoring before launchin 15 of 779, across 7 files
- Monitor metrics at each rollout stagein 14 of 779, across 5 files
- Create a GitHub releasein 14 of 779
Said here and by no other author read
- ask the user which bump level to apply
- push main using the follow-tags flag
- verify both github actions workflows pass
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.