Releasing the wizard
Contents
The wizard and the context mill release on their own cycles. A release reaches every user on their next run, so test the release candidate before you press the release button.
How a release ships
Both repos use release-please. Every PR title needs a conventional commit prefix like feat: or fix:, because release-please builds the changelog and version from them.
| Wizard | Context mill | |
|---|---|---|
| What ships | The @posthog/wizard npm package | Skills, agent prompts, and menus |
| The release candidate | The open release PR, release-please--branches--main--components--wizard | The open release PR in the context mill repo |
| What merging does | The publish workflow pushes the new version to npm | The build scans every skill with Warlock, publishes a GitHub release, marks it latest, and mirrors it to S3 |
| When users get it | The next time they run npx @posthog/wizard@latest | On their next wizard run, with no wizard release |
Release the context mill first when both repos change. The wizard can then find the new skills as soon as it ships.
Prepare a monitoring plan
Before you test the release candidate, decide how you'll know the release is healthy. Watch usage, run duration, cost, and completion rate, and compare the new version against the last one.
The monitoring-a-wizard-release skill in the wizard repo lists the key events and funnels. Start from the two wizard dashboards, one and two. Some of their tiles are broken, and the skill says which.
Test the release candidate
Release-please keeps each release PR up to date with everything merged since the last release. That PR is the release candidate. Run every check below on it before you merge it. The release checklist in the wizard repo has every command and option.
- 1
Run the basic integration program by hand
RequiredCheck out the release PR and run the default program against a workbench app. This is the one check you never skip.
TerminalCopy
wizard-workbench/apps/basic-integration/javascript-node/express-todointo/tmp/express-todoand rungit initin it first.pnpm tryruns from source, so it skips the build, but it needs the generated version file. - 2
Run wizard CI on the release PR
RequiredComment on the release PR:
sampleruns the first app for each framework, about 45 apps. To pair the wizard with an unreleased context mill branch, addcontext-mill:<branch>. On a context mill release PR, the same comment takeswizard:<branch>instead.The bot posts a results table and updates it as each app finishes. Apps that change code score out of 5, and warehouse and feature flag apps show pass or fail. Look for 4 or 5, or a pass, on everything outside the known broken evals.
- 3
Test what you added
RequiredRun every program or skill your release changes by hand, in the real TUI. Attach the evidence to your PR: the outro, the report, and the diff the wizard made.
- 4
Attach snapshots
RecommendedAfter you've run a program by hand at least once, snapshot CI can capture the rest. Comment on a wizard PR:
It drives the real TUI, captures every screen, and opens a workbench PR with the frames. For a big release, run the full sweep on every program locally with the prompt below.
Merge and confirm
RequiredMerge the release PR. When the publish workflow finishes, run
npx -y @posthog/wizard@latest --versionand confirm the new version.
Known broken evals
Some wizard CI apps fail today for reasons unrelated to most releases, like warehouse sources that never get created and programs that can't run in CI mode. The current list lives in the wizard repo. Update it in the same PR that fixes or breaks an eval.
Sample prompt for a snapshot sweep
Paste this into Claude Code or Codex from the wizard workbench. Fill in the release PR first.
Go deeper
- Release checklist, with every command and the known broken evals
- Handling wizard incidents, to undo a release











