You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ci: automate versioning and releases with changesets (#60)
* feat(release): automate versioning and releases with changesets
* chore(release): replace new_changeset.py with `npx @changesets/cli add`
* update
* use package.json
* Update AGENTS.md
* chore(release): drop unused import in sync_versions.py
Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com>
* Update .github/maintainers_guide.md
Co-authored-by: Eden Zimbelman <zim@o526.net>
* Update .github/workflows/release.yml
Co-authored-by: Eden Zimbelman <zim@o526.net>
* Clean up maintainer-guide
* add changeset to package.json
* improve based on feedback
* chore: require Node.js 26+ via engines field
Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com>
---------
Co-authored-by: Claude <svc-devxp-claude@slack-corp.com>
Co-authored-by: Eden Zimbelman <zim@o526.net>
This directory contains [**Changesets**](https://github.com/changesets/changesets) which are markdown files that describe package changes for the next release.
4
+
5
+
For guidance on when and how to add changesets, checkout the [Maintainer's Guide](../.github/maintainers_guide.md#-updating-changesets).
Copy file name to clipboardExpand all lines: .github/contributing.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -39,6 +39,7 @@ For your contribution to be accepted:
39
39
-[x] The test suite must be complete and pass.
40
40
-[x] The changes must be approved by code review.
41
41
-[x] Commits should be atomic and messages must be descriptive. Related issues should be mentioned by Issue number.
42
+
-[x] User-facing changes include a changeset (run `npx changeset add`). See [Updating Changesets](./maintainers_guide.md#-updating-changesets) for the format; releases are automated from these.
42
43
43
44
If the contribution doesn't meet the above criteria, you may fail our automated checks or a maintainer will discuss it with you. You can continue to improve a Pull Request by adding commits to the branch from which the PR was created.
Copy file name to clipboardExpand all lines: .github/maintainers_guide.md
+43-7Lines changed: 43 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -26,7 +26,7 @@ brew update
26
26
brew install pyenv
27
27
```
28
28
29
-
Install necessary Python runtimes for development/testing. You can rely on GitHub Actions workflows for testing with various major versions. <https://github.com/slackapi/bolt-python/tree/main/.github/workflows>
29
+
Install necessary Python runtime for development/testing.
30
30
31
31
```sh
32
32
$ pyenv install 3.14 # select the latest patch version
@@ -46,14 +46,50 @@ source .venv/bin/activate
46
46
47
47
## Versioning
48
48
49
-
Follow the [conventional commit specification][conv-commits]. PR titles and
50
-
commit messages use prefixes like `feat:`, `fix:`, `chore:`, `docs:`, etc.
51
-
First letter after the prefix is lowercase unless it's a proper noun.
49
+
Follow the [conventional commit specification][conv-commits]. PR titles and commit messages use prefixes like `feat:`, `fix:`, `chore:`, `docs:`, etc. First letter after the prefix is lowercase unless it's a proper noun.
52
50
53
-
### Plugin version bumps
51
+
### 🎁 Updating Changesets
54
52
55
-
Every release must bump the `version` field in
56
-
`.claude-plugin/plugin.json` and `.cursor-plugin/plugin.json` following [semver][semver].
53
+
This project uses [Changesets](https://github.com/changesets/changesets) to track changes and automate releases.
54
+
55
+
Each changeset describes a change to the package and its [semver][semver] impact, and a new changeset should be added when updating the package with some change that affects consumers:
56
+
57
+
```sh
58
+
npx changeset add
59
+
```
60
+
61
+
Alternatively, hand-write a file named `.changeset/<anything>.md`, with this format:
62
+
63
+
```md
64
+
---
65
+
"slack": minor
66
+
---
67
+
68
+
Add the channel-digest command
69
+
```
70
+
71
+
The frontmatter key is always `"slack"`; the value is the [semver][semver] bump level, like `patch`, `minor`, or `major`. The body becomes the changelog entry, so write it for a reader of the release notes.
72
+
73
+
Updates to documentation, tests, or CI might not require new entries.
74
+
75
+
When a PR containing changesets is merged to `main`, a different PR is opened or updated using [changesets/action](https://github.com/changesets/action) which consumes the pending changesets, bumps the package version, and updates the `CHANGELOG` in preparation to release.
76
+
77
+
### 🚀 Releases
78
+
79
+
Releasing can feel intimidating at first, but don't fret! Venture on!
80
+
81
+
New official package versions are published when the release PR created from changesets is merged. Follow these steps to build confidence:
82
+
83
+
1.**Run the tests locally**: Before merging the release PR please run all the tests especially the eval ones. If they no longer pass we may need fix it before releasing the changes.
84
+
85
+
2.**Check GitHub**: Please check if issues or pull requests are still open either decide to postpone the release or save those changes for a future update.
86
+
87
+
3.**Review the release PR**: Verify that the version bump matches expectations, `CHANGELOG` entries are clear, and CI checks pass.
88
+
89
+
4.**Merge and approve**: Merge the release PR. It may take up to 24 hours before you see you release in the [Claude Plugins](https://claude.com/plugins/slack) directory.
90
+
91
+
5.**Communicate the release**:
92
+
-**External**: Post in relevant channels (e.g. #lang-javascript, #tools-bolt) on [Slack Community](https://community.slack.com/). Include a link to the release notes.
LLM-judged tests are not run in CI (Ollama + model download would exceed time budget).
61
+
62
+
## Releasing
63
+
64
+
Releases are automated and run in CI — **you never run a release yourself.** Your only release-related task is adding a changeset when a PR makes a user-facing change.
65
+
66
+
See the [maintainers guide](.github/maintainers_guide.md#-updating-changesets) for the format.
67
+
68
+
Everything after that is handled by [changesets](https://github.com/changesets/changesets) and `scripts/changeset_version.sh`: merging to `main` opens a "chore: release" PR, and merging that PR publishes the release.
0 commit comments