Skip to content

Commit ddc10f1

Browse files
committed
feat(kit): publishing necessary stuff for kit
1 parent fad665a commit ddc10f1

8 files changed

Lines changed: 169 additions & 148 deletions

File tree

.agents/skills/qalma-release/SKILL.md

Lines changed: 56 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -5,45 +5,54 @@ description: Guide npm releases and the publish pipeline for @qalma/editor and @
55

66
# Qalma Release
77

8-
`@qalma/editor` and `@qalma/skills` are published to npm under the `latest`
9-
dist-tag while the public API stabilizes. The packages are pre-1.0 and now use
10-
beta prereleases for public early-adopter cuts. There is no stable version to
11-
reserve `latest` for yet, so `latest` tracks the newest beta and remains what
12-
npmjs features and what plain installs resolve.
13-
14-
Releases are tag-driven: a `vX.Y.Z[-prerelease]` git tag pushed to `main`
15-
triggers GitHub Actions, which builds, re-derives the version from the tag, and
16-
publishes both packages via npm's OIDC Trusted Publisher (no npm token in CI).
17-
When a stable `1.0.0` is cut, publish it as `latest` and move later
18-
prereleases back to a separate `next`/`beta` dist-tag.
8+
`@qalma/editor`, `@qalma/skills`, and `@qalma/kit` are published to npm under
9+
the `latest` dist-tag while the public API stabilizes. The packages are
10+
pre-1.0, but public releases use normal semver versions without prerelease
11+
suffixes. The scripted release path bumps the minor version on every release
12+
(`0.2.0`, `0.3.0`, and so on).
13+
14+
Releases are tag-driven: a `vX.Y.Z` git tag pushed to `main` triggers GitHub
15+
Actions, which builds, re-derives the version from the tag, and publishes all
16+
three packages via npm's OIDC Trusted Publisher (no npm token in CI).
1917

2018
For the full architecture, history, and troubleshooting, read
2119
[release-pipeline.md](references/release-pipeline.md).
2220

2321
## Cut a Release
2422

2523
1. Make sure `main` is clean and up to date (`git status`, `git pull`).
26-
2. Preview the beta bump:
27-
- First beta from the alpha line: `pnpm release:beta:init:dry-run`
28-
(uses `preminor --preid beta`, e.g. `0.1.0-beta.0`).
29-
- Subsequent betas: `pnpm release:beta:dry-run`
30-
(uses `prerelease --preid beta`, e.g. `0.1.0-beta.1`).
31-
- Explicit stable or one-off version:
32-
`pnpm nx release <version> --skip-publish --dry-run`.
33-
3. Run the matching release command:
34-
- First beta: `pnpm release:beta:init`.
35-
- Subsequent beta: `pnpm release:beta`.
36-
- Explicit stable or one-off version:
37-
`pnpm nx release <version> --skip-publish`, then
38-
`node tools/sync-changelog-doc.mjs`.
24+
2. If the current version is still on the historical beta line, bootstrap the
25+
first normal semver release explicitly:
26+
27+
```sh
28+
pnpm nx release 0.2.0 --skip-publish --dry-run
29+
pnpm nx release 0.2.0 --skip-publish
30+
node tools/sync-changelog-doc.mjs
31+
```
32+
33+
This one explicit version is needed because Nx's native `minor` bump from
34+
`0.1.0-beta.4` resolves to `0.1.0`, while Qalma's new policy is to move to
35+
the next minor without a suffix.
36+
37+
3. After `0.2.0`, preview the next minor bump with `pnpm release:dry-run`.
38+
4. After `0.2.0`, run the normal release command with `pnpm release`.
39+
40+
For an explicit one-off version, call Nx directly so the version argument is
41+
passed before the changelog-sync command:
42+
43+
```sh
44+
pnpm nx release <version> --skip-publish
45+
node tools/sync-changelog-doc.mjs
46+
```
3947

4048
These scripts or commands run `nx release ... --skip-publish`, then sync the
4149
generated editor changelog into the docs changelog. The release portion:
4250
- Runs the `preVersionCommand`
43-
(`pnpm nx run-many -t build -p editor skills`).
51+
(`./node_modules/.bin/nx run-many -t build -p editor skills ui-kit`).
4452
- Writes the new version into `libs/editor/package.json` and
45-
`dist/libs/editor/package.json`, plus `libs/skills/package.json` and
46-
`dist/libs/skills/package.json`.
53+
`dist/libs/editor/package.json`, `libs/skills/package.json` and
54+
`dist/libs/skills/package.json`, plus `libs/ui-kit/package.json` and
55+
`dist/libs/ui-kit/package.json`.
4756
- Generates project changelogs from conventional commits.
4857
- Commits the manifest and changelog change as
4958
`chore(release): publish <version>`.
@@ -55,31 +64,32 @@ For the full architecture, history, and troubleshooting, read
5564
`docs(changelog): sync docs changelog from release` commit if the docs
5665
changelog changed. The release tag intentionally stays on the release commit.
5766

58-
4. `git push --follow-tags` to push the commit and the tag. Pushing the tag is
67+
5. `git push --follow-tags` to push the commit and the tag. Pushing the tag is
5968
the actual deploy trigger — `.github/workflows/release.yml` runs, publishes
60-
`@qalma/editor@<version>` and `@qalma/skills@<version>` under the `latest`
61-
dist-tag, then creates a GitHub release whose notes are this version's
62-
section of `libs/editor/CHANGELOG.md`.
63-
5. Watch the "Release" workflow run in GitHub Actions to confirm the publish
69+
`@qalma/editor@<version>`, `@qalma/skills@<version>`, and
70+
`@qalma/kit@<version>` under the `latest` dist-tag, then creates a GitHub
71+
release whose notes are this version's section of `libs/editor/CHANGELOG.md`.
72+
6. Watch the "Release" workflow run in GitHub Actions to confirm the publish
6473
and the GitHub release both succeeded.
6574

66-
Before the first coupled tag, ensure `@qalma/skills` exists on npm and has the
67-
same Trusted Publisher configuration as `@qalma/editor`. If npm package settings
68-
are not available yet, bootstrap `@qalma/skills` once manually, configure the
69-
Trusted Publisher, then let tags publish both packages going forward.
75+
Before the first coupled tag that includes all packages, ensure `@qalma/skills`
76+
and `@qalma/kit` both exist on npm and have the same Trusted Publisher
77+
configuration as `@qalma/editor`. If npm package settings are not available yet,
78+
bootstrap the missing package once manually, configure the Trusted Publisher,
79+
then let tags publish all packages going forward.
7080

7181
## Versioning Conventions
7282

73-
- Use beta prereleases for public early-adopter releases before `1.0.0`
74-
(`0.1.0-beta.N` unless an explicit version is intentionally chosen). `latest`
75-
tracks the newest beta until a stable release exists, keeping npmjs and plain
76-
installs current. At `1.0.0`, stable remains on `latest` and later
77-
prereleases should move to a separate `next`/`beta` dist-tag.
78-
- Keep the historical alpha line as history only. Do not cut new alpha releases
79-
unless the project intentionally reopens an alpha track and updates this skill
80-
plus the release scripts again.
83+
- Use normal semver releases before `1.0.0`; do not add a `-beta`, `-alpha`, or
84+
other prerelease suffix on the scripted release path.
85+
- The default release script always bumps to the next minor. From the historical
86+
beta line, use one explicit `0.2.0` release first; after that the normal
87+
script moves `0.2.0` to `0.3.0`, then `0.3.0` to `0.4.0`, and so on.
88+
- Keep the historical alpha and beta lines as history only. Do not cut new
89+
prereleases unless the project intentionally reopens a prerelease track and
90+
updates this skill plus the release scripts again.
8191
- Never push a `v*` tag for a version already published to npm — the workflow
82-
checks both package versions before publishing, and re-publishing an existing
92+
checks all package versions before publishing, and re-publishing an existing
8393
version fails before any package is published.
8494
- `BREAKING CHANGE:` commit footers still document API breaks for history, even
8595
though the package remains pre-1.0.
@@ -89,6 +99,6 @@ Trusted Publisher, then let tags publish both packages going forward.
8999
- Run plain `nx release` (without `--skip-publish`) locally — it will attempt
90100
`npm publish` from your machine and re-introduce the 2FA/token friction the
91101
Trusted Publisher setup removed.
92-
- Hand-edit package `version` fields — use the beta release scripts or
102+
- Hand-edit package `version` fields — use `pnpm release` or
93103
`pnpm nx release <version> --skip-publish` so the commit, tag, and `dist`
94104
manifests stay in sync.

0 commit comments

Comments
 (0)