Proposed
Adopt a release workflow that:
- generates a durable
CHANGELOG.md - produces GitHub Releases from structured change data
- creates richer release notes that can be reused for announcements, docs, and content
- improves merge quality by enforcing consistent commit and pull request titles
Today this repository has deploy workflows, but no first-class changelog or release-note system. That limits reuse of shipped work for:
- product updates
- customer-facing release notes
- internal sharing
- social and content distribution
The missing primitive is structured change metadata. Once commits and PR titles follow a shared convention, the repository can automate changelog generation and release publishing instead of relying on manual summarization.
- Deterministic release metadata comes first.
- AI-authored narrative comes second.
- Start with a repo-level changelog before splitting into package-level changelogs.
- Do not couple changelog rollout to a deploy-process rewrite in the first phase.
- Enforce the convention in CI, not only through local tooling.
Introduce Conventional Commits as the required format for mergeable work.
This phase includes:
commitlintfor commit message validation- PR title linting so squash merges remain compatible with release tooling
- a local Husky
commit-msghook for fast feedback
Allowed types:
feat: user-facing featurefix: bug fixperf: measurable performance improvementrefactor: structural change without behavior changedocs: documentation onlytest: test-only changesbuild: build tooling or dependenciesci: CI or workflow changesstyle: formatting-only changechore: maintenance work that does not fit the aboverevert: revert a previous change
Examples:
feat(api): add session replay export endpointfix(web): prevent duplicate release dialog submissionschore(ci): lint pull request titlesrefactor(managed-browser)!: remove legacy release handshake
Breaking changes should use ! in the header and include a body or footer that explains the impact.
Add release-please to steel-main and start with one root-level CHANGELOG.md.
Expected behavior:
- create release PRs from merged conventional commits
- update the root changelog automatically
- publish GitHub Releases
- keep deploy workflows unchanged during the pilot
This is the lowest-risk rollout because the repository already has a production deploy model driven by branch conventions. Release automation should be introduced without changing deploy triggers in the first pass.
Once release automation is stable, add a GitHub Action using Claude to enrich release notes.
Claude should:
- consume the structured output from
release-please - produce a more readable release summary
- call out operator impact, upgrade notes, and migrations
- generate content-ready summaries for changelog posts or social distribution
Claude should not:
- decide semantic versions
- decide release boundaries
- replace the deterministic release generator
After the steel-main pilot works, extract the pattern into a shared standard for other repositories:
- shared
commitlintconfig - shared
release-pleasetemplate - shared release-note prompt or reusable Claude workflow
Implement in this order:
- enforce conventional commits and PR titles
- pilot repo-level
release-please - observe one or two release cycles
- add Claude-generated narrative release notes
- consider deploy-trigger alignment later
- per-package changelogs
- semver policy for each workspace
- migration from branch-triggered deploys to tag-triggered deploys
- AI-owned versioning logic
- every release updates
CHANGELOG.mdautomatically - pull requests fail fast when titles or commits do not match the convention
- release notes are usable for external sharing with minimal manual editing
- the current deploy process continues to work during the pilot
This branch implements only Phase 1:
commitlintconfig- local
commit-msghook - GitHub Action for commit linting
- GitHub Action for semantic PR title linting