GitHub Conventions
Branches
Pattern: <ticket-id>-<short-description> or no-ticket-<short-description>
FLX-123-add-storage-driver
no-ticket-add-agentic-instruction-files
Branch from origin/main. Kebab-case. No slashes. No uppercase.
Commits
Conventional Commits. Ticket number goes after the type.
feat: FLX-1234 add presigned URL download for storage files
- Introduce GetPresignedURL method on StorageService
- Add download endpoint under /storage/:id/download
- Map driver-specific errors to typed pkg/errors responses
| Type | When |
|---|---|
feat |
New feature or endpoint |
fix |
Bug fix |
refactor |
Code change, no behaviour change |
test |
Adding or fixing tests |
chore |
Tooling, deps, config |
docs |
Documentation only |
Bullet points. No blank lines between them. One commit per logical change. Never --no-verify. Never force-push main.
For any change spanning multiple concerns (new module + config + routing + CI, a multi-file refactor, a ticket touching several layers), split into a sequence of small commits — one per chunkable piece (e.g. skeleton, then config, then handler, then wiring, then infra/CI) — instead of one large commit. Each commit should build/typecheck on its own where practical. Default to splitting; only use a single commit when the change is genuinely one atomic unit (a single small fix, a one-file tweak).
Pull Requests
Title mirrors the commit subject: type: FLX-1234 short description. Under 70 characters.
## What
What does this PR do and why?
## Changes
- Logical changes. Not a file list.
No "this PR" in the title. No trailing period. One PR, one concern. Add Closes #<issue> when fixing a GitHub issue. No Test plan section unless explicitly asked. Never add Claude as a co-author — no Co-Authored-By lines in commits or PR descriptions.