From the July 2026 direction review (§9, incl. the sampo deep-dive). Strategic: changesets migrators are the largest pool of monorepo-release users in motion; without change-file support releasekit isn't in their consideration set and sampo wins them by default. Conventional commits stay the default — change files are an option. Design settled in ROADMAP.md; likely splits into sub-issues (parser/stream, standing-PR integration, migrate command, check gate).
Design (settled)
- Format: changesets
.changeset/*.md grammar verbatim, parsed as a superset — quoted "@scope/pkg" keys, plus ecosystem/name canonical-ID prefixes (covers sampo migrators too; sampo uses knope's changesets crate so the grammar is already shared). Support changesets' none bump (notes-only entry). Default dir .changeset/ (configurable) so pending changesets are consumed in place, zero file moves. Skip non-parseable files and README.md with a warning (sampo hard-errors on .changeset/README.md; every changesets repo has one).
- Aggregation: unified Change stream —
Change { source: commit|file, packages, bump, prose, ref }; per-package bump = max over all Changes (same rule as commits today). Two modes: additive (default) and only (pure changesets emulation). Groups/prerequisites/strategies compose after aggregation, unchanged.
- Pipeline: optional
changeFiles field on VersionOutput (new fields optional — old manifests in open PRs must tolerate absence); file prose enters notes verbatim by default (LLM rewrite opt-in only); manifest comment records consumed paths+shas; consumed files deleted in the same release-prep commit as the version bumps (atomic via squash; no [skip ci] interaction). Prerelease consumption tracked in the manifest — files stay on disk until a graduating release (no sampo-style file moves). Deselected packages' files carry to the next cycle.
releasekit migrate --from-changesets: map .changeset/config.json (fixed→fixed groups, linked→linked, ignore, baseBranch, access); emit config with changeFiles: { dir: ".changeset", mode: "only" } (day-one workflow preservation — additive is the later upsell); leave pending changesets untouched; refuse when pre.json exists with guidance (graduate first, or map channels manually); suggest (don't auto-apply) removing @changesets/cli + replacing changesets/action workflows; verify by printing the releasekit dry-run plan alongside changeset status.
- Action-side change check (subsumes the earlier "release-hygiene gate" idea): marker comment + commit status (or dismissable bot review, which works with plain branch protection) for PRs touching packages with neither a change file nor a qualifying conventional commit. Matches sampo's hosted-bot value with zero hosted infra.
From the July 2026 direction review (§9, incl. the sampo deep-dive). Strategic: changesets migrators are the largest pool of monorepo-release users in motion; without change-file support releasekit isn't in their consideration set and sampo wins them by default. Conventional commits stay the default — change files are an option. Design settled in ROADMAP.md; likely splits into sub-issues (parser/stream, standing-PR integration, migrate command, check gate).
Design (settled)
.changeset/*.mdgrammar verbatim, parsed as a superset — quoted"@scope/pkg"keys, plusecosystem/namecanonical-ID prefixes (covers sampo migrators too; sampo uses knope'schangesetscrate so the grammar is already shared). Support changesets'nonebump (notes-only entry). Default dir.changeset/(configurable) so pending changesets are consumed in place, zero file moves. Skip non-parseable files andREADME.mdwith a warning (sampo hard-errors on.changeset/README.md; every changesets repo has one).Change { source: commit|file, packages, bump, prose, ref }; per-package bump = max over all Changes (same rule as commits today). Two modes:additive(default) andonly(pure changesets emulation). Groups/prerequisites/strategies compose after aggregation, unchanged.changeFilesfield onVersionOutput(new fields optional — old manifests in open PRs must tolerate absence); file prose enters notes verbatim by default (LLM rewrite opt-in only); manifest comment records consumed paths+shas; consumed files deleted in the same release-prep commit as the version bumps (atomic via squash; no[skip ci]interaction). Prerelease consumption tracked in the manifest — files stay on disk until a graduating release (no sampo-style file moves). Deselected packages' files carry to the next cycle.releasekit migrate --from-changesets: map.changeset/config.json(fixed→fixed groups,linked→linked,ignore,baseBranch,access); emit config withchangeFiles: { dir: ".changeset", mode: "only" }(day-one workflow preservation —additiveis the later upsell); leave pending changesets untouched; refuse whenpre.jsonexists with guidance (graduate first, or map channels manually); suggest (don't auto-apply) removing@changesets/cli+ replacingchangesets/actionworkflows; verify by printing the releasekit dry-run plan alongsidechangeset status.