Skip to content

Commit 63e8300

Browse files
committed
feat: add AI-powered release notes for stable releases
Install semantic-release-ai-notes and configure all 8 packages to use AI-generated release notes on stable branch, falling back to the conventional generator on prerelease (main/next). - Add semantic-release-ai-notes ^0.2.3 to pnpm catalog - Conditionally swap notes plugin based on isPrerelease in each .releaserc.cjs - Add ANTHROPIC_API_KEY to all release workflow env blocks
1 parent 0f39492 commit 63e8300

19 files changed

Lines changed: 1047 additions & 440 deletions

.github/workflows/release-cli.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,5 +88,6 @@ jobs:
8888
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
8989
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
9090
LINEAR_TOKEN: ${{ secrets.LINEAR_TOKEN }}
91+
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
9192
working-directory: apps/cli
9293
run: pnpx semantic-release

.github/workflows/release-esign.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,5 +57,6 @@ jobs:
5757
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
5858
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
5959
LINEAR_TOKEN: ${{ secrets.LINEAR_TOKEN }}
60+
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
6061
working-directory: packages/esign
6162
run: pnpx semantic-release

.github/workflows/release-mcp.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,5 +66,6 @@ jobs:
6666
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
6767
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
6868
LINEAR_TOKEN: ${{ secrets.LINEAR_TOKEN }}
69+
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
6970
working-directory: apps/mcp
7071
run: pnpx semantic-release

.github/workflows/release-react.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,5 +57,6 @@ jobs:
5757
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
5858
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
5959
LINEAR_TOKEN: ${{ secrets.LINEAR_TOKEN }}
60+
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
6061
working-directory: packages/react
6162
run: pnpx semantic-release

.github/workflows/release-sdk.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ jobs:
110110
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
111111
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
112112
LINEAR_TOKEN: ${{ secrets.LINEAR_TOKEN }}
113+
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
113114
working-directory: packages/sdk
114115
run: pnpx semantic-release
115116

.github/workflows/release-superdoc.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,5 +83,6 @@ jobs:
8383
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
8484
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
8585
LINEAR_TOKEN: ${{ secrets.LINEAR_TOKEN }}
86+
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
8687
working-directory: packages/superdoc
8788
run: pnpx semantic-release

.github/workflows/release-template-builder.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,5 +57,6 @@ jobs:
5757
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
5858
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
5959
LINEAR_TOKEN: ${{ secrets.LINEAR_TOKEN }}
60+
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
6061
working-directory: packages/template-builder
6162
run: pnpx semantic-release

.github/workflows/release-vscode-ext.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,3 +55,4 @@ jobs:
5555
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }}
5656
VSCE_PAT: ${{ secrets.VSCE_PAT }}
5757
LINEAR_TOKEN: ${{ secrets.LINEAR_TOKEN }}
58+
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}

apps/cli/.releaserc.cjs

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,26 @@ require('../../scripts/semantic-release/patch-commit-filter.cjs')([
2121

2222
const branch = process.env.GITHUB_REF_NAME || process.env.CI_COMMIT_BRANCH;
2323

24+
const branches = [
25+
{ name: 'stable', channel: 'latest' },
26+
{ name: 'main', prerelease: 'next', channel: 'next' },
27+
];
28+
29+
const isPrerelease = branches.some(
30+
(b) => typeof b === 'object' && b.name === branch && b.prerelease,
31+
);
32+
33+
// Use AI-powered notes for stable releases, conventional generator for prereleases
34+
const notesPlugin = isPrerelease
35+
? '@semantic-release/release-notes-generator'
36+
: ['semantic-release-ai-notes', { style: 'concise' }];
37+
2438
const config = {
25-
branches: [
26-
{ name: 'stable', channel: 'latest' },
27-
{ name: 'main', prerelease: 'next', channel: 'next' },
28-
],
39+
branches,
2940
tagFormat: 'cli-v${version}',
3041
plugins: [
3142
'@semantic-release/commit-analyzer',
32-
'@semantic-release/release-notes-generator',
43+
notesPlugin,
3344
['@semantic-release/npm', { npmPublish: false }],
3445
[
3546
'@semantic-release/exec',
@@ -41,10 +52,6 @@ const config = {
4152
],
4253
};
4354

44-
const isPrerelease = config.branches.some(
45-
(b) => typeof b === 'object' && b.name === branch && b.prerelease,
46-
);
47-
4855
if (!isPrerelease) {
4956
config.plugins.push([
5057
'@semantic-release/git',

apps/mcp/.releaserc.cjs

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,29 @@
11
/* eslint-env node */
22
const branch = process.env.GITHUB_REF_NAME || process.env.CI_COMMIT_BRANCH;
33

4+
const branches = [
5+
{ name: 'stable', channel: 'latest' },
6+
{ name: 'main', prerelease: 'next', channel: 'next' },
7+
];
8+
9+
const isPrerelease = branches.some((b) => typeof b === 'object' && b.name === branch && b.prerelease);
10+
11+
// Use AI-powered notes for stable releases, conventional generator for prereleases
12+
const notesPlugin = isPrerelease
13+
? '@semantic-release/release-notes-generator'
14+
: ['semantic-release-ai-notes', { style: 'concise' }];
15+
416
const config = {
5-
branches: [
6-
{ name: 'stable', channel: 'latest' },
7-
{ name: 'main', prerelease: 'next', channel: 'next' },
8-
],
17+
branches,
918
tagFormat: 'mcp-v${version}',
1019
plugins: [
1120
'semantic-release-commit-filter',
1221
'@semantic-release/commit-analyzer',
13-
'@semantic-release/release-notes-generator',
22+
notesPlugin,
1423
['@semantic-release/npm'],
1524
],
1625
};
1726

18-
const isPrerelease = config.branches.some((b) => typeof b === 'object' && b.name === branch && b.prerelease);
19-
2027
if (!isPrerelease) {
2128
config.plugins.push([
2229
'@semantic-release/git',

0 commit comments

Comments
 (0)