Skip to main content

Branching

Naming

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