원클릭으로
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.