ワンクリックで
release
Use when the user wants to release, publish, or ship a new version of fetchbib to PyPI, cut a release, or bump the package version.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Use when the user wants to release, publish, or ship a new version of fetchbib to PyPI, cut a release, or bump the package version.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
| name | release |
| description | Use when the user wants to release, publish, or ship a new version of fetchbib to PyPI, cut a release, or bump the package version. |
| disable-model-invocation | true |
| argument-hint | ["major|minor|patch|X.Y.Z"] |
| allowed-tools | Read Edit Grep Bash(uv run pytest*) Bash(uv build*) Bash(uv tool*) Bash(git status*) Bash(git diff*) Bash(git log*) Bash(git tag*) Bash(git add*) Bash(git commit*) Bash(cat*) Bash(grep*) Bash(rm -rf dist*) |
Publish a new version of fetchbib to PyPI. This skill is the canonical release
process for the project. It is manual-only because it has irreversible,
outward-facing effects (a PyPI upload cannot be undone or reused, and a published
version number can never be republished).
$ARGUMENTS is the requested version: a bump type (major, minor, patch)
or an explicit X.Y.Z. If empty, infer the bump from the changes and confirm
with the user before proceeding.
git status --short. If there are uncommitted changes,
stop and report them — the release must be cut from a clean state.main (git rev-parse --abbrev-ref HEAD).
If not, ask the user whether to continue.uv run pytest and uv run pytest -m integration.
The integration tests hit live APIs and are deselected by default, so they
must be run explicitly here. If anything fails, stop and report.version from pyproject.toml.$ARGUMENTS (SemVer — MAJOR=breaking,
MINOR=new feature/back-compat, PATCH=bug fix/back-compat):
major / minor / patch → bump the corresponding component.X.Y.Z → use it verbatim (sanity-check it is greater than current).git log <last-tag>..HEAD to recommend a bump, then confirm.git tag | grep "vX.Y.Z").Edit pyproject.toml: set version = "X.Y.Z".
Draft the CHANGELOG.md entry from the commits since the last tag
(git log <last-tag>..HEAD --oneline). Add a new section at the top of the
changelog list, following the existing Keep a Changelog format and today's date:
## [X.Y.Z] - YYYY-MM-DD
### Added
- ...
### Changed
- ...
### Fixed
- ...
Only include subsections that have entries. Show the drafted entry to the user and let them edit before committing.
pyproject.toml and CHANGELOG.md together:
Release vX.Y.Z (keep the message free of any AI-assistance mention, per the
repo's git workflow). Do not push yet.This step is irreversible. Stop and get explicit user confirmation before running it — show the version, the changelog entry, and the test results, then ask the user to approve the upload.
After approval, run the bundled script from the repo root:
./.claude/skills/release/publish.sh (cleans dist//build//*.egg-info, runs
uv build, then uv publish). Run it from the repo root so the build operates on
the project's files. If you cannot run an interactive prompt, tell the user to run
it themselves via ! ./.claude/skills/release/publish.sh.
If publishing fails on authentication, the PyPI token needs to be available —
tell the user to set UV_PUBLISH_TOKEN=pypi-... in the environment (or configure
~/.pypirc).
uv tool install --force fetchbibuv tool list | grep fetchbib and confirm the new version is installed.uv tool install -e .git tag -a vX.Y.Z -m "Release vX.Y.Z"git push && git push origin vX.Y.Z.