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 isolatednpxinstall. 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.