eleven / ocho Public

docs: adopt feature-branch + squash-merge PR workflow (#5)

Direct pushes to main kept racing concurrent PRs. Document branching per feature, opening a PR, squash-merging into main, and deploying from main afterward.
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Paul Campbell 4ab086b2b059283a52bdb8dc33d62f29b97a15f6 parent c44bd06
1 file changed, +15 −8
  • CLAUDE.md +15 −8
diff --git a/CLAUDE.md b/CLAUDE.md
index abe4f94..4148ec0 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -117,11 +117,18 @@ Principles that hold regardless of environment:
overridden by the platform).
- Keep a **throwaway instance** for verifying on real devices.
-## Commits
-
-- Group into **logical commits**; prefix by area: `web:`, `server:`, `admin:`,
- `sw:`, `crypto:`, `docs:`. Frontend files (`chat.js`/`style.css`) are often
- touched by several features at once — commit by layer when they can't be split.
-- End commit messages with the `Co-Authored-By:` trailer for the assisting model.
-- Commit/push/deploy only when asked. (Author is set in the repo's local git
- config — see `CLAUDE.local.md`.)
+## Branches, commits & PRs
+
+- **Work on a feature branch — don't commit straight to `main`.** Several PRs
+ land in parallel, so pushing directly to `main` causes push races and forced
+ rebases. Branch per feature (e.g. `reply-to-messages`), open a PR, and
+ **squash-merge** into `main` (`gh pr merge --squash --delete-branch`).
+- **Multiple commits per branch are fine** — they squash into one clean commit on
+ `main`, so iterate freely. Within a branch, prefix commits by area: `web:`,
+ `server:`, `admin:`, `sw:`, `crypto:`, `docs:`.
+- End commit and PR-body messages with the `Co-Authored-By:` trailer for the
+ assisting model. (Commit author is the repo's local git config — see
+ `CLAUDE.local.md`.)
+- **Deploy from `main` after the squash-merge** (pull `main`, then redeploy — see
+ Deploy), never from a feature branch. Branch / commit / PR / merge / deploy
+ only when asked.