Skip to content

Commit 784bc89

Browse files
justguyclaude
andauthored
docs: document the issue to PR to release workflow in README (#9)
## Summary Adds a **Contributing & releases** section to the README explaining the flow introduced in #4: - Issue → feature branch → PR → squash-merge to `main`. - Branch-name prefixes and branch-protection rules. - Conventional Commits enforced on PR titles (via `pr-title` workflow). - Release-please behavior: rolling release PR, how commit types map to version bumps, and that merging the release PR triggers `publish.yml` → npm. - Links to the workflow files for reference. No code changes. Docs-only — `docs:` prefix means release-please won't bump the version or surface this in changelog (intentional: internal/contributor-facing). ## Test plan - [ ] Render the README on GitHub and skim for formatting issues - [ ] Confirm the version-bump table is accurate against `release-please-config.json` Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 1937e0e commit 784bc89

1 file changed

Lines changed: 27 additions & 0 deletions

File tree

README.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,33 @@ Module map, internals, and schema deep-dive → **[ARCHITECTURE.md](./ARCHITECTU
154154

155155
---
156156

157+
## Contributing & releases
158+
159+
The repo ships every change through **issues → feature branch → PR → automated release**.
160+
161+
**1. Propose a change** — open a GitHub issue (`bug`, `enhancement`, etc.). Attach it to a milestone if you want it scoped to a specific release.
162+
163+
**2. Branch + PR** — branch off `main` using a prefix that matches the work (`fix/…`, `feat/…`, `docs/…`, `chore/…`). `main` is protected: no direct pushes, PR-only, linear history, squash-merge.
164+
165+
**3. PR title = Conventional Commits** — squash-merge uses the PR title as the commit subject on `main`. A CI check rejects titles that don't match `feat:` / `fix:` / `docs:` / `refactor:` / `perf:` / `chore:` / etc. Close the relevant issue with `Closes #N` in the body.
166+
167+
**4. Merge lands on `main` immediately** — no need to hold PRs for a release. Feature work and releases are decoupled.
168+
169+
**5. Release-please accumulates** — every commit on `main` updates a rolling "release PR" (auto-opened by [release-please](https://github.com/googleapis/release-please)) that bumps `package.json` and appends to `CHANGELOG.md` based on the commit types:
170+
171+
| Commit type(s) since last tag | Version bump |
172+
| ----------------------------- | ------------------- |
173+
| any `feat!:` / `BREAKING CHANGE:` footer | major (x.0.0) |
174+
| any `feat:` | minor (0.x.0) |
175+
| only `fix:` / `perf:` | patch (0.0.x) |
176+
| only `chore:` / `ci:` / `test:` / `docs:` / `refactor:` | no bump (hidden from notes) |
177+
178+
**6. Cut a release** — merge the release PR when you want to ship. That tags `v*.*.*`, which triggers `publish.yml``npm publish`. You decide the cadence: after every feature, weekly, or whenever a milestone closes.
179+
180+
Workflow files: [`.github/workflows/release-please.yml`](./.github/workflows/release-please.yml), [`.github/workflows/pr-title.yml`](./.github/workflows/pr-title.yml), [`release-please-config.json`](./release-please-config.json).
181+
182+
---
183+
157184
## License
158185

159186
MIT — see [LICENSE](LICENSE).

0 commit comments

Comments
 (0)