Branching
Naming
| Prefix | When |
|---|---|
feat/<short-description> | New features |
fix/<short-description> | Bug fixes |
chore/<short-description> | Maintenance, config, deps |
refactor/<short-description> | Refactors |
docs/<short-description> | This site or repo docs |
Examples: feat/response-envelope, fix/auth-middleware, chore/update-deps, docs/oauth-flow.
Scope
Keep branches single-purpose. A branch named feat/add-agent should not also include a refactor of an unrelated module. Reviewers can't tell what's load-bearing and what's incidental.
Worktrees
For working on multiple things in parallel without stashing:
git worktree add ../mp-feat-X -b feat/X
cd ../mp-feat-X
# do work
Clean up:
git worktree remove ../mp-feat-X
Commits
Conventional Commits format encouraged but not enforced:
feat(agents): add featured flag to AgentDto
fix(auth): include all admin plugin actions in permissions statement
chore(deps): bump nestjs to 10.4
Squash on merge — keep main clean.
PR description template
## What
- Bullet what changed at a high level.
## Why
- Link to the motivation: issue, RFC, customer ticket, or "noticed while doing X".
## Test plan
- [ ] Manual: signed in as platform_admin, created agent, verified detail page
- [ ] Tests added / updated
- [ ] Migrations apply cleanly on a fresh DB
When NOT to commit
Avoid committing:
.env*files.node_modules/.dist/(built output).- Large binaries unless absolutely needed.
- Personal IDE settings (
.idea/,.vscode/settings.json).
The .gitignore should already cover all of this.
Co-authors
If you paired or used Claude for substantial scaffolding, credit it:
Co-Authored-By: Claude <noreply@anthropic.com>