@@ -66,6 +66,26 @@ version using plain `major.minor.patch`, such as `yarn@4.18.1`.
6666CLI installation, retry instructions, and next-step commands follow
6767this choice. The starter uses Yarn with the ` node-modules ` linker, Vitest app
6868tests outside ` content/ ` , and a standalone ` biome.json ` .
69+
70+ Pin the starter's third-party development tools (` @biomejs/biome ` , ` @types/node ` ,
71+ ` vite ` , and ` vitest ` ) to exact versions validated by template verification.
72+ Template verification installs a fresh project without the repository lockfile,
73+ so ranges can silently select newer tools. The repository root can keep its
74+ dependency ranges: its committed lockfile and CI checks control upgrades there.
75+ Upgrade template tools deliberately when needed, rather than for every release:
76+ update the template manifest, review the resulting changes, and run
77+ ` yarn verify-templates ` against freshly bundled packages before merging. These
78+ direct pins do not freeze transitive dependencies; preserve the generated
79+ project's lockfile for repeatable installs. PureStack dependencies continue to
80+ use ` latest ` as described above.
81+
82+ For Biome, keep the template's ` biome.json ` schema URL aligned with its pinned CLI
83+ version and migrate that configuration with the selected CLI
84+ (` biome migrate --write ` ) during upgrades. Manage the root configuration against
85+ the repository's locked CLI version. Even patch releases can change formatting
86+ or lint results;
87+ [ Biome recommends exact version pins] ( https://biomejs.dev/internals/versioning/ ) .
88+
6989For Yarn projects without a template-supplied lockfile, the CLI creates an empty
7090` yarn.lock ` before installation to establish a separate project inside parent
7191workspaces. Existing template lockfiles are preserved.
0 commit comments