Commit and PR Workflow
Generate commit messages, squash-merge messages, or PR text following this repo's conventions.
Conventional Commits
Format: <type>(<scope>): <description>
Types: feat, fix, docs, style, refactor, test, chore
Examples:
- •
feat(serve): add LLM feedback to serve analysis - •
fix(api): resolve ball tracking in low-light - •
docs: update API docs for new endpoints
Scope is optional; use when it clarifies the change (e.g. module or area).
Squash Merge Message
When generating a squash merge message (e.g. for GitHub "Squash and merge"):
- •Review all commits on the branch.
- •One line:
type(scope): short summary— match conventional format. - •Blank line, then 1–3 bullet points summarizing the change set.
- •If there is a linked issue:
Closes #Nat the end.
Example:
code
feat(serve): add LLM coaching feedback (#123) - Integrate LLM feedback service with serve attempts API - Add feedback schema and evaluation tests - Update docs for new feedback fields Closes #100
Prefer shorter; use medium length only if 3+ distinct changes warrant it. Output plain text ready to paste into the squash-merge commit message field.
PR Title and Description
When generating a PR title and description:
- •Review commits on the branch.
- •Title: One line, descriptive (can match intended squash message summary).
- •Body: Follow
.github/pull_request_template.md:- •Description + why + key design decisions
- •Type of change (bug fix / new feature / docs / refactor)
- •How it was tested
- •Checklist (contributing, ruff/eslint, docs, no secrets)
- •Related issues:
Closes #N
Output complete markdown ready to paste into GitHub's PR description. Do not create a file; output in chat.
Branch and Commit Policy
- •Never commit automatically without explicit user approval.
- •After suggesting a message, ask: "Should I commit these changes?" or equivalent.
- •If the user says "don't commit yet" or similar, do not run git commit.