Release routine
- Validate structure and run the trigger evals. Run
node scripts/validate-agent-os.mjsandnode scripts/test-validate-agent-os.mjs, then collect the live trigger and forward-test evidence described in Evals. - Bump the version everywhere it lives. The release version appears in five validated places:
.claude-plugin/plugin.json,.codex-plugin/plugin.json,package.json, the navigation version indocs-site/.vitepress/config.mjs, and the manifest examples on the plugin manifests page.validate-agent-os.mjsfails the release until all five agree, so bump them in the same commit. Add the release to the changelog while you are there. - Commit, review, and merge. Commit with the configured Git identity and no AI attribution, push an
agent/<description>branch, require the repository checks on its exact head, and merge the pull request tomain. Never release from a dirty worktree or an unmerged branch. - Prepare the package. Inspect
npm pack --dry-run --json, then runnode scripts/smoke-packed-install.mjs. The smoke test installs and updates the packed artifact in isolated Claude and Codex homes while proving that unrelated skills remain untouched. - Publish through GitHub Actions. Create the version tag on the merged release commit, then create a non-draft, non-prerelease GitHub Release and mark the newest stable version
Latest. That explicit release action triggers.github/workflows/publish.yml. Its protectednpmenvironment publishes@sockulags/agent-osthrough npm Trusted Publishing with short-lived OIDC credentials; do not store a long-lived npm publish token in GitHub. - Close every public release surface. The publish workflow reruns the repository and docs checks, publishes npm, and retries
node scripts/verify-release.mjs <version>while the registry propagates. The verifier compares the tagged package with npm, checks GitHub and Pages, and performs a public install into an isolated npm prefix before invoking the installed CLI directly through Node with isolated home and cwd. The release is not complete until the workflow and the Validate and Docs/Pages runs on currentmainall pass. Smoke-test--method pluginseparately when marketplace behavior changed.
The npm package settings must trust GitHub repository sockulags/agent-os, workflow publish.yml, environment npm, and the npm publish action. The matching GitHub environment is the deployment approval surface for npm publication.
Documentation
This site lives in docs-site/ and is built with VitePress. Work on it locally with:
bash
npm --prefix docs-site installbash
npm --prefix docs-site run devA push to main that touches docs-site/** triggers the Docs workflow, which builds the site and deploys it to GitHub Pages at https://sockulags.github.io/agent-os/. The base path in .vitepress/config.mjs is /agent-os/ and must match the repository name.
When the skills change, the pages under /skills/ and /reference/ are the mirror that goes stale first. Treat a skill edit and its documentation page as one change.