From 8a89b8a6b2f09af76ec2925da2179d65d049521d Mon Sep 17 00:00:00 2001 From: Tom Boucher Date: Sun, 21 Jun 2026 16:26:18 -0400 Subject: [PATCH] docs(#1553): document issue-number scope convention for commit titles (#1554) --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6f4d0cdd7..1a5735eb4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -834,7 +834,7 @@ Defensive normalization at trust boundaries must validate both the value's type - **CommonJS** (`.cjs`) — the project uses `require()`, not ESM `import` - **No external dependencies in core** — `gsd-tools.cjs` and all lib files use only Node.js built-ins -- **Conventional commits** — `feat:`, `fix:`, `docs:`, `refactor:`, `test:`, `ci:` +- **Conventional commits** — `feat:`, `fix:`, `docs:`, `refactor:`, `test:`, `ci:`. The full grammar is `(): ` (enforced by `hooks/gsd-validate-commit.sh`; subject ≤72 chars, lowercase, imperative mood, no trailing period). When the work resolves a tracked issue, put the issue number in the scope: `fix(#1520): randomize mktemp temp paths on BSD/macOS`. The same convention applies to PR titles — release notes are grouped by the title's type prefix (`feat` → Feature, `fix` → Fix, everything else → Enhancement). ## File Structure