l-bump-deps
Bump zudo-doc's first-party @takazudo/* build toolchain — the zfb family (@takazudo/zfb, -runtime, -adapter-cloudflare) and @takazudo/zdtp — to the latest published versions across every pin location,...
l-bump-deps — Bump the @takazudo/* toolchain to latest
Bump this repo's upstream build toolchain to the newest published versions, keep every pin location in lockstep, prove the bump builds, and hand off cleanly to commit + release.
Producer vs consumer:
/changes zfb's own code (worktree → upstream PR → publish a prerelease). This skill only consumes already-published versions. A zfb-upstream-dev session ends where this one begins ("bump the npm pins").l- zfb- upstream- dev
What to bump (the package families)
zfb prerelease pins are exact (0.1.0-next.N, no caret) and the zfb family must move
together. zdtp moves on its own cadence (stable 0.2.x).
| Family | Packages (npm) | Move together? |
|---|---|---|
| zfb | @takazudo/zfb, @takazudo/zfb-runtime, @takazudo/zfb-adapter-cloudflare | Yes — same next.N |
| zdtp | @takazudo/zdtp | Independent |
What NOT to bump (we PRODUCE these)
@takazudo/zudo-doc and @takazudo/zudo-doc-history-server are published from this
monorepo — they are not upstream deps. Their version is this repo's own package.json
version, advanced by the release flow (/ / zudo-doc-version-bump), and
check:pin-parity ties the scaffold's internal pins to that version. Never touch them
here; doing so will fail the internal-pin parity check.
The pin map — every place a version lives (keep in lockstep)
pnpm up @takazudo/zfb@latest only edits the root pin and silently leaves the rest stale.
scripts/ (run by pnpm check:pin-parity, wired into b4push + CI) makes
that drift a hard error. The pins live in:
zfb family — @takazudo/zfb, @takazudo/zfb-runtime, @takazudo/zfb-adapter-cloudflare:
Root
package.json→dependencies— exact (all three)packages/— literal pin strings emitted into the generated downstreamcreate- zudo- doc/ src/ scaffold. ts package.json(all three; adapter is in a separate object)packages/— exactcreate- zudo- doc/ src/ _ _ tests_ _ / scaffold. test. ts .toBe("...")assertions for@takazudo/zfband@takazudo/zfb-runtimepackages/→zudo- doc/ package. json devDependencies— exact-equal to root (@takazudo/zfb,@takazudo/zfb-runtimeonly; adapter is NOT here)packages/→zudo- doc/ package. json peerDependencies—^<root pin>(@takazudo/zfb,@takazudo/zfb-runtimeonly)
zdtp — @takazudo/zdtp (NOT covered by pin-parity, but keep it consistent):
Root
package.json→dependencies— exact (e.g."0.2.3")packages/—create- zudo- doc/ src/ scaffold. ts deps["@takazudo/zdtp"] = "..."packages/—create- zudo- doc/ src/ _ _ tests_ _ / scaffold. test. ts .toBe("...")assertionpackages/→zudo- doc/ package. json peerDependencies—^<version>
Gotchas (read before bumping)
The
nextdist-tag can be STALE — resolve withlatest, notnext. A package's npmnexttag has historically pointed at an older prerelease thanlatest. "@next" in a request means "the newest", not the literal tag. Alwaysnpm dist-tag lsand takelatest. (zfb currently keepsnext == latest, but verify.)Exact-pin prerelease semver + peer coupling.
^0.1.0-next.54does NOT matchnext.55under pnpm — bump the whole zfb family to the samenext.N. Then check that the new zfb satisfies what zdtp (and the host) still expects, and vice-versa (npm view @takazudo/zdtp@<v> peerDependencies). Keep zdtp where the peers accept it unless a zdtp bump is explicitly requested.Single pnpm workspace, single lockfile. Root
pnpm installcovers.andpackages/*. There is no second lockfile to install separately. Commitpnpm-lock.yaml.A zfb/zdtp bump can carry more than pins. A new version may add/rename config fields, change an admonitions preset, drop an export, etc. If
pnpm check/pnpm buildfails after the pin change, the fix belongs inzfb.config.ts, the scaffold templates, orglobal.css— not in reverting the pin. See the Feature Change Checklist in the rootCLAUDE.mdwhen a bump forces a host or scaffold change.
Workflow
Step 1 — Resolve target versions
for p in @takazudo/zfb @takazudo/zfb-runtime @takazudo/zfb-adapter-cloudflare @takazudo/zdtp; do
echo "== $p ==" && npm dist-tag ls "$p" 2>&1 | grep -E 'latest|next'
done
# current pins:
grep -rn '@takazudo/z' package.json packages/zudo-doc/package.json \
packages/create-zudo-doc/src/scaffold.ts \
packages/create-zudo-doc/src/__tests__/scaffold.test.ts | grep -E '0\.1\.0-next|0\.2\.'Take latest for each (gotcha 1). Confirm the zfb sibling binary for the build platform
exists at the target (it ships as a platform optionalDependency, e.g.
@takazudo/zfb-linux-x64-gnu), and verify peer coupling (gotcha 2). If nothing is newer
than the current pins, report "already on latest" and stop — the commit/release chain is
moot.
Step 2 — Edit the pins in every location
Update all locations from the pin map above. The zfb family goes to the same next.N
everywhere; zdtp to its target. Remember:
Root
dependencies: exact for all.scaffold.ts: all three zfb pins + the zdtp pin.scaffold.test.ts: the.toBe(...)assertions for zfb, zfb-runtime, zdtp.packages/:zudo- doc/ package. json devDependenciesexact (zfb, zfb-runtime);peerDependencies^(zfb, zfb-runtime, zdtp).
Step 3 — Install and verify
pnpm install # updates pnpm-lock.yaml
pnpm check:pin-parity # cheap, authoritative — fails loudly on any stale pin
pnpm b4push # full suite: pin-parity, typecheck, unit + package tests
# (scaffold tests), build, link check, html, preview smokeb4push runs the create-zudo-doc package tests, so a missed scaffold.test.ts assertion
fails there. If a build/typecheck failure is a real upstream change (not a stale pin), fix it
at the proper layer (gotcha 4) — do not revert the bump.
Step 4 — Hand off
This skill stops with a verified, uncommitted working tree. The standard chain is:
/— commit the bump (e.g.commits push chore(deps):) and push.bump @takazudo/ zfb stack to 0. 1. 0- next. <N> /— because the bump changed the scaffold pins, cut a create-zudo-doc release so downstreaml- make- release create-zudo-docusers get the new pins. Skip when--no-releasewas passed or the bump did not touchscaffold.ts.
If the bump surfaced an upstream bug, stale dist-tag, missing export, or regression, file it
with / so it gets fixed at the source instead of worked around.