release
1
总安装量
1
周安装量
#47516
全站排名
安装命令
npx skills add https://github.com/kasperjunge/agent-resources --skill release
Agent 安装分布
mcpjam
1
claude-code
1
windsurf
1
zencoder
1
crush
1
amp
1
Skill 文档
Release
Release workflow for publishing a new version to PyPI via GitHub Actions.
When to Use
- After feature work is complete and committed
- When asked to release, publish, or ship a new version
- When bumping to a new version number
Prerequisites
Before releasing:
- All work committed (clean working tree)
- On
mainbranch /code-reviewpassed/commitcompleted (CHANGELOG updated)
Workflow
âââââââââââââââââââââââââââ
â 1. Verify clean state â
â git status â
âââââââââââââ¬ââââââââââââââ
â
â¼
âââââââââââââ
â Clean? ââââNoâââ STOP. Commit or stash first.
âââââââ¬ââââââ
âYes
â¼
âââââââââââââââââââââââââââ
â 2. Run quality checks â
â ruff â pytest â
âââââââââââââ¬ââââââââââââââ
â
â¼
âââââââââââââ
â All pass? ââââNoâââ STOP. Fix issues first.
âââââââ¬ââââââ
âYes
â¼
âââââââââââââââââââââââââââ
â 3. Bump version â
â agr/__init__.py â
âââââââââââââ¬ââââââââââââââ
â
â¼
âââââââââââââââââââââââââââ
â 4. Update CHANGELOG â
â [Unreleased] â [X.Y.Z]
âââââââââââââ¬ââââââââââââââ
â
â¼
âââââââââââââââââââââââââââ
â 5. Commit + Tag + Push â
â (triggers workflow) â
âââââââââââââ¬ââââââââââââââ
â
â¼
âââââââââââââââââââââââââââ
â 6. Verify release â
â PyPI + GitHub releaseâ
âââââââââââââââââââââââââââ
Step 1: Verify Clean State
git status
git branch --show-current
Requirements:
- Working tree must be clean (no uncommitted changes)
- Must be on
mainbranch
If not clean: Run /commit first or stash changes.
Step 2: Run Quality Checks
ruff check . # Linting
ruff format --check . # Format check
pytest -m "not e2e and not network and not slow" # Tests (matches CI)
All must pass. No exceptions – releases with failing tests are forbidden.
Step 3: Bump Version
Edit agr/__init__.py:
__version__ = "X.Y.Z" # New version
Version format: Follow SemVer
- MAJOR: Breaking changes
- MINOR: New features (backward compatible)
- PATCH: Bug fixes
Step 4: Update CHANGELOG
In CHANGELOG.md, convert the Unreleased section to a versioned release:
Before:
## [Unreleased]
### Added
- New feature
After:
## [Unreleased]
## [X.Y.Z] - YYYY-MM-DD
### Added
- New feature
Keep an empty [Unreleased] section at the top for future changes.
Step 5: Commit, Tag, and Push
git add agr/__init__.py CHANGELOG.md
git commit -m "$(cat <<'EOF'
Release vX.Y.Z
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
EOF
)"
git tag vX.Y.Z
git push origin main
git push origin vX.Y.Z
Order matters: Push commit first, then tag. This ensures the commit exists on remote before the tag references it.
Important: The tag push triggers the publish workflow which:
- Runs quality checks
- Builds and publishes to PyPI
- Extracts release notes from CHANGELOG.md
- Creates GitHub release
Step 6: Verify Release
Watch the Workflow
The tag push triggers .github/workflows/publish.yml which:
- Quality checks: Runs ruff + pytest
- Build: Creates wheel and sdist
- Publish: Uploads to PyPI via trusted publishing (OIDC)
- Release: Creates GitHub release from CHANGELOG.md
# Watch the workflow run to completion
gh run watch --workflow=publish.yml
Verify Everything Succeeded
# Verify GitHub release was created
gh release view vX.Y.Z
# Verify PyPI publication (may take a few minutes)
pip index versions agr
If Workflow Fails
| Failure Point | Result | Action |
|---|---|---|
| Quality checks | No PyPI, no release | Delete tag (git push --delete origin vX.Y.Z && git tag -d vX.Y.Z), fix issue, re-release |
| PyPI publish | No release created | Fix PyPI config, delete tag (git push --delete origin vX.Y.Z && git tag -d vX.Y.Z), re-release |
| Release creation | PyPI has package, no release | Create release manually (see below) |
Manual release creation (if only the release step failed):
VERSION="X.Y.Z"
gh release create "v$VERSION" --title "v$VERSION" --notes-file <(
echo "## What's New in v$VERSION"
echo ""
awk -v ver="$VERSION" '/^## \[/ { if (found) exit; if ($0 ~ "\\[" ver "\\]") found=1; next } found { print }' CHANGELOG.md
echo ""
echo "---"
echo ""
echo "**Full changelog**: https://github.com/kasperjunge/agent-resources/blob/main/CHANGELOG.md"
)
## Red Flags - STOP
- Uncommitted changes â Commit first
- Tests failing â Fix before release
- Not on main branch â Switch to main
- CHANGELOG not updated â Update it
- Skipping quality checks â Never skip
## Common Mistakes
| Mistake | Fix |
|---------|-----|
| Releasing with dirty working tree | Commit or stash first |
| Skipping tests "we tested earlier" | Run tests immediately before release |
| Forgetting to push the tag | Push tag separately after commit |
| Not watching the workflow | Use `gh run watch` to verify full pipeline |
| CHANGELOG not updated for version | Add version section before tagging |
## No Exceptions
- "We already tested it" â Run tests again now
- "It's just a patch" â Full quality checks required
- "Nobody reads release notes" â CHANGELOG is documentation. Use it.
- "We're in a hurry" â Rushed releases cause incidents