Following Git Workflow
Core Rule
production is the only long-lived branch. Never work directly on it.
Before any Git write action:
- Run
git status --short --branch. - Confirm no unexpected files or changes exist.
- Fetch the remote.
- Create or switch to a short-lived task branch.
- Keep the branch limited to one objective.
Branch Names
Use:
feat/<scope>fix/<scope>hotfix/<scope>test/<scope>docs/<scope>refactor/<scope>chore/<scope>
Use lowercase kebab-case. Never use main, dev-production, changes,
update, or similarly vague names.
Before Commit
- Review
git diffandgit diff --staged. - Remove unrelated files.
- Stop if secrets, private evidence, internal URLs, raw AI sessions, customer data, or student data appear.
- Run the checks relevant to the changed scope.
- Use a Conventional Commit message.
- Never add an AI co-author trailer unless explicitly requested.
Push and Pull Request
- Never push directly to
production. - Never force-push
production. - Never bypass hooks or required checks.
- Never use plain
--force. - Use
--force-with-leaseon a task branch only after explicit approval. - Every production change goes through a pull request.
- Follow
.github/pull_request_template.md.
Merge Boundary
Claude must stop before merge unless Randi explicitly approves merging the specific pull request in the current conversation.
Use squash merge only. Delete the task branch after merge.
Completion Report
Report:
- Branch
- Commits
- Checks run and results
- Pull-request state
- Confidentiality review
- Remaining risks
- Whether merge approval is still required
Full Policy
Read and follow:
docs/governance/git-workflow.mddocs/governance/github-configuration.md