Skip to content

Deployment Checklist — HELIX Plugin and Website Release

Deployment Checklist — HELIX Plugin and Website Release

Release Scope

  • Service or component: HELIX plugin (.claude-plugin/, skills/, workflows/, bin/helix, scripts/helix) and the public website (website/, deployed to GitHub Pages).
  • Version or commit: vX.Y.Z tag at the release commit SHA.
  • Deployment window: Operator-driven; HELIX releases ship when the release bead reaches Go on this checklist. There is no fixed schedule.
  • Release owner: HELIX maintainer cutting the tag.
  • Rollback owner: Same operator (single-operator release flow).

Pre-Deploy Checks

AreaCheckEvidence or CommandStatus
BuildWrapper-CLI test suite is greenbash tests/helix-cli.sh[ ]
BuildPlugin layout validation passesbash tests/validate-skills.sh[ ]
BuildWebsite builds clean (no Hugo errors, no broken shortcodes)cd website && hugo --gc --minify[ ]
BuildReference generator runs without stale-mapping errorsuv run scripts/generate-reference.py[ ]
BuildWorkflow-paths pre-commit check passeslefthook run pre-commit --all-files (or git diff --check)[ ]
ConfigNo tracked secrets in repo`git grep -nE ‘OPENROUTER_API_KEYANTHROPIC_API_KEY
ConfigPlugin manifest version matches the taggrep '"version"' .claude-plugin/plugin.json[ ]
DataNo tracker drift between live .ddx/beads.jsonl and any docs being shipped as examplesuv run scripts/generate-reference.py (validates HELIX_REAL_EXAMPLES paths)[ ]
Opshelix run --dry-run produces a coherent next-action summary against the release taghelix run --dry-run[ ]
OpsRelease notes draft exists and references the tagdocs/helix/05-deploy/release-notes.md[ ]
OpsDemos still record cleanlycd website && bash record-demos.sh (when demos changed in the release)[ ]

Rollout Plan

StageActionExit Condition
Local proofRun all pre-deploy checks against the release commitAll checks above are checked
Tag and pushgit tag -a vX.Y.Z -m "..." then git push origin main vX.Y.ZTag visible on origin; CI starts
Plugin publicationPlugin is consumed by users via repo URL — no separate registry pushTag exists; git fetch --tags from a fresh clone resolves the manifest
Website rolloutGitHub Actions builds the site from the tagged commit and publishes to GitHub PagesPages workflow run succeeds; public URL serves the new content
Full rolloutSmoke-test the public site for the released artifact pagesCritical pages (/, /why/, /use/, /artifacts/<each>/) return 200

Verification Checks

Signal or CheckExpected ResultEvidence or CommandStatus
Public site root reachableHTTP 200curl -fsS -o /dev/null -w '%{http_code}' https://documentdrivendx.github.io/helix/[ ]
Released artifact pages renderHTTP 200 with expected H1curl -fsS https://documentdrivendx.github.io/helix/artifacts/contract/ | grep -q "DDx"[ ]
Plugin install from tag worksA fresh clone of the tag installs and helix run --dry-run runsManual: clone tag, run bash scripts/install-local-skills.sh, then helix run --dry-run[ ]
helix run against a sample bead succeedsNEXT_ACTION is one of the documented valueshelix run --dry-run in a sample repo[ ]
No regressions in deterministic testsAll passbash tests/helix-cli.sh && bash tests/validate-skills.sh against the tag[ ]

Rollback Triggers

TriggerThreshold or ConditionImmediate ActionOwner
Public site fails to build under the new tagPages workflow run failsRe-run the workflow once; if still failing, revert the tag commit and re-tagOperator
Plugin install breaks for a fresh consumerbash scripts/install-local-skills.sh exits non-zero on a clean checkoutMove the vX.Y.Z tag back one commit (git tag -d + force-push) only if no downstream consumers have pulled; otherwise issue a vX.Y.Z+1 patchOperator
Wrapper-CLI test suite regressed in CI on the tagtests/helix-cli.sh fails on the tag in CIRevert the offending change in a follow-up tag; do not silently amend the released tagOperator
Critical artifact-reference page renders emptyA HELIX_REAL_EXAMPLES_PUBLISHABLE slug ships with a missing examplePatch release that flips the slug back off in scripts/generate-reference.pyOperator

Go or No-Go Decision

  • Decision: [Go / Hold / Roll Back]
  • Decision time: [ISO-8601 timestamp]
  • Notes: Capture any deferred checks, exceptions, or known follow-up beads here. Reference the release-notes commit and the tag SHA so the decision is reconstructable from the tracker.