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